SOME/IP 스택 구현

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_cfsdv_core_arm64 타겟에만 배포하고 init.rcCID=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_availability SDV 서비스 가용성의 변경사항을 나타냅니다.

리모트 프로시져 콜 (RPC)

다음과 같이 RPC 요청을 보낼 수 있습니다.

  • rpc_transact 응답 대기
  • rpc_oneway이(가) 응답을 기다리지 않음

RPC 요청 처리의 경우:

  • register_rpc_request_callback 수신 RPC 요청의 콜백을 등록합니다.

  • unregister_rpc_request_callback RPC 요청 콜백을 등록 취소합니다.

이벤트 알림

  • register_event_notification_callback 구독된 이벤트 알림의 콜백을 등록합니다.

  • unregister_event_notification_callback 활동 알림 콜백을 등록 해제합니다.

  • on_sdv_topic_availability SDV 주제 사용 가능 여부의 변경사항을 나타냅니다.

  • subscribe 이벤트 그룹에서 특정 이벤트를 구독합니다.

  • unsubscribe 특정 이벤트를 구독 취소합니다.

  • publish 지정된 페이로드로 이벤트를 게시합니다.

SELinux

device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ 폴더에는 참조 스택의 샘플 SELinux 구성이 포함되어 있습니다.

  • sdv_someip_stack_default.tesdv_someip_stack_default 유형을 정의하고 속성 및 컨텍스트에 매핑합니다.

  • file_contexts는 바이너리 및 데이터 폴더를 적절한 컨텍스트에 매핑합니다.

이 구성을 통해 스택과 브로커 간에 바인더 통신이 가능해지므로 네트워킹 품질에 액세스하고 기기의 파일 시스템에 상세하게 액세스할 수 있습니다.