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

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

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

  • हमेशा सिस्टम की प्रॉपर्टी पहले इस्तेमाल करें. वेंडर की प्रॉपर्टी का इस्तेमाल आखिरी विकल्प के तौर पर किया जाना चाहिए जब कोई भी सिस्टम प्रॉपर्टी आपकी ज़रूरत को पूरा नहीं करती हो.
  • नेटवर्क को बिगाड़ने से रोकने के लिए, वाहन की कॉपी बनाने के लिए वेंडर की प्रॉपर्टी का इस्तेमाल नहीं किया जाना चाहिए प्रॉपर्टी जो पहले से SDK टूल में मौजूद हैं गाड़ी प्रॉपर्टी के आईडी. इस बारे में ज़्यादा जानने के लिए, सेक्शन देखें 2.5, CDD में वाहन संबंधित ज़रूरी शर्तें.
  • प्रॉपर्टी आईडी जनरेट करने के लिए, इन फ़ील्ड का इस्तेमाल करें:
    • VehiclePropertyGroup: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 वाहन की प्रॉपर्टी देखें.

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

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

एचवीएसी

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

प्रॉपर्टी मकसद
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). तापमान को कंट्रोल करने की दो यूनिट हैं. हर यूनिट के लिए एक-एक है ड्राइवर साइड और यात्री साइड. इसके लिए PlacesID का मान्य मैपिंग सेट HVAC_TEMPERATURE_SET, दो एलिमेंट वाला अरे होगा:

  • 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, तीन एलिमेंट वाला अरे होता है:

  • 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). मान लीजिए कि कार सामने की दो सीटें हैं. एचवीएसी_ऑटो_एन के लिए एरिया आईडी का मान्य मैपिंग सेट, एक होगा एलिमेंट अरे:

  • 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 के ज़रिए, प्रॉपर्टी GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT मदद नहीं की जा सकती. इस्तेमाल का एक उदाहरण GSR-ISA (इंटेलिजेंट स्पीड असिस्ट) है, जैसा कि ईयू (यूरोपीय संघ) में बताया गया है रेगुलेशन 2019/2144. इस प्रॉपर्टी को Android 13 से AIDL VHAL में जोड़ा गया है. हालांकि, ऐसा हो सकता है कि Android 12 रिलीज़ होने के बाद से, कार सर्विस के लिए काम करती है. इस प्रॉपर्टी को सिर्फ़ पढ़ने के लिए तय किया गया है स्टैटिक ग्लोबल पूर्णांक प्रॉपर्टी, जिसमें GsrComplianceRequirementType enum:

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

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