Mengimplementasikan stack SOME/IP

Stack SOME/IP mengelola logika transportasi SOME/IP tingkat rendah melalui antarmuka Android Interface Definition Language (AIDL). Stack ini mengirim dan menerima peristiwa SOME/IP dan Remote Procedure Call (RPC). Dokumen ini menjelaskan konsep berikut:

  • Implementasi referensi: SDV menyediakan implementasi sampel referensi non-produksi untuk stack SOME/IP.

  • Binder API: Antarmuka ISomeIpStack menentukan metode untuk berinteraksi dengan instance stack SOME/IP.

  • SELinux: Konfigurasi SELinux sampel untuk stack referensi memungkinkan komunikasi binder dan akses sistem file terperinci.

Meskipun stack ini membaca format kabel SOME/IP, stack ini akan membiarkan payload sebagai blob biner buram dan meneruskan payload ke broker SOME/IP.

Standar SOME/IP tidak memberikan definisi stack atau lapisan stack API. SDV menyediakan AIDL API yang beroperasi dalam definisi standar yang sudah dikenal dan memerlukan jumlah kode minimal untuk mengadaptasi stack yang ada.

API ini memungkinkan Anda memilih implementasi stack yang berbeda dan menyederhanakan integrasi stack dengan komponen lain dalam sistem.

Implementasi referensi

SDV menyediakan implementasi sampel referensi non-produksi untuk stack SOME/IP, dan terdiri dari wrapper tipis di atas library COVESA vsomeip open source. Sistem hanya men-deploy stack referensi ke target sdv_core_cf dan sdv_core_arm64, dan init.rc memulainya di VM dengan CID=3.

on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
    start sdv_someip_stack_agent

Tentukan konfigurasi deployment produksi untuk stack yang ditentukan OEM. Untuk mempelajari lebih lanjut, lihat Mengintegrasikan SOME/IP dengan SDV.

Konfigurasi

Stack referensi mendeklarasikan konfigurasi untuk library vSomeIP. Lihat Struktur File Konfigurasi untuk mengetahui deskripsi struktur konfigurasi. Sebagai bagian dari konfigurasi, kami menentukan parameter SOME/IP SD, seperti alamat multicast dan port yang digunakan oleh stack.

Binder API

Antarmuka ISomeIpStack dideklarasikan di core_services/some_ip/aidl/google/sdv/someip. Antarmuka ISomeIpStack menentukan metode untuk berinteraksi dengan instance stack SOME/IP dan memberikan kualitas penting untuk item ini.

Ketersediaan layanan

  • register_availability_callback Mendaftarkan callback untuk perubahan ketersediaan layanan.

  • monitor_service Menginstruksikan stack untuk memantau ketersediaan layanan tertentu.

  • unregister_availability_callback Membatalkan pendaftaran callback ketersediaan.

  • on_sdv_service_availability Menunjukkan perubahan ketersediaan layanan SDV.

Remote procedure call (RPC)

Anda dapat mengirim permintaan RPC dengan:

  • rpc_transact untuk menunggu respons
  • rpc_oneway untuk tidak menunggu respons

Untuk penanganan permintaan RPC:

  • register_rpc_request_callback Mendaftarkan callback untuk permintaan RPC masuk.

  • unregister_rpc_request_callback Membatalkan pendaftaran callback permintaan RPC.

Notifikasi peristiwa

  • register_event_notification_callback Mendaftarkan callback untuk notifikasi peristiwa yang dilanggan.

  • unregister_event_notification_callback Membatalkan pendaftaran callback notifikasi peristiwa.

  • on_sdv_topic_availability Menunjukkan perubahan ketersediaan topik SDV.

  • subscribe Berlangganan peristiwa tertentu dari grup peristiwa.

  • unsubscribe Berhenti berlangganan peristiwa tertentu.

  • publish Memublikasikan peristiwa dengan payload tertentu.

SELinux

Folder device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ berisi konfigurasi SELinux sampel untuk stack referensi:

  • sdv_someip_stack_default.te menentukan jenis sdv_someip_stack_default dan memetakannya ke atribut dan konteks.

  • file_contexts memetakan folder biner dan data ke konteks yang sesuai.

Konfigurasi ini memungkinkan komunikasi Binder antara stack dan broker, sehingga memungkinkan akses ke kualitas jaringan dan akses terperinci ke sistem file perangkat.