Pairing·SDK · 호출자에서 연결 계약까지 — 상세 구조도
기준 커밋:
1398d109c391c4044cae26d0e9aea4d3f08d9670. 도식은 기존 구현을 설명한다. 제품 이미지 설치·실기기 성공을 증명하지 않는다.
네트워크 등록과 legacy DeviceControl / WSS·Streaming client API 구분
SVG 원본 크게 열기 · Mermaid 원본 · 모듈 분석 본문
읽는 순서와 연결 의미
행은 책임·실행 경로별 묶음이며 별도 프로세스라는 뜻은 아니다. 같은 행의 인접 연결은 화살표로, 행을 넘거나 떨어진 상자 사이 연결은 동일한 E 번호의 출력·입력 포트로 표시한다. 아래 표는 방향과 의미를 모두 풀어 쓴 것이다. 그림의 코드 파일명을 눌러 저장소로 이동하는 기능은 없으며, 아래 경로로 지정 커밋을 조회할 수 있다.
| 연결 | 출발 → 도착 | 동작 | 종류 |
|---|---|---|---|
| E01 | PairingAgentService → BLECentral | BLE 제어 | 호출·명령 |
| E02 | BLECentral → WifiConnectionManager | 설정 적용 | 호출·명령 |
| E03 | BLECentral → 외부 EncryptionService | 복호화 의존 | 호출·명령 |
| E04 | devicecontrolapi_test → DeviceControlAPI | SDK 사용 | 호출·명령 |
| E05 | DeviceControlAPI → DeviceAgent Stub | Binder | 호출·명령 |
| E06 | AirbotSdkProject → WssManagerProxy | API 포함 | 데이터·구성 의존 |
| E07 | AirbotSdkProject → StreamingManagerProxy | API 포함 | 데이터·구성 의존 |
| E08 | WssManagerProxy → WSS·Streaming 서버 | IWssControl | 호출·명령 |
| E09 | StreamingManagerProxy → WSS·Streaming 서버 | IStreamingControl | 호출·명령 |
구성요소별 책임과 코드 근거
| 상자 | 구성요소 | 책임·상태 | 지정 커밋의 소스 경로 |
|---|---|---|---|
| N01 | PairingAgentService | IPairingControl / onCreate / foreground·BLE·Wi-Fi 준비 | apps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/PairingAgentService.java |
| N02 | BLECentral | GattServerCallback / read / write / fragmented payload | apps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/ble/BLECentral.java |
| N03 | WifiConnectionManager | WifiConfiguration / addNetwork / enable / reconnect | apps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/wifi/WifiConnectionManager.java |
| N04 | 외부 EncryptionService | 네트워크 자료 복호화 의존 / 구현은 저장소 밖 | apps/PairingAgent/app/src/main/java/com/sk/airbot/pairingagent/ble/BLECentral.java |
| N05 | devicecontrolapi_test | MainActivity 버튼 / 실제 command Bundle 시험 | apps/devicecontrolapi_test/java/net/quber/devicecontrolapi_test/MainActivity.java |
| N06 | DeviceControlAPI | DeviceControlProxy / connect / register / death | apps/DeviceControlAPI/java/com/sk/airbot/devicecontrol/DeviceControlProxy.java |
| N07 | DeviceAgent Stub | IDeviceControl / 서버 API와 callback | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/DeviceAgent.java |
| N08 | permissions/ | privapp XML / 생성 도구 / APK나 실행 서비스 아님 | apps/permissions/ |
| N09 | AirbotSdkProject | devicecontrolapi library / AIDL / parcelable 사본 | apps/AirbotSdkProject/devicecontrolapi/ |
| N10 | WssManagerProxy | bind / register / linkDeath / timeout·재연결 처리 | apps/AirbotSdkProject/devicecontrolapi/src/main/java/com/sk/airbot/wsscontrol/WssManagerProxy.java |
| N11 | StreamingManagerProxy | front / remote API / streaming callback 계약 | apps/AirbotSdkProject/devicecontrolapi/src/main/java/com/sk/airbot/streamingcontrol/StreamingManagerProxy.java |
| N12 | WSS·Streaming 서버 | DA 별도 Service 진입점 / 동일 APK 기본 프로세스 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/WssService.java |
해석 경계와 변경 시 검토
- Pairing Android.mk는 prebuilt APK를 선택한다. 소스 분석과 설치 바이너리 동작을 구분한다.
- Pairing callback 해제의 자기 재귀는 검토 후보다. 그림은 정상 해제 성공을 보증하지 않는다.
- SDK 사본의 AIDL·parcel 계약을 함께 맞춰야 한다. permissions XML 존재만으로 권한 grant를 증명할 수 없다.