प्रॉपर्टी कॉन्फ़िगरेशन

इस्तेमाल की जा सकने वाली हर प्रॉपर्टी के लिए, VehiclePropConfig स्ट्रक्चर के ज़रिए तय किए गए प्रॉपर्टी कॉन्फ़िगरेशन की जानकारी दी जाती है. साथ ही, इसमें ये फ़ील्ड होते हैं.

फ़ील्ड ब्यौरा
prop

प्रॉपर्टी आईडी. यह VehicleProperty.aidl में से किसी एक तय की गई सिस्टम प्रॉपर्टी या वेंडर प्रॉपर्टी होनी चाहिए. प्रॉपर्टी आईडी, इन फ़ील्ड के बिट-या का इस्तेमाल करके बनाया जाता है (दाईं से बाईं ओर):

  • (0x00000000) 16 बिट: 0x0100 से 0xffff की रेंज में एक यूनीक आईडी.
  • (0x00000000) आठ बिट: प्रॉपर्टी टाइप, जो प्रॉपर्टी के टाइप की जानकारी देता है.
  • (0x00000000) चार बिट: एरिया टाइप.
  • (0x00000000) चार बिट: VehiclePropertyGroup यह SYSTEM (0x10000000) या VENDOR (0x20000000) में से कोई एक है. अपनी पसंद के मुताबिक बनाई जा सकने वाली प्रॉपर्टी के लिए, वेंडर प्रॉपर्टी देखें.

उदाहरण के लिए,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • प्रॉपर्टी के लिए ऐक्सेस मोड. यह READ, WRITE या READ_WRITE में से कोई एक होना चाहिए.
  • सिस्टम प्रॉपर्टी के लिए, यह VehicleProperty.aidl में बताए गए ऐक्सेस मोड में से कोई एक होना चाहिए.
  • जिन प्रॉपर्टी के लिए हर इलाके का ऐक्सेस है उनके लिए, यह हर इलाके के ऐक्सेस का सबसे बड़ा सबसेट है. उदाहरण के लिए, अगर प्रॉपर्टी के दो इलाके हैं जिनका ऐक्सेस READ और READ_WRITE है, तो इसे READ पर सेट किया जाना चाहिए.
changeMode
  • प्रॉपर्टी के लिए मोड बदलें. यह STATIC, ON_CHANGE या CONTINUOUS में से कोई एक होना चाहिए. STATIC का मतलब है कि सिस्टम के बूट होने के बाद, प्रॉपर्टी की वैल्यू कभी नहीं बदलती. ON_CHANGE का मतलब है कि वैल्यू बदलने पर, VHAL को रिपोर्ट करना होगा. CONTINUOUS का मतलब है कि प्रॉपर्टी की वैल्यू लगातार बदलती रहती है और VHAL को सदस्यता के सैंपल रेट के आधार पर रिपोर्ट करनी चाहिए.
  • सिस्टम प्रॉपर्टी के लिए, यह वैल्यू, VehicleProperty.aidl में बताए गए बदलाव मोड के बराबर होनी चाहिए.
configArray प्रॉपर्टी के हिसाब से कॉन्फ़िगरेशन शामिल करने के लिए वैकल्पिक कलेक्शन. इसे खाली छोड़ा जा सकता है. कुछ सिस्टम प्रॉपर्टी, जैसे कि GEAR_SELECTION के लिए, कॉन्फ़िगरेशन कलेक्शन का खास मतलब होता है और इसे बताना ज़रूरी होता है.
configString प्रॉपर्टी के हिसाब से कॉन्फ़िगरेशन शामिल करने के लिए वैकल्पिक स्ट्रिंग. इसे खाली छोड़ा जा सकता है.
minSampleRate और maxSampleRate लगातार रिकॉर्ड होने वाली प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा सैंपल रेट (हर्ट्ज़ में). अगर प्रॉपर्टी लगातार नहीं है, तो इसका इस्तेमाल नहीं किया जाता. minSampleRate और maxSampleRate को VHAL को लागू करके हासिल किया जाना चाहिए. यह ज़रूरी नहीं है कि कम से कम और ज़्यादा से ज़्यादा सैंपल रेट के बीच के सभी सैंपल रेट काम करें.

प्रॉपर्टी के टाइप

VehiclePropertyType.aidl में, वैल्यू को वैरिएशन के तौर पर तय किया गया है. इस्तेमाल की जा सकने वाली प्रॉपर्टी के टाइप, नीचे दी गई टेबल में दिए गए हैं.

प्रॉपर्टी का टाइप वैल्यू ब्यौरा
STRING 0x00100000 स्ट्रिंग प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में stringValue फ़ील्ड का इस्तेमाल करती है.
BOOLEAN 0x00200000 Boolean प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में int32Values फ़ील्ड के पहले एलिमेंट का इस्तेमाल करती है. 0 का मतलब false है, None 0 का मतलब true है.
INT32 0x00400000 Integer प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में int32Values फ़ील्ड के पहले एलिमेंट का इस्तेमाल करती है.
INT32_VEC 0x00410000 Integer[] प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में int32Values फ़ील्ड के एलिमेंट का इस्तेमाल करती है.
INT64 0x00500000 लंबी प्रॉपर्टी, वाहन की प्रॉपर्टी की वैल्यू में int64Values फ़ील्ड के पहले एलिमेंट का इस्तेमाल करती है.
INT64_VEC 0x00510000 Long[] प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में int64Values फ़ील्ड के एलिमेंट का इस्तेमाल करती है.
FLOAT 0x00600000 Float प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में floatValues फ़ील्ड के पहले एलिमेंट का इस्तेमाल करती है.
FLOAT_VEC 0x00610000 Float[] प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में floatValues फ़ील्ड के एलिमेंट का इस्तेमाल करती है.
BYTES 0x00700000 byte[] प्रॉपर्टी, वाहन की प्रॉपर्टी वैल्यू में byteValues फ़ील्ड के एलिमेंट का इस्तेमाल करती है.
MIXED 0x00e00000 अलग-अलग तरह की प्रॉपर्टी. स्केलर या वेक्टर टाइप का कोई भी कॉम्बिनेशन. प्रॉपर्टी कॉन्फ़िगरेशन में, कॉन्फ़िगरेशन कलेक्शन में सही फ़ॉर्मैट दिया जाना चाहिए.

वेंडर की MIXED टाइप प्रॉपर्टी के लिए, configArray को इस स्ट्रक्चर में फ़ॉर्मैट किया जाना चाहिए:

  • configArray[0], 1 से पता चलता है कि प्रॉपर्टी में String वैल्यू है
  • configArray[1], 1 से पता चलता है कि प्रॉपर्टी में Boolean वैल्यू है
  • configArray[2], 1 से पता चलता है कि प्रॉपर्टी में Integer वैल्यू है
  • configArray[3], यह संख्या प्रॉपर्टी में Integer[] के साइज़ को दिखाती है
  • configArray[4], 1 से पता चलता है कि प्रॉपर्टी में Long वैल्यू है
  • configArray[5], यह संख्या प्रॉपर्टी में Long[] के साइज़ को दिखाती है
  • configArray[6], 1 से पता चलता है कि प्रॉपर्टी में Float वैल्यू है
  • configArray[7], यह संख्या प्रॉपर्टी में Float[] के साइज़ को दिखाती है
  • configArray[8], यह संख्या प्रॉपर्टी में byte[] के साइज़ को दिखाती है.

उदाहरण के लिए, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} से पता चलता है कि प्रॉपर्टी में String वैल्यू, Boolean वैल्यू, Integer वैल्यू, और तीन पूर्णांकों वाला ऐरे है.

क्षेत्र का आईडी कॉन्फ़िगरेशन

हर प्रॉपर्टी कॉन्फ़िगरेशन में, एरिया आईडी कॉन्फ़िगरेशन की सूची भी हो सकती है. यह सूची, ग्लोबल प्रॉपर्टी के लिए ज़रूरी नहीं है. हालांकि, ज़ोन वाली प्रॉपर्टी (एक से ज़्यादा ज़ोन वाली प्रॉपर्टी) के लिए यह ज़रूरी है. हर एरिया आईडी कॉन्फ़िगरेशन में ये फ़ील्ड होते हैं.

फ़ील्ड ब्यौरा
areaId इस इलाके का आईडी. एरिया आईडी देखें.
minInt32Value और maxInt32Value
  • बूट के समय, INT32 टाइप की प्रॉपर्टी के लिए कम से कम और ज़्यादा से ज़्यादा वैल्यू. हालांकि, यह वैल्यू देना ज़रूरी नहीं है. अन्य सभी टाइप के लिए, इसकी वैल्यू 0 होनी चाहिए. अगर दोनों वैल्यू 0 हैं, तो इन्हें अनदेखा कर दिया जाता है.
  • अगर ग्लोबल प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा वैल्यू तय करनी है, तो क्षेत्र आईडी 0 वाले एक क्षेत्र कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
  • यह वैल्यू स्टैटिक होती है और रनटाइम के दौरान कम से कम या ज़्यादा से ज़्यादा वैल्यू में बदलाव होने पर भी, यह नहीं बदलेगी. डाइनैमिक कम से कम या ज़्यादा से ज़्यादा वैल्यू के लिए, IVehicle#getMinMaxSupportedValue लागू करें.
minInt64Value और maxInt64Value
  • बूट के समय, INT64 टाइप की प्रॉपर्टी के लिए कम से कम और ज़्यादा से ज़्यादा वैल्यू. हालांकि, यह वैल्यू देना ज़रूरी नहीं है. अन्य सभी टाइप के लिए, इसकी वैल्यू 0 होनी चाहिए. अगर दोनों वैल्यू 0 हैं, तो इन्हें अनदेखा कर दिया जाता है.
  • अगर ग्लोबल प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा वैल्यू तय करनी है, तो क्षेत्र आईडी 0 वाले एक क्षेत्र कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
  • यह वैल्यू स्टैटिक होती है और रनटाइम के दौरान कम से कम या ज़्यादा से ज़्यादा वैल्यू में बदलाव होने पर भी, यह नहीं बदलेगी. डाइनैमिक कम से कम या ज़्यादा से ज़्यादा वैल्यू के लिए, IVehicle#getMinMaxSupportedValue लागू करें.
minFloatValue और maxFloatValue
  • बूट के समय, फ़्लोट टाइप प्रॉपर्टी के लिए कम से कम और ज़्यादा से ज़्यादा वैल्यू. हालांकि, यह वैल्यू देना ज़रूरी नहीं है. अन्य सभी टाइप के लिए, इसकी वैल्यू 0 होनी चाहिए. अगर दोनों वैल्यू 0.0 हैं, तो इन्हें अनदेखा कर दिया जाता है.
  • अगर ग्लोबल प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा वैल्यू तय करनी है, तो क्षेत्र आईडी 0 वाले एक क्षेत्र कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
  • यह वैल्यू स्टैटिक होती है और रनटाइम के दौरान कम से कम या ज़्यादा से ज़्यादा वैल्यू में बदलाव होने पर भी, यह नहीं बदलेगी. डाइनैमिक कम से कम या ज़्यादा से ज़्यादा वैल्यू के लिए, IVehicle#getMinMaxSupportedValue लागू करें.
(Android 14 में नया)
supportedEnumValues
  • अगर प्रॉपर्टी को एनुमरेशन टाइप की प्रॉपर्टी के तौर पर तय किया गया है, तो बूट के समय काम करने वाली वैल्यू की वैकल्पिक सूची. अगर कोई वैल्यू नहीं दी गई है (खाली है) या Android 14 से पहले की है, तो यह माना जाता है कि सभी वैल्यू काम करती हैं.
  • ग्लोबल प्रॉपर्टी के लिए, अगर इस्तेमाल की जा सकने वाली एनम वैल्यू तय करनी हैं, तो क्षेत्र आईडी 0 वाले एक क्षेत्र के कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
  • यह वैल्यू स्टैटिक होती है और रनटाइम के दौरान इस्तेमाल की जा सकने वाली वैल्यू बदलने पर भी, यह वैल्यू नहीं बदलेगी. इस्तेमाल की जा सकने वाली डाइनैमिक वैल्यू के लिए, IVehicle#getSupportedValuesLists लागू करें.
  • यह सिर्फ़ वैल्यू के तौर पर एक से ज़्यादा वैल्यू इस्तेमाल करने की सुविधा वाली प्रॉपर्टी पर लागू होता है. अन्य टाइप के लिए, यह फ़ील्ड खाली होना चाहिए. एनम (एलिमेंट की सूची) के अलावा, अन्य टाइप के लिए इस्तेमाल की जा सकने वाली वैल्यू दिखाने के लिए, IVehicle#getSupportedValuesLists का इस्तेमाल करें.
(Android 15 में नया)
supportVariableUpdateRate
  • वैरिएबल अपडेट रेट की सुविधा काम करती है या नहीं. यह सिर्फ़ लगातार चलने वाली प्रॉपर्टी पर लागू होता है.
  • अगर यह true है, तो ऐप्लिकेशन किसी सदस्यता के लिए वैरिएबल अपडेट रेट चालू कर सकता है, ताकि प्रॉपर्टी की वैल्यू बदलने पर ही प्रॉपर्टी अपडेट इवेंट पाया जा सके. ऐसा करने पर, ऐप्लिकेशन लगातार अपडेट होने वाली प्रॉपर्टी को बदलाव होने पर अपडेट होने वाली प्रॉपर्टी के तौर पर इस्तेमाल करता है.
  • अगर किसी प्रॉपर्टी के सभी सदस्य, वैरिएबल अपडेट रेट की सुविधा चालू कर रहे हैं, तो VHAL को सदस्यता का अनुरोध करने पर, प्रॉपर्टी के लिए वैरिएबल अपडेट रेट की सुविधा चालू हो जाती है. साथ ही, VHAL को प्रॉपर्टी की वैल्यू में बदलाव होने पर ही, प्रॉपर्टी अपडेट इवेंट भेजने होंगे.
  • अगर कोई सदस्य अपडेट की तय दर का अनुरोध कर रहा है, तो VHAL के लिए सदस्यता का अनुरोध, प्रॉपर्टी के लिए वैरिएबल अपडेट रेट को बंद कर देता है. साथ ही, AAOS उन क्लाइंट के लिए डुप्लीकेट इवेंट को फ़िल्टर कर देता है जो वैरिएबल अपडेट रेट का अनुरोध करते हैं.
  • बेहतर परफ़ॉर्मेंस के लिए, हमारा सुझाव है कि आप हर ऐसी प्रॉपर्टी के लिए वैरिएबल अपडेट रेट का इस्तेमाल करें जो लगातार अपडेट नहीं होती. ऐसा तब तक करें, जब तक कि प्रॉपर्टी का डेटा बड़ा न हो (उदाहरण के लिए, 1k साइज़ का बाइट कलेक्शन) और कैश मेमोरी के लिए ज़्यादा मेमोरी न ले.
(Android 16 में नया)
hasSupportedValueInfo
  • अगर null नहीं है, तो यह दिखाता है कि इस प्रॉपर्टी में, इस्तेमाल की जा सकने वाली वैल्यू की कम से कम या ज़्यादा से ज़्यादा वैल्यू या इस्तेमाल की जा सकने वाली वैल्यू की सूची दी गई है या नहीं.
  • इस फ़ील्ड से यह कंट्रोल किया जाता है कि इस प्रॉपर्टी आईडी और एरिया आईडी के लिए, डाइनैमिक वैल्यू वाले इन एपीआई का इस्तेमाल किया जा सकता है या नहीं: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange
  • अगर null नहीं है, तो VHAL को इस प्रॉपर्टी आईडी और इलाके के आईडी के लिए, इन एपीआई को लागू करना होगा.
  • अगर null या Android 15 या उससे पहले के वर्शन का इस्तेमाल किया जा रहा है, तो इस प्रॉपर्टी आईडी और एरिया आईडी के लिए, डाइनैमिक वैल्यू इस्तेमाल नहीं की जा सकतीं. क्लाइंट को वाहन की प्रॉपर्टी के कॉन्फ़िगरेशन में दी गई, काम करने वाली स्टैटिक वैल्यू की जानकारी का इस्तेमाल करना होगा.

क्षेत्र के टाइप

VehicleArea.aidl में, वैल्यू को वैरिएशन के तौर पर तय किया गया है. यहां उन इलाकों के टाइप की सूची दी गई है जहां यह सुविधा काम करती है.

इलाके का टाइप वैल्यू ब्यौरा
ग्लोबल 0x01000000 यह प्रॉपर्टी, ग्लोबल प्रॉपर्टी है और इसमें एक से ज़्यादा क्षेत्र नहीं होते.
WINDOW 0x03000000 विंडो के आधार पर क्षेत्र, VehicleAreaWindow enum का इस्तेमाल करता है.
मिरर 0x04000000 मिरर के आधार पर क्षेत्र, VehicleAreaMirror enum का इस्तेमाल करता है.
SEAT 0x05000000 सीटों के आधार पर क्षेत्र, VehicleAreaSeat enum का इस्तेमाल करता है.
दरवाज़ा 0x06000000 दरवाज़ों के आधार पर क्षेत्र, VehicleAreaDoor enum का इस्तेमाल करता है.
WHEEL 0x07000000 यह एरिया, VehicleAreaWheel enum का इस्तेमाल करता है.

ज़ोन वाली हर प्रॉपर्टी के लिए, पहले से तय किए गए इलाके के टाइप का इस्तेमाल करना ज़रूरी है. हर इलाके के टाइप के लिए, बिट फ़्लैग का एक सेट होता है. उदाहरण के लिए, SEAT एरिया में VehicleAreaSeat एनम तय किए गए हैं:

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

क्षेत्र के आईडी

ज़ोन वाली प्रॉपर्टी को एरिया आईडी की मदद से ऐक्सेस किया जाता है. ज़ोन वाली हर प्रॉपर्टी में एक या उससे ज़्यादा एरिया आईडी काम कर सकते हैं. किसी एरिया आईडी में, उससे जुड़े एनम से एक या उससे ज़्यादा फ़्लैग होते हैं. उदाहरण के लिए, VehicleAreaSeat का इस्तेमाल करने वाली कोई प्रॉपर्टी, इन एरिया आईडी का इस्तेमाल कर सकती है:

आइटम ब्यौरा
ROW_1_LEFT | ROW_1_RIGHT एरिया आईडी, दोनों सामने की सीटों पर लागू होता है.
ROW_2_LEFT यह सिर्फ़ पीछे की बाईं सीट पर लागू होता है.
ROW_2_RIGHT यह सिर्फ़ पीछे की दाईं सीट पर लागू होता है.

ज़्यादा जानने के लिए, एचवीएसी देखें.