A1 SoC 전체 구조 — 1398d109 기준
기준:
1398d109c391c4044cae26d0e9aea4d3f08d9670. 지정 커밋의 추적 파일을 직접 확인한 정적 구조 분석이며, 현재 HEAD·후속 TaskManager·SKIX 구현을 포함하지 않는다.
이 문서군은 a1-packages가 제품 안에서 맡는 역할을 앱 → 기능 조정 → 동료 서비스 → 네이티브·외부 HAL 순서로 설명한다. 이 저장소는 전체 AOSP가 아니라 제품 패키지 묶음이다. Android 프레임워크, 커널, HAL 구현까지 이 저장소에 들어 있다고 읽으면 안 된다.
핵심은 DeviceAgent다. 일반 장치 명령을 받고 제품 상태·청정·이동·예약을 조정하며, AMR·IoT·Vision 등 별도 앱과 연결한다. WSS와 Streaming은 같은 APK 안의 별도 Service와 Binder 진입점을 가진다. 네이티브 서비스와 SDK·권한 설정도 패키지 묶음에 포함된다.
전체 SVG와 모듈별 확대 자료
대형 전체도 + 모듈별 상세도 12장 · 전체 SVG 원본
읽는 순서
| 순서 | 문서 | 설명 범위 |
|---|---|---|
| 1 | 전체 앱 지도 | apps의 모든 디렉터리, 소스·prebuilt 차이, 앱별 진입점 |
| 2 | DeviceAgent 내부 골격 | 중심 클래스, 모든 기능 패키지, 상태·정책·실행 책임 |
| 3 | Binder·HAL·데이터 계약 | 공개 API, 동료 서비스, callback, 접근 제어, 데이터 저장 |
| 4 | 부팅과 대표 기능 실행 | 부팅, 청정·이동, 예약, WSS·영상·음성 흐름 |
| 5 | 빌드·네이티브·정책 | 루트 구성, 설치 선언, 서비스·라이브러리·스크립트·SELinux |
| 6 | 소스 근거와 확인 범위 | 재현 명령, 커밋 통계, 코드 지도, 미확인 경계 |
모듈별 상세 분석
각 문서는 진입점, 주요 내부 클래스, 호출·callback 방향, thread/lifecycle, 저장소, 외부 의존과 미확인 경계를 설명한다.
| 상세 문서 | 포함 모듈·기능 |
|---|---|
| DeviceAgent 도메인 실행 | 청정·이동·지도, WSS·Streaming·EventAsset 연계, 설정·유지보수·알림·보고서·OTA·보정·interaction |
| AMR·MCU | typed AMR command, socket transport, MCUAgent serial과 DA HAL 구분 |
| IoT·Update | MQTT 수신·응답·재연결, OTA UI와 UpdateEngine 소유권 |
| Vision·EventAsset·LLM | 인식 callback, 영상·음성 녹화, clip·upload, LLMAgent 구현 한계 |
| Pairing·SDK·시험 앱 | BLE/Wi-Fi, DeviceControlAPI, AirbotSdkProject, devicecontrolapi_test, permissions |
| 두 Launcher | 화면·ViewModel·repository, DeviceControl callback, 두 변형의 차이 |
| ICT·오류·부팅 지원 | 설비 시험 socket, ErrorProvider SQLite, StartupService reset 조건 |
전체 구성의 책임 경계
| 영역 | 책임 | 코드 근거 |
|---|---|---|
| PUI·외부 호출자 | 사용자 입력과 화면·음성 표현 | apps/SKMLauncher2/, apps/LLMAgent/ |
| SDK | 호출 앱에서 Binder·Bundle 계약 사용 | apps/AirbotSdkProject/devicecontrolapi/, apps/DeviceControlAPI/ |
| DeviceAgent | 제품 동작 조정, 상태·정책, 장치 명령 분배 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/ |
| 동료 앱 | AMR 이동, IoT 통신, Vision, Pairing, Update, EventAsset | apps/의 해당 모듈 |
| native 서비스 | 복호화, Ethernet 설정, 로그 수집 | service/ |
| 공유 native library | serial port JNI | libs/serial_port/ |
| 제품 편입·접근 설정 | 모듈 선택, 권한 XML, 정책 파일 | packages.mk, apps/permissions/, sepolicy/ |
| 외부 플랫폼 | Android 시스템 서비스, device_manager·SoundFlow HAL 구현 | 이 저장소에는 호출부만 확인됨 |
기존 Wiki와의 관계
DeviceAgent / SoC Domain Map의 도메인 분류와 DeviceAgent and SoC의 문서 연결을 참조했다. 다만 두 문서는 TaskManager 설계·후속 구현도 설명한다. 이 문서군이 해당 커밋의 실제 구조 기준선이다.
SKIX 설계 이력은 같은 커밋의 책임 집중을 리팩터링 출발점으로 설명한다. 여기서는 목표 Manager·Core·Registry를 현재 구현인 것처럼 그리지 않는다.
- 이 커밋에 후속
apps/TaskManagerClient/와 DeviceAgenttask/트리는 없다. ipc/TaskExecutor.java는 존재한다. WSS·Streaming 명령을 HandlerThread에서 처리하는 작은 큐다.- 디렉터리 존재, 빌드 모듈 선언, 제품 선택, 실제 이미지 설치, 실기기 실행은 서로 다른 증거다.
구조를 읽을 때 주의할 점
sendModuleCommand()의 정수 반환이나 Binder 호출 성공이 이동·청정의 물리 완료를 뜻하지 않는다. 완료는 각 도메인의 callback과 장치 상태까지 추적해야 한다. 이 문서는 APK 실행·AOSP 빌드·실기기 검증을 했다는 보고서가 아니다.
상세 정책·책임 보강
MR7 모듈 환경·51개 Manager·정책 상세 분석: 현재 quber/mr7 소스에서 조건·예외·실제 반환값까지 추적한 후속 자료.
Connections
전체 목차 · 앱 구성 · DeviceAgent 내부 · IPC · 실행 흐름 · 플랫폼·빌드 · 근거·확인 범위