SOME/IP स्टैक लागू करना

SOME/IP ट्रांसपोर्ट स्टैक, Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) इंटरफ़ेस (ISomeIpStack) के ज़रिए, लो-लेवल SOME/IP वायर प्रोटोकॉल और नेटवर्क लॉजिक को मैनेज करता है. यह स्टैक, SOME/IP इवेंट और रिमोट प्रोसीजर कॉल (आरपीसी) भेजता और पाता है. पार्टनर, ISomeIpStack के ज़रिए कस्टम SOME/IP स्टैक इंटिग्रेट कर सकते हैं. इसके अलावा, वे ओपन-सोर्स COVESA vsomeip लाइब्रेरी पर आधारित, शामिल किए गए रेफ़रंस इंप्लीमेंटेशन का इस्तेमाल कर सकते हैं. इस पेज पर, इन विषयों के बारे में बताया गया है:

  • रेफ़रंस के तौर पर लागू करना: SDV, SOME/IP स्टैक के लिए नॉन-प्रोडक्शन रेफ़रंस सैंपल लागू करने की सुविधा देता है.

  • Binder API: ISomeIpStack इंटरफ़ेस, SOME/IP स्टैक इंस्टेंस के साथ इंटरैक्ट करने के तरीके तय करता है.

  • SELinux: रेफ़रंस स्टैक के लिए SELinux कॉन्फ़िगरेशन का एक सैंपल, बाइंडर कम्यूनिकेशन और फ़ाइल सिस्टम के ऐक्सेस को चालू करता है.

यह स्टैक, SOME/IP वायर फ़ॉर्मैट को पढ़ता है. हालांकि, यह पेलोड को ओपेक बाइनरी ब्लॉब के तौर पर छोड़ देता है और पेलोड को SOME/IP ब्रोकर को फ़ॉरवर्ड कर देता है.

SOME/IP स्टैंडर्ड में, स्टैक या स्टैक एपीआई लेयर की कोई परिभाषा नहीं दी गई है. SDV, एक AIDL एपीआई उपलब्ध कराता है. यह स्टैंडर्ड की जानी-पहचानी परिभाषाओं के हिसाब से काम करता है. साथ ही, मौजूदा स्टैक को अडैप्ट करने के लिए, इसमें कोड की कम से कम ज़रूरत होती है.

इस एपीआई की मदद से, स्टैक के अलग-अलग वर्शन चुने जा सकते हैं. साथ ही, सिस्टम के अन्य कॉम्पोनेंट के साथ स्टैक को इंटिग्रेट करना आसान हो जाता है.

रेफ़रंस के तौर पर लागू करना

SDV, SOME/IP स्टैक के लिए नॉन-प्रोडक्शन रेफ़रंस सैंपल लागू करने की सुविधा देता है. इसमें ओपन सोर्स COVESA vsomeip लाइब्रेरी के ऊपर एक थिन रैपर होता है. सिस्टम, रेफ़रंस स्टैक को सिर्फ़ sdv_core_cf और sdv_core_arm64 टारगेट पर डिप्लॉय करता है. साथ ही, init.rc इसे CID=3 के साथ VM पर शुरू करता है.

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

अपने ओईएम के तय किए गए स्टैक के लिए, प्रोडक्शन डिप्लॉयमेंट कॉन्फ़िगरेशन तय करें. ज़्यादा जानने के लिए, 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 इससे एसडीवी सेवा की उपलब्धता में बदलाव के बारे में पता चलता है.

रिमोट प्रोसीजर कॉल (आरपीसी)

इनके साथ आरपीसी अनुरोध भेजा जा सकता है:

  • rpc_transact को जवाब का इंतज़ार करना होगा
  • rpc_oneway को जवाब का इंतज़ार न करने के लिए

RPC अनुरोध को मैनेज करने के लिए:

  • register_rpc_request_callback यह इनकमिंग आरपीसी अनुरोधों के लिए कॉलबैक रजिस्टर करता है.

  • unregister_rpc_request_callback आरपीसी अनुरोध के कॉलबैक का रजिस्ट्रेशन रद्द करता है.

इवेंट की सूचना

  • register_event_notification_callback सदस्यता लिए गए इवेंट की सूचनाओं के लिए कॉलबैक रजिस्टर करता है.

  • unregister_event_notification_callback गतिविधि की सूचना देने वाले कॉलबैक का रजिस्ट्रेशन रद्द करता है.

  • on_sdv_topic_availability इससे पता चलता है कि एसडीवी के विषय की उपलब्धता में बदलाव हुआ है.

  • 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 बाइनरी और डेटा फ़ोल्डर को सही कॉन्टेक्स्ट में मैप करता है.

यह कॉन्फ़िगरेशन स्टैक और ब्रोकर के बीच बाइंडर कम्यूनिकेशन चालू करता है. इससे डिवाइस के फ़ाइल सिस्टम को नेटवर्किंग की क्वालिटी और विस्तृत ऐक्सेस मिलता है.