SDV टेलीमेट्री, कई तरह के डेटा सोर्स के साथ काम करती है. इस पेज पर, इन टाइप के बारे में खास जानकारी दी गई है. साथ ही, यह भी बताया गया है कि टेलीमेट्री, डेटा सोर्स के हर टाइप के लिए किन सुविधाओं के साथ काम करती है.
डेटा सोर्स लागू करने के लिए सैंपल कोड, system/software_defined_vehicle/samples/telemetry डायरेक्ट्री में उपलब्ध है.
मेट्रिक कॉन्फ़िगरेशन में डेटा सोर्स की परिभाषा
मेट्रिक कॉन्फ़िगरेशन, मेट्रिक इकट्ठा करने के लिए एक या उससे ज़्यादा डेटा सोर्स तय करते हैं. हर डेटा सोर्स की पहचान उसके source_identifier से होती है. source_identifier का फ़ॉर्मैट, डेटा सोर्स के हिसाब से तय होता है:
| डेटा सोर्स | फ़ॉर्मैट | ब्यौरा | उदाहरण |
|---|---|---|---|
| SDV सेवा | Protobuf मैसेज का नाम |
प्रोटोबफ़ मैसेज का पूरी तरह क्वालिफ़ाइड नाम. अगर सेवा के एक से ज़्यादा इंस्टेंस हैं, तो सेवा यूनिट का नाम पाइप (|) से अलग करके जोड़ें.
|
"com.sdv.google.example.TellTale|com-sdv-google-example-tell-tale-status-hibeam"
|
| पूरी तरह क्वालिफ़ाइड इंस्टेंस का नाम (FQIN) और सेवा यूनिट का नाम |
पाइप (|) से अलग किया गया FQIN और सेवा यूनिट का नाम.
|
"vm-cdc:com.google.android.sdv.pubsub.SomeService/instance1|tire-pressure"
|
|
| कॉन्फ़िगर की जा सकने वाली Publisher Registry पर आधारित पब्लिशर | पब्लिशर का नाम | Configurable Publisher Registry में पब्लिशर को रजिस्टर करने के लिए इस्तेमाल किया गया सटीक serviceName. |
कोई भी स्ट्रिंग मान्य होती है. |
हर डेटा सोर्स के लिए, मैसेज वापस पाने की प्रोसेस को पैरामीटर के हिसाब से सेट अप करने के लिए, इन विकल्पों का इस्तेमाल किया जा सकता है. एक ही मेट्रिक कॉन्फ़िगरेशन में, एक ही डेटा सोर्स को अलग-अलग विकल्पों के साथ कई बार तय किया जा सकता है. उदाहरण के लिए, आपके पास यह विकल्प होता है कि एज प्रोसेसिंग के कुछ हिस्से में, सब-सैंपलिंग के लिए किसी दूसरे इंटरवल का इस्तेमाल किया जाए.
| विकल्प | प्रकार | ब्यौरा |
|---|---|---|
connection_type |
SUBSCRIPTION या ON_DEMAND |
SUBSCRIPTION पर सेट होने पर, टेलीमेट्री सेवा डेटा सोर्स की सदस्यता लेती है. ON_DEMAND पर सेट होने पर, टेलीमेट्री सेवा सिर्फ़ मांग पर डेटा सोर्स से मैसेज फ़ेच करती है. |
configuration |
google.protobuf.Any |
अगर इसे सेट किया जाता है, तो टेलीमेट्री सेवा, कॉन्फ़िगरेशन ऑब्जेक्ट को डेटा सोर्स को पास करती है. ऐसा तब होता है, जब वह डेटा सोर्स से कम्यूनिकेट करती है. |
sub_sampling_interval |
google.protobuf.Duration |
अगर यह विकल्प सेट किया जाता है, तो मैसेज का सब-सैंपल लिया जाता है, ताकि टेलीमेट्री सेवा हर sub_sampling_interval अवधि में ज़्यादा से ज़्यादा एक मैसेज प्रोसेस करे. |
fetch_last_message |
bool |
अगर यह विकल्प सेट है, तो टेलीमेट्री सेवा, डेटा सोर्स की सदस्यता लेते समय पब्लिश किया गया आखिरी मैसेज वापस पा लेती है. भले ही, वह मैसेज पहले पब्लिश किया गया हो. |
डेटा सोर्स के टाइप के आधार पर (नीचे दिए गए सेक्शन देखें), टेलीमेट्री सेवा सिर्फ़ पैरामीटर के सबसेट के साथ काम करती है. इस टेबल में खास जानकारी दी गई है.
| विकल्प | RPC SDV सेवा | पब्लिश-सब्सक्राइब (pub/sub) एसडीवी सेवा | कॉन्फ़िगर किए जा सकने वाले Publisher Registry-आधारित पब्लिशर |
|---|---|---|---|
connection_type: SUBSCRIPTION |
1 के साथ काम करता है | समर्थित | समर्थित |
connection_type: ON_DEMAND |
2 के साथ काम करता है | समर्थित | 3 का इस्तेमाल किया जा सकता है |
configuration |
समर्थित | लागू नहीं | समर्थित |
sub_sampling_interval |
अनुमति नहीं है | 4 के साथ काम करता है | अनुमति नहीं है |
fetch_last_message |
अनुमति नहीं है | 5 का इस्तेमाल किया जा सकता है | अनुमति नहीं है |
CreateSubscription वाला तरीका लागू किया है, तो इसका इस्तेमाल किया जा सकता है.
GetLatestMessage वाला तरीका लागू किया है, तो यह काम करेगा.
PublisherInfo.supportsGet true है, तो यह सुविधा काम करती है.
connection_type: SUBSCRIPTION के लिए उपलब्ध है, लेकिन connection_type: ON_DEMAND के लिए उपलब्ध नहीं है.
connection_type: SUBSCRIPTION के लिए काम करता है, लेकिन connection_type: ON_DEMAND के लिए लागू नहीं होता.
SDV सेवाएं (SDV कम्यूनिकेशन स्टैक के ज़रिए)
टेलीमेट्री सेवा, अन्य एसडीवी सेवाओं से डेटा इकट्ठा कर सकती है. आरपीसी और pub/sub, दोनों एसडीवी सेवाओं के साथ काम करती है. टेलीमेट्री सेवा को यह नहीं पता होता कि बिल्ड प्रोसेस में लगने वाले समय पर वह किन सेवाओं की सदस्यता लेगी. इसलिए, यह एसडीवी सेवाओं से मिले मैसेज को डिकोड करने के लिए, Protobuf रिफ़्लेक्शन पर निर्भर करती है.
SDV सेवाएं, डिफ़ॉल्ट रूप से रिफ़्लेक्शन मेटाडेटा उपलब्ध नहीं कराती हैं. एसडीवी सेवा को टेलीमेट्री डेटा सोर्स के तौर पर इस्तेमाल करने के लिए, आपको सेवा के VSIDL कैटलॉग के रनटाइम कॉन्फ़िगरेशन जनरेशन को चालू करना होगा. ज़्यादा जानकारी के लिए, VSIDL Provider Guide for Service Bundle Developers देखें.
सिर्फ़ टेस्टिंग और आकलन के लिए, सेवा बंडल की परिभाषा में register_reflection_metadata विकल्प को true पर सेट किया जा सकता है. ज़्यादा जानकारी के लिए, सेवा का बंडल लेख पढ़ें.
RPC SDV सेवाएं
टेलीमेट्री, आरपीसी एसडीवी सेवाओं के लिए सीमित सहायता उपलब्ध कराती है. ज़्यादा जानकारी के लिए, आरपीसी सेवाओं को तय करना लेख पढ़ें. आरपीसी एसडीवी सेवा से डेटा इकट्ठा करने के लिए, सेवा को इनमें से एक या दोनों आरपीसी तरीकों को दिखाना होगा:
CreateSubscription, उपयोगकर्ता के तय किए गए जवाबों की स्ट्रीम दिखाता है:rpc CreateSubscription(<configuration>) returns (stream <response>)GetLatestMessage, उपयोगकर्ता की ओर से तय किया गया जवाब दिखाता है:rpc GetLatestMessage(<configuration>) returns (<response>)
कॉन्फ़िगरेशन आर्ग्युमेंट का इस्तेमाल करके, अपने डेटा सोर्स के व्यवहार को पैरामीटर के तौर पर इस्तेमाल किया जा सकता है. उदाहरण के लिए, पब्लिश करने की फ़्रीक्वेंसी के लिए अनुरोध करना या उस इकाई को चुनना जिसे आपको सब्सक्राइब करना है. उदाहरण के लिए, टायर के प्रेशर की जानकारी किस टायर से पढ़नी है.
मेट्रिक कॉन्फ़िगरेशन में, आरपीसी एसडीवी सेवा को डेटा सोर्स के तौर पर तय करते समय, डेटा सोर्स की परिभाषा में configuration वैल्यू तय की जा सकती है. इसका इस्तेमाल इस आरपीसी के लिए आर्ग्युमेंट के तौर पर किया जाता है. टेलीमेट्री सेवा, कॉन्फ़िगरेशन ऑब्जेक्ट को पारदर्शी तरीके से हैंडल करती है और आपके तय किए गए कॉन्फ़िगरेशन को पास करती है.
दोनों तरीकों के लिए, कॉन्फ़िगरेशन आर्ग्युमेंट का टाइप google.protobuf.Any या उपयोगकर्ता के तय किए गए टाइप में से कोई एक हो सकता है. अगर दोनों तरीकों का इस्तेमाल किया जाता है, तो आर्ग्युमेंट टाइप एक जैसे होने चाहिए. अगर आपको इन आरपीसी तरीकों के लिए कॉन्फ़िगरेशन आर्ग्युमेंट की ज़रूरत नहीं है, तो google.protobuf.Empty का इस्तेमाल करें.
मेट्रिक कॉन्फ़िगरेशन के डेटा सोर्स की परिभाषा में बताए गए connection_type के आधार पर, टेलीमेट्री सेवा CreateSubscription (connection_type: SUBSCRIPTION के लिए) या GetLatestMessage (connection_type: ON_DEMAND के लिए) को कॉल करती है.
Pub/Sub SDV सेवाएं
टेलीमेट्री, SDV सेवाओं के ज़रिए दिखाए गए VSIDL में तय किए गए पब/सब चैनलों की निगरानी करने की सुविधा देती है. इसके लिए, किसी अतिरिक्त कॉन्फ़िगरेशन की ज़रूरत नहीं होती. ज़्यादा जानकारी के लिए, किसी सेवा बंडल में पब्लिशर जोड़ना लेख पढ़ें.
टेलीमेट्री, pub/sub चैनलों की सदस्यता लेने के साथ-साथ, किसी चैनल पर पब्लिश किए गए नए मैसेज को ज़रूरत के हिसाब से वापस पाने की सुविधा भी देता है.
कॉन्फ़िगर की जा सकने वाली पब्लिशर रजिस्ट्री
SDV कम्यूनिकेशन स्टैक का इस्तेमाल करके SDV सेवाओं से डेटा इकट्ठा करने के अलावा, Telemetry उन ऐप्लिकेशन और सेवाओं से भी डेटा इकट्ठा कर सकता है जो Telemetry सेवा की कॉन्फ़िगर की जा सकने वाली पब्लिशर रजिस्ट्री में पब्लिशर के तौर पर रजिस्टर करती हैं. यह सुविधा, IVI पर सबसे ज़्यादा काम की होती है, जहां SDV कम्यूनिकेशन स्टैक उपलब्ध नहीं होता है.
कॉन्फ़िगर की जा सकने वाली पब्लिशर रजिस्ट्री, एसडीवी सेवा बंडल लिखे बिना डीबग करने और प्रोटोटाइपिंग के लिए भी काम आ सकती है. ज़्यादा जानकारी के लिए, कॉन्फ़िगर की जा सकने वाली पब्लिशर रजिस्ट्री देखें.