ติดตั้งใช้งานสแต็ก SOME/IP

สแต็ก SOME/IP จะจัดการตรรกะการรับส่ง SOME/IP ระดับต่ำผ่านอินเทอร์เฟซภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) สแต็กนี้จะส่งและรับเหตุการณ์ SOME/IP และการเรียกกระบวนการระยะไกล (RPC) เอกสารนี้อธิบายแนวคิดต่อไปนี้

  • การใช้งานอ้างอิง: SDV มีตัวอย่างการใช้งานอ้างอิงที่ไม่ใช่เวอร์ชันที่ใช้งานจริง สำหรับสแต็ก SOME/IP

  • Binder API: ISomeIpStack อินเทอร์เฟซกำหนดเมธอดสำหรับการโต้ตอบ กับอินสแตนซ์สแต็ก SOME/IP

  • SELinux: การกำหนดค่า SELinux ตัวอย่างสำหรับสแต็กอ้างอิงจะเปิดใช้ การสื่อสาร Binder และการเข้าถึงระบบไฟล์แบบละเอียด

แม้ว่าสแต็กนี้จะอ่านรูปแบบสาย SOME/IP แต่จะปล่อยให้เพย์โหลดเป็น ออบเจ็กต์แบบไบนารีที่ทึบแสงและส่งต่อเพย์โหลดไปยังโบรกเกอร์ SOME/IP

มาตรฐาน SOME/IP ไม่ได้ให้คำจำกัดความของเลเยอร์สแต็กหรือเลเยอร์ API ของสแต็ก SDV มี AIDL API ที่ทํางานภายในคําจํากัดความที่คุ้นเคยของ มาตรฐาน และต้องใช้โค้ดจํานวนน้อยที่สุดในการปรับสแต็กที่มีอยู่

API นี้ช่วยให้คุณเลือกการติดตั้งใช้งานต่างๆ ของสแต็กและลดความซับซ้อน ในการผสานรวมสแต็กกับคอมโพเนนต์อื่นๆ ในระบบ

การใช้งานอ้างอิง

SDV มีการใช้งานตัวอย่างอ้างอิงที่ไม่ใช่เวอร์ชันที่ใช้งานจริงสำหรับสแต็ก SOME/IP และประกอบด้วย Wrapper แบบบางที่อยู่เหนือไลบรารี COVESA vsomeip แบบโอเพนซอร์ส ระบบจะติดตั้งใช้งานสแต็กอ้างอิงเฉพาะในเป้าหมาย sdv_core_cf และ sdv_core_arm64 และ init.rc จะเริ่มใช้งานใน VM ด้วย CID=3

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 ระหว่างสแต็กและโบรกเกอร์ ทำให้เข้าถึงคุณภาพเครือข่ายและสิทธิ์เข้าถึงแบบละเอียดในระบบไฟล์ ของอุปกรณ์ได้