खास प्रॉपर्टी

वेंडर की प्रॉपर्टी

पार्टनर की खास ज़रूरतों को पूरा करने के लिए, वीएचएएल उन वेंडर प्रॉपर्टी को ऐक्सेस करने की अनुमति देता है जिन्हें ऐक्सेस किया जा सकता है सिर्फ़ सिस्टम एपीआई की मदद से. वेंडर की प्रॉपर्टी के साथ काम करते समय इन दिशा-निर्देशों का पालन करें:

  • हमेशा सिस्टम की प्रॉपर्टी पहले इस्तेमाल करें. वेंडर की प्रॉपर्टी का इस्तेमाल आखिरी विकल्प के तौर पर किया जाना चाहिए जब कोई भी सिस्टम प्रॉपर्टी आपकी ज़रूरत को पूरा नहीं करती हो.
  • नेटवर्क को बिगाड़ने से रोकने के लिए, वाहन की कॉपी बनाने के लिए वेंडर की प्रॉपर्टी का इस्तेमाल नहीं किया जाना चाहिए ऐसी प्रॉपर्टी जो SDK टूल में पहले से मौजूद हैं गाड़ी प्रॉपर्टी के आईडी. इस बारे में ज़्यादा जानने के लिए, सेक्शन देखें 2.5, CDD में वाहन संबंधित ज़रूरी शर्तें.
  • प्रॉपर्टी आईडी जनरेट करने के लिए, इन फ़ील्ड का इस्तेमाल करें:
    • VehiclePropertyGroup:VENDOR VENDOR ग्रुप का इस्तेमाल सिर्फ़ वेंडर प्रॉपर्टी के लिए किया जाता है.
    • VehicleArea अपने हिसाब से एरिया टाइप चुनें.
    • VehiclePropertyType सही डेटा टाइप चुनें. BYTES टाइप की मदद से, रॉ डेटा पास किया जा सकता है, जो ज़्यादातर मामलों में काफ़ी होता है. वेंडर प्रॉपर्टी के ज़रिए अक्सर ज़्यादा डेटा भेजने से, वाहन के पूरे नेटवर्क का ऐक्सेस धीमा हो सकता है. बड़ा पेलोड जोड़ते समय सावधानी बरतें.
    • Property ID वेंडर प्रॉपर्टी के लिए, दो बाइट वाला यूनीक आईडी चुनें. उदाहरण के लिए, 0x1234.
  • वेंडर के बारे में कम शब्दों में जानकारी के साथ, VehiclePropConfig.configString भरें प्रॉपर्टी. इससे, पुष्टि करने वाले टूल, वाहन की मौजूदा प्रॉपर्टी के अनजाने में डुप्लीकेट बनने की जानकारी दे सकते हैं. उदाहरण के लिए, "XYZ के लिए मेरी कस्टम प्रॉपर्टी."
  • इसके ज़रिए ऐक्सेस करें कारप्रॉपर्टी मैनेजर (Java कॉम्पोनेंट के लिए) या libvhalclient (नेटिव के लिए). कार के अन्य एपीआई में बदलाव न करें. ऐसा करने से, आने वाले समय में कार के साथ काम करने से जुड़ी समस्याएं हो सकती हैं.

वेंडर प्रॉपर्टी के लिए अनुमति

तय की गई किसी भी वेंडर प्रॉपर्टी के लिए, डिफ़ॉल्ट अनुमति android.car.Car.PERMISSION_VENDOR_EXTENSION होती है. अनुमति को बेहतर तरीके से कंट्रोल करने के लिए, SUPPORT_CUSTOMIZE_VENDOR_PERMISSION प्रॉपर्टी का इस्तेमाल करें. यह आंकड़े प्रॉपर्टी रीड-ओनली होती है, जिसके लिए इसकी कॉन्फ़िगरेशन अरे वेंडर प्रॉपर्टी के लिए अनुमतियां तय करती है. configArray को इस तरह सेट किया जाता है (i एक पूर्णांक है, जो 0 से शुरू होता है):

  • configArray[3 * i] propId, वेंडर प्रॉपर्टी का प्रॉपर्टी आईडी है.
  • configArray[3 * i + 1] VehicleVendorPermission.aidl में एक सूची यह प्रॉपर्टी की वैल्यू पढ़ने की अनुमति बताता है.
  • configArray[3 * i + 2] VehicleVendorPermission.aidl में एक सूची यह प्रॉपर्टी की वैल्यू लिखने की अनुमति देता है.

उदाहरण के लिए, नीचे दिया गया कॉन्फ़िगरेशन कलेक्शन, अनुमतियां पाने के लिए दो वेंडर प्रॉपर्टी, vendor_prop_1 और vendor_prop_2 को कॉन्फ़िगर करता है:

  • vendor_prop_1 को पढ़ने के लिए android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT और लिखने के लिए android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT की अनुमति चाहिए.
  • vendor_prop-2 को पढ़ने के लिए, android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO की ज़रूरत होती है और Android ऐप्लिकेशन के लिए, इसमें बदलाव नहीं किया जा सकता.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

वेंडर प्रॉपर्टी इस कलेक्शन में नहीं हैं, इसलिए डिफ़ॉल्ट वेंडर अनुमति लें. टास्क कब शुरू होगा PERMISSION_NOT_ACCESSIBLE को चुना गया है. Android ऐप्लिकेशन, प्रॉपर्टी को ऐक्सेस नहीं कर सकते. उदाहरण में, Android ऐप्लिकेशन vendor_prop_2 के लिए कोई वैल्यू नहीं लिख सकते. सिर्फ़ नेटिव VHAL क्लाइंट इस प्रॉपर्टी के लिए संपर्क कर सकते हैं.

ड्राइवर की सुरक्षा में मदद करने वाले बेहतर सिस्टम (एडीएएस)

ADAS वाहन की प्रॉपर्टी देखें.

सीट और स्टीयरिंग

सीट और स्टीयरिंग व्हील की प्रॉपर्टी देखें.

एचवीएसी

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

प्रॉपर्टी मकसद
HVAC_TEMPERATURE_SET हर इलाके के आईडी के हिसाब से तापमान सेट करें.
HVAC_POWER_ON हर एरिया आईडी के हिसाब से, एचवीएसी सिस्टम के पावर की स्थिति.

एचवीएसी सिस्टम की पावर स्टेटस पर निर्भर एचवीएसी प्रॉपर्टी के लिए, उन्हें HVAC_POWER_ON कॉन्फ़िगरेशन कलेक्शन में शामिल करना ज़रूरी है. एचवीएसी प्रॉपर्टी की पूरी सूची देखने के लिए, VehicleProperty.aidl में HVAC_* खोजें, देखें इस्तेमाल की जा सकने वाली सिस्टम प्रॉपर्टी. प्रॉपर्टी.

नॉन-ग्लोबल व्हीकल एरिया टाइप की एचवीएसी प्रॉपर्टी को एरिया आईडी के साथ मैप करने के नियम: प्रॉपर्टी के हिसाब से प्रभावित होने वाले खास VehicleArea टाइप के लिए, हर “देश/इलाका” यह होना चाहिए शामिल किया गया है. तापमान कंट्रोलर इन्हें असाइन किए जाते हैं: ऐसी सीटें जिन पर वे "सबसे ज़्यादा असर" डालते हैं. हालांकि, हर प्रभावित सीट को सिर्फ़ एक बार शामिल किया जाना चाहिए. पीछे की बीच वाली सीट को बाईं या दाईं ओर एरिया आईडी असाइन करना एक मनमुताबिक लग सकता है, लेकिन हर प्रभावित सीट को सिर्फ़ एक एरिया आईडी में शामिल करने से यह पक्का हो जाता है कि सीटें पूरी जानकारी कार में दी गई है. साथ ही, हर सीट पर असर डालने का सही तरीका मौजूद है.

पहला उदाहरण

कार में दो आगे की सीटें (ROW_1_LEFT, ROW_1_RIGHT) और तीन पीछे की सीटें (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) हैं. तापमान को कंट्रोल करने की दो यूनिट हैं. हर यूनिट के लिए एक-एक है ड्राइवर साइड और यात्री साइड. HVAC_TEMPERATURE_SET के लिए, AreaIDs का मान्य मैपिंग सेट, दो एलिमेंट वाला कलेक्शन होगा:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

एक ही हार्डवेयर कॉन्फ़िगरेशन के लिए, वैकल्पिक मैपिंग इस तरह होगी:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

दूसरा उदाहरण

कार में तीन सीट की लाइनें हैं. इनमें पहली लाइन (ROW_1_LEFT, ROW_1_RIGHT) में दो सीटें, दूसरी (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) और तीसरी लाइन (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT) में तीन-तीन सीटें हैं. तापमान कंट्रोल करने वाली तीन यूनिट होती हैं. ये ड्राइवर की तरफ़, पैसेंजर की तरफ़, और पीछे की सीट के लिए होती हैं. HVAC_TEMPERATURE_SET को AreaIDs पर मैप करने का एक सही तरीका, तीन एलिमेंट वाला कलेक्शन है:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

तीसरा उदाहरण

कार में दो आगे की सीटें (ROW_1_LEFT, ROW_1_RIGHT) और तीन पीछे की सीटें (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) हैं. मान लें कि कार में सिर्फ़ दो आगे की सीटों के लिए, HVAC_AUTO_ON की सुविधा काम करती है. HVAC_AUTO_ON के लिए, AreaIDs का मान्य मैपिंग सेट एक एलिमेंट वाला ऐरे होगा:

  • ROW_1_LEFT | ROW_1_RIGHT

अगर HVAC_AUTO_ON में ड्राइवर साइड और पैसेंजर साइड के लिए दो अलग-अलग कंट्रोल यूनिट हैं, तो वैकल्पिक मैपिंग दो एलिमेंट के कलेक्शन के तौर पर होगी:

  • ROW_1_LEFT
  • ROW_1_RIGHT

INFO_EXTERIOR_DIMENSIONS

वाहन के बाहरी डाइमेंशन को मिलीमीटर में मेज़र किया जाता है, जैसा कि पहली इमेज में दिखाया गया है.

पहली इमेज. वाहन के बाहरी डाइमेंशन, आगे का व्यू.
दूसरी इमेज. वाहन के बाहरी हिस्से के डाइमेंशन, साइड व्यू.

किसी वाहन का बाहरी हिस्सा बताने के लिए, इस टेबल में बताई गई प्रॉपर्टी का इस्तेमाल करें डाइमेंशन.

वाहन की प्रॉपर्टी VHAL फ़ील्ड ब्यौरा
लंबाई int32Values[0] वाहन की ज़मीन और सबसे ऊपरी जगह के बीच की वर्टिकल दूरी. यह माना जाता है जिससे फ़ैक्ट्री के पहिए आम तौर पर बढ़ जाते हैं.
लंबाई int32Values[1] वाहन के आगे और पीछे के सबसे बाहरी पॉइंट के बीच हॉरिज़ॉन्टल दूरी.
चौड़ाई, मिरर को छोड़कर int32Values[2] वाहन की दोनों तरफ़ सबसे बाहरी दो पॉइंट के बीच की हॉरिज़ॉन्टल दूरी. इसमें साइड मिरर शामिल नहीं हैं.
चौड़ाई, जिसमें मिरर भी शामिल हैं int32Values[3] वाहन के दोनों तरफ़ दो सबसे बाहरी बिंदुओं के बीच की हॉरिज़ॉन्टल दूरी, साथ ही, साइड मिरर भी लगा सकते हैं.
व्हील बेस int32Values[4] वाहन के सामने और पीछे के पहियों के बीच की दूरी.
ट्रैक की चौड़ाई, सामने से int32Values[5] सामने के पहिये के बीच की दूरी, जिसे एक टायर के ट्रेड की सेंटर लाइन से दूसरे टायर के ट्रेड की सेंटर लाइन तक मापा जाता है.
पीछे के टायर की चौड़ाई int32Values[6] कार के पीछे के व्हील के बीच की दूरी, एक टायर की मध्य रेखा से दूसरे टायर ट्रेड की बीच की लाइन.
कर्ब-टू-कर्ब डाइमीटर int32Values[7] पूरा मोड़ लेते समय, वाहन के बाहरी पहियों से बने गोले का व्यास जिसमें स्टीयरिंग व्हील पूरी तरह लॉक हो.

यूरोपीय संघ के सामान्य सुरक्षा कानून का पालन

अगर गाड़ी को Android की मदद से, यूरोपियन यूनियन के जनरल सेफ़्टी रेगुलेशन (GSR) की ज़रूरी शर्तों का पालन करना है, तो प्रॉपर्टी GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT के साथ काम करने की सुविधा होनी चाहिए. इस्तेमाल के उदाहरण के तौर पर, ईयू रेगुलेशन 2019/2144 में बताए गए GSR-ISA (इंटेलिजेंट स्पीड असिस्ट) को शामिल किया जा सकता है. यह प्रॉपर्टी, Android 13 से AIDL VHAL में जोड़ी गई है. हालांकि, यह Android 12 के रिलीज़ होने के बाद से, Car Service में काम करती है. इस प्रॉपर्टी को सिर्फ़ पढ़ने के लिए तय किया गया है स्टैटिक ग्लोबल पूर्णांक प्रॉपर्टी, जिसमें GsrComplianceRequirementType enum:

नाम वैल्यू ब्यौरा
GSR_COMPLIANCE_NOT_REQUIRED 0 जीएसआर का पालन करना ज़रूरी नहीं है
GSR_COMPLIANCE_REQUIRED_V1 1 जीएसआर का पालन करना ज़रूरी है और ज़रूरी शर्तों के समाधान का वर्शन 1 है.

Android 12 में HIDL VHAL में इस प्रॉपर्टी का इस्तेमाल करने के लिए, वेंडर को प्रॉपर्टी आईडी को हार्ड-कोड करना होगा. उदाहरण के लिए, नीचे दिया गया स्निपेट दिखाता है कि रेफ़रंस HIDL में यह कैसे काम करता है वीएचएएल DefaultConfig.h:

{
  .config =
      {
          // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
          .prop = 0x11400F47,
          .access = VehiclePropertyAccess::READ,
          .changeMode = VehiclePropertyChangeMode::STATIC,
      },
  // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
  .initialValue = {.int32Values = {1}},
}

Android 13 वर्शन में इस प्रॉपर्टी को AIDL VHAL में इस्तेमाल करने के लिए, वेंडर इससे प्रॉपर्टी आईडी का इस्तेमाल कर सकते हैं: VehicleProperty.h और GsrComplianceRequirementType.h से डेटा इकट्ठा किया गया. इसके लिए उदाहरण, जैसा कि AIDL VHAL DefaultProperties.json:

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

इस प्रॉपर्टी को किसी Android ऐप्लिकेशन से पढ़ने के लिए, इसका इस्तेमाल करें CarPropertyManager.getIntProperty.

  • Android 13 और उसके बाद के वर्शन में, प्रॉपर्टी आईडी के तौर पर VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE का इस्तेमाल करें.
  • Android 12 में, प्रॉपर्टी आईडी के तौर पर, हार्ड-कोड की गई वैल्यू 0x11400F47 का इस्तेमाल करें. यह प्रॉपर्टी के लिए अनुमति की ज़रूरत है, Car#PERMISSION_CAR_INFO.