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

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

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

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

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

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

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

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

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

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

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

ओईएम की ओर से तय किए गए स्टैक के लिए, प्रोडक्शन डिप्लॉयमेंट कॉन्फ़िगरेशन तय करें. ज़्यादा जानने के लिए, SDV के साथ SOME/IP को इंटिग्रेट करना लेख पढ़ें.

कॉन्फ़िगरेशन

रेफ़रंस स्टैक, vSomeIP लाइब्रेरी के लिए एक कॉन्फ़िगरेशन का एलान करता है. कॉन्फ़िगरेशन स्ट्रक्चर के बारे में जानने के लिए, कॉन्फ़िगरेशन फ़ाइल का स्ट्रक्चर देखें . कॉन्फ़िगरेशन के तहत, हम SOME/IP एसडी पैरामीटर तय करते हैं. जैसे, मल्टीकास्ट पता और स्टैक के लिए इस्तेमाल किया जाने वाला पोर्ट.

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_transact का इस्तेमाल करके, जवाब का इंतज़ार किया जा सकता है
  • rpc_oneway का इस्तेमाल करके, जवाब का इंतज़ार नहीं किया जा सकता

आरपीसी के अनुरोध को मैनेज करने के लिए:

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

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

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

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

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