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

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

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

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

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

तय की गई किसी भी वेंडर प्रॉपर्टी के लिए, डिफ़ॉल्ट अनुमति android.car.Car.PERMISSION_VENDOR_EXTENSION होती है. अनुमति को बेहतर तरीके से कंट्रोल करने के लिए, SUPPORT_CUSTOMIZE_VENDOR_PERMISSION प्रॉपर्टी का इस्तेमाल करें. यह STATIC प्रॉपर्टी रीड-ओनली होती है. इसके कॉन्फ़िगरेशन कलेक्शन में, वेंडर प्रॉपर्टी के लिए अनुमतियां तय की जाती हैं. 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 टाइप की एचवीएसी प्रॉपर्टी को AreaIDs पर मैप करने के नियम: प्रॉपर्टी से जिन 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 एनम से तय की जाती हैं:

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

Android 12 में, एचआईडीएल वीएचएएल में इस प्रॉपर्टी का इस्तेमाल करने के लिए, वेंडर को प्रॉपर्टी आईडी को हार्ड-कोड करना होगा. उदाहरण के लिए, यहां दिए गए स्निपेट में दिखाया गया है कि रेफ़रंस HIDL VHAL 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 से, एआईडीएल वीएचएएल में इस प्रॉपर्टी का इस्तेमाल करने के लिए, वेंडर VehicleProperty.h से प्रॉपर्टी आईडी और GsrComplianceRequirementType.h से एनम का इस्तेमाल कर सकते हैं. उदाहरण के लिए, रेफ़रंस एआईडीएल वीएचएएल 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 की अनुमति ज़रूरी है.