मुख्य कोड सैंपल

/system/software_defined_vehicle/samples में मौजूद SDV Core services के कोड सैंपल की मदद से, अपनी सेवाएं बनाई जा सकती हैं. हर सैंपल में एक README फ़ाइल होती है, जिसमें इस्तेमाल के उदाहरण के बारे में बताया जाता है.

सैंपल डायरेक्ट्री के बारे में खास जानकारी

इस टेबल में, system/software_defined_vehicle/samples में मौजूद रेफ़रंस सैंपल डायरेक्ट्री और उनसे जुड़े दस्तावेज़ों की गाइड की सूची दी गई है:

सैंपल डायरेक्ट्री ब्यौरा दस्तावेज़ों के बारे में गाइड
system/software_defined_vehicle/samples/quickstart एंड-टू-एंड Rust सर्विस बंडल का सैंपल, जिसमें Manager और Monitor बंडल के बीच वीएसआईडीएल पब्लिकेशन, सदस्यता, और आरपीसी को दिखाया गया है. क्विक स्टार्ट: एसडीवी सर्विस बंडल बनाना और उन्हें लागू करना
system/software_defined_vehicle/samples/vsidl VSIDL कैटलॉग, protobuf डेफ़िनिशन, और सर्विस बंडल को लागू करने के पैटर्न देखें. कारोबारी नियम लागू करना
system/software_defined_vehicle/samples/concal वाहन के कॉन्फ़िगरेशन और कैलिब्रेशन पैरामीटर को पढ़ने और अपडेट करने के लिए क्लाइंट सैंपल. कॉन्फ़िगरेशन और कैलिब्रेशन
system/software_defined_vehicle/samples/health सेहत की निगरानी करने वाली सेवा का बंडल और सेवा की क्वालिटी (QoS) की निगरानी करने वाले सैंपल. सेहत की देखभाल करने से जुड़े ऐप्लिकेशन
system/software_defined_vehicle/samples/oem_partition_update_client sdv_oem_updater क्रेट का इस्तेमाल करने वाली सैंपल सेवा, ताकि /oem_ab पार्टिशन के अपडेट ट्रिगर और रोल बैक किए जा सकें. ओईएम के AB पार्टिशन से जुड़े अपडेट
system/software_defined_vehicle/samples/sdv_gateway नेटिव और Java आईवीआई के सैंपल ऐप्लिकेशन (NativeSdvGatewayTestApp और SdvCarMonitorTestApp), जो SDV Gateway के ज़रिए SDV Core की सेवाओं के साथ कम्यूनिकेट करते हैं. आईवीआई पर एसडीवी गेटवे का इस्तेमाल करना
system/software_defined_vehicle/samples/telemetry डिवाइस पर मौजूद टेलीमेट्री डेटा सोर्स और सिम्युलेटर के सैंपल. डेटा सोर्स

लॉगिंग एपीआई का इस्तेमाल करना

दिए गए निर्देशों के बारे में ज़्यादा जानने के लिए, यहां जाएं:

बुनियादी लॉग का सैंपल

logging.cpp, main, system, और radio बफ़र में डेटा लिखने की सुविधा देता है. उपलब्ध लॉग बफ़र के बारे में कम शब्दों में जानकारी पाने के लिए, अन्य लॉग बफ़र देखें पर जाएं.

  • ALOGI_IF जैसे कंडीशनल लॉग के बिना सैंपल चलाने के लिए:

    logging_sdv_sample
    
  • सैंपल चलाने और कंडिशनल लॉग प्रिंट करने के लिए, जैसे कि ALOGI_IF:

    LOGIF=1 logging_sdv_sample
    

स्ट्रक्चर्ड लॉगिंग का सैंपल

सैंपल फ़ाइल: structured_logging.cpp

  • सैंपल को चलाने के लिए, जो events लॉग बफ़र में लॉग लिखता है:

    structured_logging_sdv_sample
    

event, security, और stats लॉग बफ़र में, फ़्री टेक्स्ट के बजाय स्ट्रक्चर्ड डेटा होता है.

स्ट्रक्चर्ड डेटा को इवेंट लिस्ट एपीआई का इस्तेमाल करके लॉग किया जाता है. इसे हमेशा INFO प्राथमिकता और अंकों वाले टैग आईडी के साथ लॉग किया जाता है.

.logtags फ़ाइल को Android.bp. में logtags एट्रिब्यूट की मदद से तय किया जा सकता है. अगर यह एट्रिब्यूट दिया जाता है, तो logcat इसका इस्तेमाल करके, अंकों वाले टैग आईडी से टैग का नाम निकालता है. इसके बाद, टैग के नाम का इस्तेमाल करके, स्ट्रक्चर्ड लॉग को फ़िल्टर किया जा सकता है. फ़ाइल फ़ॉर्मैट की जानकारी और ब्यौरे के लिए, logcat event.logtags फ़ाइल में मौजूद टिप्पणी देखें.

बिल्ड प्रोसेस के दौरान, सभी logtags फ़ाइलों को मर्ज करके, Android सिस्टम इमेज में /system/etc/event-log-tags फ़ाइल में डाल दिया जाता है.

टाइम लॉग फ़िल्टर करने का सैंपल कंपाइल करना

सैंपल फ़ाइल: compile_time_log_filtering.cpp

इस सैंपल में मैक्रो शामिल हैं. इन्हें अडजस्ट करके, एक्ज़ीक्यूटेबल से कुछ लॉग हटाए जा सकते हैं. ज़्यादा जानकारी के लिए, सोर्स कोड देखें.

लॉग फ़िल्टर करने का सैंपल: log_filtering.cpp

  • सैंपल को चलाने के लिए, लॉग की प्राथमिकता को कम से कम WARN पर सेट करें:

    LOGLEVEL=WARN log_filtering_sdv_sample
    

लॉग फ़िल्टर करने की सुविधा पर, सिस्टम प्रॉपर्टी का असर पड़ता है. वाले सभी लॉग के लिए:

  • log.tag.<tag>
  • persist.log.tag.<tag>

सिस्टम के सभी लॉग के लिए:

  • log.tag
  • persist.log.tag

चुने गए लॉग लेवल को चुनने के लिए, हर वैल्यू को V, D, I, W या E पर सेट किया जा सकता है. इन्हें क्रम से चुना जाता है.

प्रभावी लॉग लेवल, पहली सिस्टम प्रॉपर्टी पर सेट किया गया लेवल होता है. इसमें कोई वैल्यू होती है, जो __android_log_set_minimum_priority कॉल के साथ ऐप्लिकेशन से सेट किए गए लॉग लेवल से कम या ज़्यादा हो सकती है. अगर कोई भी प्रॉपर्टी सेट नहीं की गई है, तो __android_log_set_minimum_priority के साथ कॉन्फ़िगर किया गया लेवल लागू होता है.

ज़्यादा जानकारी के लिए, लॉगिंग सिस्टम की खास जानकारी देखें.

  • सैंपल चलाएं और डिफ़ॉल्ट लॉग टैग को example_tag पर सेट करें:

    LOGTAG=example_tag log_filtering_sdv_sample
    

सैंपल में, टिप्पणी के तौर पर मार्क की गई LOG_TAG मैक्रो डेफ़िनिशन भी शामिल है. इसका इस्तेमाल करके, सभी लॉग मैसेज के लिए लॉग टैग सेट किया जा सकता है. इस तरह से सेट किया गया टैग, रनटाइम के दौरान __android_log_set_default_tag की मदद से सेट किए गए टैग को बदल देता है.

अगर LOG_TAG मैक्रो तय नहीं किया गया है और ऐप्लिकेशन __android_log_set_default_tag को कॉल नहीं करता है, तो डिफ़ॉल्ट टैग getprogname() का नतीजा होता है. उदाहरण के लिए, एक्ज़ीक्यूटेबल फ़ाइल का नाम.