สแต็ก SOME/IP จะจัดการตรรกะการรับส่ง SOME/IP ระดับต่ำผ่านอินเทอร์เฟซภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) สแต็กนี้จะส่งและรับเหตุการณ์ SOME/IP และการเรียกกระบวนการระยะไกล (RPC) เอกสารนี้อธิบายแนวคิดต่อไปนี้
การใช้งานอ้างอิง: SDV มีตัวอย่างการใช้งานอ้างอิงที่ไม่ใช่เวอร์ชันที่ใช้งานจริง สำหรับสแต็ก SOME/IP
Binder API:
ISomeIpStackอินเทอร์เฟซกำหนดเมธอดสำหรับการโต้ตอบ กับอินสแตนซ์สแต็ก SOME/IPSELinux: การกำหนดค่า 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แสดงการเปลี่ยนแปลงความพร้อมให้บริการของหัวข้อ SDVsubscribeติดตามกิจกรรมที่เฉพาะเจาะจงจากกลุ่มกิจกรรม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 ระหว่างสแต็กและโบรกเกอร์ ทำให้เข้าถึงคุณภาพเครือข่ายและสิทธิ์เข้าถึงแบบละเอียดในระบบไฟล์ ของอุปกรณ์ได้