SK-Intellix Framework and SDK Hub
이 허브는 a1-packages와 platform vendor AOSP overlay를 기준으로, 현재 제품에 들어가는 Android system package, DeviceAgent API, peer agent, vendor HAL/service, init/VINTF/sepolicy/DTS 연결을 근거 기반으로 정리한다.
여기서 말하는 Framework/SDK는 현재 코드에 이미 제품 형태로 완성된 별도 SDK가 있다는 뜻이 아니다. 현재 확인된 사실은 다음에 가깝다.
Client apps / privileged packages
-> DeviceControlAPIJavaLib 또는 직접 Binder bind
-> DeviceAgent IDeviceControl.sendModuleCommand(Bundle)
-> MainApi / framework command / task package / domain managers
-> peer agents 또는 vendor.<platform-vendor>.hardware.* HAL
-> UM vendor service / MCU / SoundFlow / sysfs / DTS-backed device nodes
따라서 이 문서의 목적은 “새로운 상위 지능 계층”을 설명하는 것이 아니라, A1에 이미 존재하는 Android platform package와 DeviceAgent 중심 API를 어떤 기준으로 안정화하고, 필요하면 SDK 형태로 포장할 수 있는지 정리하는 것이다.
이 구조에서 DeviceAgent는 단순 기능 앱이 아니다. Android OS의 system_server 프로세스 자체는 아니지만, 제품 기능 관점에서는 그에 가까운 product-level SystemServer / service hub 역할을 한다. 외부 client의 Binder 진입점, domain manager, peer agent binding, HAL bridge, 상태/정책/event 처리가 DeviceAgent에 모여 있기 때문이다.
1. 권장 읽기 순서
| 단계 | 문서 | 목적 |
|---|---|---|
| 0 · Orientation | 현재 문서 | 현재 A1 package와 SDK 후보의 범위 |
| 1 · Why / Product | Transformation Roadmap | 현재 구조를 깨지 않고 API를 안정화하는 이유 |
| 2 · Architecture | System Design | DeviceAgent Binder API, peer agent, HAL/service 경계 |
| 3 · Contract / Data | SDK Contract | DeviceControlAPIJavaLib와 IDeviceControl 위 client API 후보 |
| 4 · Implementation | DeviceAgent / SoC Category | TaskManager와 domain executor 실제 연결 |
| 5 · Validation | Source and Evidence Catalog | 주장을 source/test/evidence에 연결 |
| 6 · Operations / Roadmap | QCS6490 Platform Vendor Brief | QSSI/UM, HAL, DTS, driver 업체 전달 |
상위/하위 연결점:
| 위치 | 연결 이유 |
|---|---|
| SK-Intellix Engineering Hub | 전체 위키의 최상위 진입점 |
| Book Shelf | 책처럼 읽을 때 A1 platform/runtime 정리 파트 |
| DeviceAgent / SoC Category | DeviceAgent API, TaskManager, domain executor 상세 |
| Vendor Category | 업체 구현 범위와 evidence 제출 기준 |
| QCS6490 Platform Vendor Brief | QCS6490/QSSI/UM/HAL/DTS 업체 회의 시작점 |
2. 확인된 코드 근거
| 영역 | 확인된 근거 | 의미 |
|---|---|---|
| A1 package inventory | a1-packages/docs/architecture/MODULE_INVENTORY.md |
apps/, service/, libs/, sepolicy로 구성된 Android 제품 패키지 |
| 제품 패키지 포함 | a1-packages/packages.mk |
DeviceAgent, AMRAgent, IotAgent, StartupService, PairingAgent, SKMLauncher, UpdateAgent, VisionAgent, ethernetagent, logwriter 등 포함 |
| QSSI overlay | <qssi-vendor-overlay>/vendor.mk, <qssi-vendor-overlay>/prebuilts/packages.mk |
system/priv-app, permissions, sysconfig, HIDL interface 정의를 QSSI 쪽에 반영 |
| UM overlay | <um-vendor-overlay>/vendor.mk, <um-vendor-overlay>/airbot/airbot.mk |
vendor service, vendor sepolicy, Kardome/SoundFlow, HAL backend를 UM 쪽에 반영 |
| DeviceAgent Binder API | apps/DeviceAgent/app/src/main/aidl/com/sk/airbot/devicecontrol/IDeviceControl.aidl |
registerCallback, sendModuleCommand(Bundle), callback 등록 API 제공 |
| Client API | apps/DeviceControlAPI/java/com/sk/airbot/devicecontrol/DeviceControlProxy.java |
com.sk.airbot.devicecontrol.IDeviceControl action으로 DeviceAgent에 bind |
| DeviceAgent service export | apps/DeviceAgent/app/src/main/AndroidManifest.xml |
signature/privileged permission으로 보호되는 exported service |
| DeviceAgent build | apps/DeviceAgent/app/src/main/Android.mk |
system/priv-app, platform certificate, private platform API, platform vendor HAL Java lib 의존 |
| HAL interface | <qssi-vendor-overlay>/airbot/hardware/interfaces/device_manager/1.0, soundflowservice/1.0 |
vendor.<platform-vendor>.hardware.device_manager@1.0, vendor.<platform-vendor>.hardware.soundflowservice@1.0 HIDL |
| HAL implementation | <um-vendor-overlay>/airbot/external/device_manager/service, <um-vendor-overlay>/airbot/external/sndflow/service |
/vendor/bin/hw service, init rc, VINTF fragment 제공 |
| Platform policy | <um-vendor-overlay>/airbot/device/sepolicy/*, device_framework_matrix_vendor.xml |
service domain, hwservice context, file context, matrix 정합성 |
2.1 BSP / Build Flow 근거
Framework/SDK 문서가 BSP와 연결되는 지점은 QSSI/UM split build다. g13qcs6490/build_project.sh는 QSSI를 qssi lunch로 --qssi_only, UM을 lahaina lunch로 --target_only 빌드한 뒤 Qualcomm build_image_standalone.py --image super로 merge OTA를 만든다. platform vendor overlay는 <qssi-vendor-overlay>/vendor.mk, <um-vendor-overlay>/vendor.mk, sync_vendor_overlay.sh를 통해 각각 QSSI/UM의 vendor/<platform-vendor>로 들어간다.
따라서 이 허브에서 BSP를 말할 때는 “Android SDK 앱 개발”이 아니라 다음 chain을 뜻한다.
a1-packages source/prebuilt package
-> <qssi-vendor-overlay> system-side overlay
-> <um-vendor-overlay> vendor-side HAL/service overlay
-> QSSI/UM split build
-> merged super / OTA / PKG release
3. 현재 A1 레이어
이 허브의 레이어는 Android/AOSP 배치와 실제 호출 경계를 기준으로 본다.
| 레이어 | 현재 구조 | 이 문서에서의 의미 |
|---|---|---|
| Client / Consumer | SKMLauncher, SKMLauncher2, ICT, PairingAgent, 테스트 앱 |
DeviceAgent API를 호출하는 앱/패키지 |
| Client API | DeviceControlAPIJavaLib, DeviceControlProxy |
Binder 연결과 callback 등록을 감싸는 현재 API |
| Product SystemServer | DeviceAgent, IDeviceControl, MainApi, domain managers |
Android system_server는 아니지만 제품 기능 제어의 central service hub |
| DeviceAgent Binder boundary | IDeviceControl.aidl, DeviceAgent.java, sendModuleCommand(Bundle) |
외부 호출이 DeviceAgent로 들어오는 안정화 대상 |
| DeviceAgent runtime code | MainApi, framework/command/*, task/*, policy/*, event/*, domain managers |
제품 기능 라우팅, 정책, 상태, event, HAL/peer agent 연결의 중심 |
| Peer agent services | AMRAgent, IotAgent, UpdateAgent, PairingAgent, VisionAgent, LLMAgent |
DeviceAgent가 bind하거나 호출하는 기능별 프로세스 |
| QSSI contract/package | <qssi-vendor-overlay>, HIDL interface, permissions, sysconfig, priv-app package |
system/system_ext 성격의 제품 반영 영역 |
| UM vendor runtime | <um-vendor-overlay>, DeviceManager service, SoundFlow service, sepolicy_vndr |
vendor partition과 HAL backend 영역 |
| Kernel / board | kernel/msm-5.4, board DTS include, device nodes |
UART/MCU/fan/thermal/audio 등 실기기 검증 대상 |
3.1 DeviceAgent 위치 해석
DeviceAgent를 Android system_server로 쓰면 안 된다. 실제 Android system_server는 AOSP framework process다. 하지만 A1 제품 기능 관점에서는 DeviceAgent가 central Binder entry, command dispatcher, peer agent coordinator, state/policy/event owner, HAL bridge를 동시에 담당하므로 제품 기능의 SystemServer 역할이라고 표현하는 것이 정확하다.
이 표현의 의미는 다음처럼 제한한다.
| 표현 | 맞는 의미 | 틀린 의미 |
|---|---|---|
| product-level SystemServer | A1 제품 기능 호출이 DeviceAgent로 모이고 DeviceAgent가 peer agent/HAL로 분배한다 | Android OS system_server를 교체한다 |
| service hub | IDeviceControl entry와 AMR/IoT/Update/Pairing/Vision binding이 DeviceAgent에 모인다 |
모든 agent의 내부 구현이 DeviceAgent 안에 있다 |
| HAL bridge | system/priv-app DeviceAgent가 platform vendor HIDL Java lib를 통해 vendor HAL service와 통신한다 | DeviceAgent가 vendor daemon 자체다 |
4. 그림 읽는 기준
| 그림 | 설명 |
|---|---|
| QSSI/UM split build, platform vendor overlay 반영, merge/package/release gate | |
| Client API -> DeviceAgent -> domain manager/task -> platform vendor HAL -> vendor/kernel 경로 | |
| DeviceAgent가 AMR/IoT/Update/Pairing/Vision/LLM agent와 Binder/callback으로 연결되는 구조 | |
| HAL, DTS, driver, SELinux, device node evidence chain |
표현 기준:
- 파란색
SK-Intellix는 현재a1-packages안의 DeviceAgent/API/runtime 코드 또는 그 전환 후보를 뜻한다. - 주황색
Platform Vendor는 QSSI/UM overlay, vendor service, HAL backend 구현 owner를 뜻한다. - 녹색
Platform/Vendor Evidence는 boot/logcat/dmesg/AVC/HAL callback 같은 실기기 증거이며, 플랫폼 벤더가 수집하고 release gate가 검증한다. - device evidence 자체는 SK-Intellix 역할로 보지 않는다. SK-Intellix 쪽은 그 evidence가 API/HAL/runtime 계약을 만족하는지 판단한다.
5. A1 Package 구성
a1-packages는 단일 앱 저장소가 아니라 Android 제품 이미지에 들어가는 system app, privileged app, native daemon, shared library, SELinux policy 묶음이다.
DeviceAgent는 이 묶음 안에서 다음 책임을 동시에 가진다.
| DeviceAgent 책임 | 설명 | 근거 |
|---|---|---|
| Product service registry | 외부 client가 IDeviceControl action으로 bind하는 제품 기능 진입점 |
AndroidManifest.xml, IDeviceControl.aidl |
| Command dispatcher | sendModuleCommand(Bundle)를 받아 MainApi, framework command, task package로 전달 |
DeviceAgent.java, MainApi.java, framework/command/*, task/* |
| Peer service coordinator | AMR/IoT/Update/Pairing/Vision/LLM agent와 연결 | SERVICE_MAP.md, MainService.java, AMRService.java, VisionAIManager.java |
| Product state/policy owner | 상태, event, command policy, task reason을 관리 | event/StateManager.java, event/EventManager.java, policy/CmdPolicyManager.java, task/TaskReasonContract.java |
| HAL bridge | DeviceManager/SoundFlow HAL Java binding을 통해 vendor service로 내려감 | Android.mk, DeviceAgent.java, SoundFlowManager.java |
그래서 이 문서에서 DeviceAgent를 “앱 하나”로 표현하면 실제 역할이 축소된다. 더 정확한 표현은 “A1 제품 기능의 system service hub”다.
5.1 서비스 Agent 연동 구조
DeviceAgent는 외부 client와 peer agent 사이의 중심점이다. 외부 앱은 DeviceControlAPIJavaLib 또는 직접 Binder bind로 IDeviceControl에 들어오고, DeviceAgent는 내부 command/runtime 처리 후 필요한 경우 기능별 peer agent나 HAL로 분배한다.
| 연결 | Binder action / API | DeviceAgent 쪽 연결 근거 | 역할 |
|---|---|---|---|
| Client -> DeviceAgent | com.sk.airbot.devicecontrol.IDeviceControl, sendModuleCommand(Bundle) |
DeviceControlProxy.java, DeviceAgent.java |
제품 기능 외부 진입점 |
| DeviceAgent -> AMRAgent | com.sk.airbot.amrcontrol.IAMRControl |
AMRService.java, MainService.mAMRControlCallback |
이동, 지도, docking, battery/status callback |
| DeviceAgent -> IotAgent | com.sk.airbot.iotcontrol.IIotControl |
DeviceAgent.connectServices(), MainService.mServiceConnectionIot |
IoT 상태 publish/control |
| DeviceAgent -> UpdateAgent | com.sk.airbot.updatecontrol.IUpdateControl |
DeviceAgent.connectServices(), MainService.mServiceConnectionUpdate |
OTA/update control |
| DeviceAgent -> PairingAgent | com.sk.airbot.pairingcontrol.IPairingControl |
DeviceAgent.connectServices(), MainService.mServiceConnectionPairing |
pairing/BLE 연동 |
| DeviceAgent -> VisionAgent | com.sk.airbot.visioncontrol.IVisionControl |
VisionAIManager.bindService() |
vision recognition/control |
| DeviceAgent -> LLMAgent | com.sk.airbot.llmcontrol.ILLMControl |
MODULE_INVENTORY.md, LLMAgent AIDL/manifest |
LLM/TTS 관련 peer package. DeviceAgent 직접 bind path는 별도 확인 필요 |
| DeviceAgent -> platform vendor HAL | IDeviceManager.getService(), ISoundFlowService.getService() |
DeviceAgent.java, SoundFlowManager.java, Android.mk HAL Java lib 의존 |
MCU/device manager, SoundFlow/Kardome vendor service 연결 |
| 구성 | 현재 역할 | 근거 |
|---|---|---|
apps/DeviceAgent |
IDeviceControl Binder 진입점, MainApi, domain managers, HAL/peer agent 연결 |
SERVICE_MAP.md, AndroidManifest.xml, Android.mk |
apps/DeviceControlAPI |
DeviceAgent에 bind하는 Java client library | DeviceControlProxy.java |
apps/AMRAgent |
AMR 이동/맵/로봇 상태 peer service | SERVICE_MAP.md |
apps/IotAgent |
IoT 상태 publish/control peer service | SERVICE_MAP.md |
apps/UpdateAgent |
OTA/update peer service | SERVICE_MAP.md |
apps/PairingAgent |
pairing control peer service | SERVICE_MAP.md |
apps/VisionAgent |
vision control/recognition peer service | SERVICE_MAP.md |
apps/LLMAgent |
LLM/TTS 관련 제어 패키지 | MODULE_INVENTORY.md |
apps/SKMLauncher, apps/SKMLauncher2, apps/ICT |
DeviceAgent API consumer | SERVICE_MAP.md |
service/ethernetagent, service/logwriter, service/decrypt |
native executable/init rc 기반 시스템 지원 서비스 | MODULE_INVENTORY.md, packages.mk |
libs/serial_port |
serial port shared library | MODULE_INVENTORY.md |
sepolicy |
system app 권한 보강 정책 | packages.mk |
6. SDK라는 표현의 정확한 범위
현재 근거 기준으로 “SDK”라고 말할 수 있는 것은 완성된 신규 product가 아니라 다음 두 단계다.
| 단계 | 상태 | 설명 |
|---|---|---|
| 현재 | DeviceControlAPIJavaLib + DeviceControlProxy |
DeviceAgent Binder 연결을 감싸는 client library가 존재 |
| 후보 | sk-intellix-sdk-core.aar 같은 별도 AAR |
기존 Bundle/method string을 숨기고 domain별 API를 제공하는 전환 후보 |
따라서 이 허브에서는 SDK를 “현재 존재하는 client API를 제품형 API로 정리할 수 있는 후보”로만 다룬다. 실제 SDK 구현, API diff, sample app, Maven/internal artifact 배포는 별도 구현과 검증이 필요하다.
7. 완료 판단
이 영역의 완료 판단은 문서 동의가 아니라 Android platform evidence로 한다.
| 판단 항목 | 필요한 evidence |
|---|---|
| QSSI package 반영 | vendor/<platform-vendor> include, PRODUCT_PACKAGES, permissions/sysconfig 산출물 |
| UM vendor service 반영 | /vendor/bin/hw service, init rc, VINTF fragment, hwservicemanager 등록 |
| DeviceAgent API 동작 | IDeviceControl bind, sendModuleCommand(Bundle), callback 등록/해제 log |
| HAL 연결 | IDeviceManager.getService(), ISoundFlowService.getService(), callback/event log |
| SELinux/VINTF 정합성 | avc: denied 정리, lshal, VINTF check, service context 확인 |
| DTS/driver/device node | boot dmesg, node permission, UART/MCU/fan/thermal/audio 기능 log |
8. 빠른 URL
Framework/SDK Hub:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/
System Design:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/system-design.html
SDK Contract:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/sdk-contract.html
Transformation Roadmap:
https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/transformation-roadmap.html