SOME/IP 스택은 Android 인터페이스 정의 언어 (AIDL) 인터페이스를 통해 하위 수준 SOME/IP 전송 로직을 관리합니다. 이 스택은 SOME/IP 이벤트와 리모트 프로시져 콜 (RPC)을 전송하고 수신합니다. 이 문서에서는 다음 개념을 설명합니다.
참조 구현: SDV는 SOME/IP 스택의 비프로덕션 참조 샘플 구현을 제공합니다.
바인더 API:
ISomeIpStack인터페이스는 SOME/IP 스택 인스턴스와 상호작용하는 메서드를 정의합니다.SELinux: 참조 스택의 샘플 SELinux 구성은 바인더 통신과 세부 파일 시스템 액세스를 지원합니다.
이 스택은 SOME/IP 와이어 형식을 읽지만 페이로드를 불투명한 바이너리 블롭으로 남겨두고 페이로드를 SOME/IP 브로커로 전달합니다.
SOME/IP 표준은 스택 또는 스택 API 레이어의 정의를 제공하지 않습니다. SDV는 표준의 친숙한 정의 내에서 작동하는 AIDL API를 제공하며 기존 스택을 적용하는 데 최소한의 코드만 필요합니다.
이 API를 사용하면 스택의 다양한 구현을 선택할 수 있고 시스템의 다른 구성요소와 스택의 통합이 간소화됩니다.
참조 구현
SDV는 SOME/IP 스택의 비프로덕션 참조 샘플 구현을 제공하며 오픈소스 COVESA vsomeip 라이브러리 위에 있는 씬 래퍼로 구성됩니다. 시스템은 참조 스택을 sdv_core_cf 및 sdv_core_arm64 타겟에만 배포하고 init.rc는 CID=3을 사용하여 VM에서 시작합니다.
on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
start sdv_someip_stack_agent
OEM 정의 스택의 프로덕션 배포 구성을 정의합니다. 자세한 내용은 SDV와 SOME/IP 통합을 참고하세요.
구성
참조 스택은 vSomeIP 라이브러리의 구성을 선언합니다. 구성 구조에 대한 설명은 구성 파일 구조를 참고하세요. 구성의 일부로 멀티캐스트 주소, 스택에서 사용하는 포트와 같은 SOME/IP SD 매개변수를 지정합니다.
Binder API
ISomeIpStack 인터페이스는 core_services/some_ip/aidl/google/sdv/someip에 선언됩니다. ISomeIpStack 인터페이스는 SOME/IP 스택 인스턴스와 상호작용하는 메서드를 정의하고 이러한 항목에 필수적인 속성을 제공합니다.
서비스 가용성
register_availability_callback서비스 사용 가능 여부 변경사항에 관한 콜백을 등록합니다.monitor_service특정 서비스의 가용성을 모니터링하도록 스택에 지시합니다.unregister_availability_callback는 사용 가능 여부 콜백을 등록 취소합니다.on_sdv_service_availabilitySDV 서비스 가용성의 변경사항을 나타냅니다.
리모트 프로시져 콜 (RPC)
다음과 같이 RPC 요청을 보낼 수 있습니다.
rpc_transact응답 대기rpc_oneway이(가) 응답을 기다리지 않음
RPC 요청 처리의 경우:
register_rpc_request_callback수신 RPC 요청의 콜백을 등록합니다.unregister_rpc_request_callbackRPC 요청 콜백을 등록 취소합니다.
이벤트 알림
register_event_notification_callback구독된 이벤트 알림의 콜백을 등록합니다.unregister_event_notification_callback활동 알림 콜백을 등록 해제합니다.on_sdv_topic_availabilitySDV 주제 사용 가능 여부의 변경사항을 나타냅니다.subscribe이벤트 그룹에서 특정 이벤트를 구독합니다.unsubscribe특정 이벤트를 구독 취소합니다.publish지정된 페이로드로 이벤트를 게시합니다.
SELinux
device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ 폴더에는 참조 스택의 샘플 SELinux 구성이 포함되어 있습니다.
sdv_someip_stack_default.te는sdv_someip_stack_default유형을 정의하고 속성 및 컨텍스트에 매핑합니다.file_contexts는 바이너리 및 데이터 폴더를 적절한 컨텍스트에 매핑합니다.
이 구성을 통해 스택과 브로커 간에 바인더 통신이 가능해지므로 네트워킹 품질에 액세스하고 기기의 파일 시스템에 상세하게 액세스할 수 있습니다.