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 目標,並在 VM 上以 CID=3 啟動 init.rc。
on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
start sdv_someip_stack_agent
為 OEM 定義的堆疊定義正式版部署設定。詳情請參閱「將 SOME/IP 與 SDV 整合」。
設定
參考堆疊會宣告 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.te會定義sdv_someip_stack_default型別,並將其對應至屬性和內容。file_contexts將地圖二進位檔和資料夾對應至適當的情境。
這項設定可讓堆疊和代理程式之間進行 Binder 通訊,進而存取網路品質,以及精細存取裝置的檔案系統。