विशेष गुण

विक्रेता गुण

भागीदार-विशिष्ट आवश्यकताओं का समर्थन करने के लिए, वीएचएएल विक्रेता संपत्तियों की अनुमति देता है जिन्हें केवल सिस्टम एपीआई के माध्यम से एक्सेस किया जाता है। विक्रेता संपत्तियों के साथ काम करते समय निम्नलिखित दिशानिर्देशों का उपयोग करें:

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

विक्रेता संपत्तियों की अनुमति

किसी भी परिभाषित विक्रेता संपत्तियों के लिए डिफ़ॉल्ट अनुमति android.car.Car.PERMISSION_VENDOR_EXTENSION है। अनुमति नियंत्रण की सूक्ष्मता के लिए, SUPPORT_CUSTOMIZE_VENDOR_PERMISSION संपत्ति का समर्थन करें। यह STATIC प्रॉपर्टी केवल पढ़ने के लिए है, जिसके लिए इसकी कॉन्फ़िगरेशन सरणी विक्रेता संपत्तियों के लिए अनुमतियाँ निर्दिष्ट करती है। configArray इस प्रकार सेट किया गया है (i एक पूर्णांक है जो 0 से शुरू होता है):

  • configArray[3 * i] प्रोपआईडी, विक्रेता संपत्ति के लिए संपत्ति आईडी।
  • 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 ऐप्स प्रॉपर्टी तक नहीं पहुंच सकते। उदाहरण में, एंड्रॉइड ऐप्स vendor_prop_2 के लिए कोई मान नहीं लिख सकते हैं। केवल मूल वीएचएएल ग्राहक ही इस संपत्ति पर लिख सकते हैं।

उन्नत ड्राइवर सहायता प्रणाली (एडीएएस)

एडीएएस वाहन गुण देखें।

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

सीट और स्टीयरिंग व्हील गुण देखें।

एचवीएसी

आप एचवीएसी-संबंधित गुणों को सेट करके एचवीएसी को नियंत्रित करने के लिए वीएचएएल का उपयोग कर सकते हैं। अधिकांश एचवीएसी संपत्तियां वाहन के विशेष क्षेत्रों से जुड़ी हैं, हालांकि कई वैश्विक संपत्तियां हैं। नमूना परिभाषित गुणों में शामिल हैं:

संपत्ति उद्देश्य
HVAC_TEMPERATURE_SET प्रति क्षेत्र आईडी तापमान निर्धारित करें।
HVAC_POWER_ON प्रति क्षेत्र आईडी एचवीएसी सिस्टम की पावर स्थिति।

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

गैर-वैश्विक वाहनक्षेत्र प्रकार एचवीएसी संपत्तियों को एरियाआईडी में मैप करने के नियम: किसी विशिष्ट VehicleArea प्रकार के लिए प्रत्येक "क्षेत्र" जो संपत्ति से प्रभावित होता है, उसे उस संपत्ति के लिए एक क्षेत्र आईडी में शामिल किया जाना चाहिए। तापमान नियंत्रकों को उन सीटों पर नियुक्त किया जाता है जिन्हें वे "सबसे अधिक प्रभावित" करते हैं, लेकिन प्रत्येक प्रभावित सीट को ठीक एक बार शामिल किया जाना चाहिए। केंद्र की पिछली सीट को बाएँ या दाएँ एरियाआईडी में निर्दिष्ट करना मनमाना लग सकता है, लेकिन प्रत्येक प्रभावित सीट को बिल्कुल एक एरियाआईडी में शामिल करने से यह सुनिश्चित होता है कि कार में सभी सीटें व्यक्त की गई हैं और प्रत्येक सीट को प्रभावित करने का एक उचित तरीका उपलब्ध है।

उदाहरण 1

एक कार में दो आगे की सीटें (ROW_1_LEFT, ROW_1_दाएं) और तीन पीछे की सीटें (ROW_2_LEFT, ROW_2_CENTER, ROW_2_दाएं) होती हैं। दो तापमान नियंत्रण इकाइयाँ हैं, एक ड्राइवर पक्ष और यात्री पक्ष के लिए। HVAC_TEMPERATURE_SET के लिए एरियाआईडी का एक वैध मैपिंग सेट दो-तत्व सरणी होगा:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_दाएँ | ROW_2_CENTER | ROW_2_दाएं

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

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_दाएँ | ROW_2_दाएं

उदाहरण 2

एक कार में तीन सीटों वाली पंक्तियाँ हैं जिनमें आगे की पंक्ति में दो सीटें (ROW_1_LEFT, ROW_1_दाएँ) और दूसरी पंक्ति में तीन सीटें (ROW_2_LEFT, ROW_2_CENTER, ROW_2_दाएँ) और तीसरी पंक्तियाँ (ROW_3_LEFT, ROW_3_CENTER, ROW_3_दाएँ) हैं। तीन तापमान नियंत्रण इकाइयाँ हैं, ड्राइवर पक्ष, यात्री पक्ष और पीछे के लिए एक-एक। HVAC_TEMPERATURE_SET एरियाआईडी में मैप करने का एक उचित तरीका एक तीन तत्व सरणी है:

  • ROW_1_LEFT
  • ROW_1_दाएँ
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_दाएँ | ROW_3_LEFT | ROW_3_CENTER | ROW_3_दाएं

उदाहरण 3

एक कार में दो आगे की सीटें (ROW_1_LEFT, ROW_1_दाएं) और तीन पीछे की सीटें (ROW_2_LEFT, ROW_2_CENTER, ROW_2_दाएं) होती हैं। मान लीजिए कि कार केवल दो आगे की सीटों के लिए HVAC_AUTO_ON का समर्थन करती है। HVAC_AUTO_ON के लिए एरियाआईडी का एक वैध मैपिंग सेट एक एकल तत्व सरणी होगा:

  • ROW_1_LEFT | ROW_1_दाएँ

यदि HVAC_AUTO_ON में चालक पक्ष और यात्री पक्ष के लिए दो अलग-अलग नियंत्रण इकाइयाँ होती हैं, तो एक वैकल्पिक मैपिंग दो तत्वों वाली सरणी होगी:

  • ROW_1_LEFT
  • ROW_1_दाएँ

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

यदि वाहन को एंड्रॉइड के माध्यम से यूरोपीय संघ सामान्य सुरक्षा विनियमन (जीएसआर) आवश्यकताओं का पालन करना होगा, तो संपत्ति GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT का समर्थन किया जाना चाहिए। एक उदाहरण उपयोग मामला जीएसआर-आईएसए (इंटेलिजेंट स्पीड असिस्ट) है जैसा कि ईयू विनियमन 2019/2144 में परिभाषित किया गया है। यह संपत्ति एंड्रॉइड 13 से एआईडीएल वीएचएएल में जोड़ी गई है, हालांकि, यह एंड्रॉइड 12 की रिलीज के बाद से कार सेवा में समर्थित है। इस संपत्ति को केवल पढ़ने के लिए स्थिर वैश्विक पूर्णांक संपत्ति के रूप में परिभाषित किया गया है, जिसमें GsrComplianceRequirementType enum द्वारा परिभाषित संभावित मान हैं:

नाम कीमत विवरण
जीएसआर_अनुपालन_नहीं_आवश्यक 0 जीएसआर अनुपालन की आवश्यकता नहीं है
GSR_COMPLIANCE_REQUIRED_V1 1 जीएसआर अनुपालन आवश्यक है और आवश्यकता समाधान संस्करण 1 है।

HIDL VHAL (एंड्रॉइड 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}},
}

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

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

एंड्रॉइड ऐप से इस प्रॉपर्टी को पढ़ने के लिए, CarPropertyManager.getIntProperty का उपयोग करें।

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