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

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

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

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

  • (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 में से कोई एक होना चाहिए. यह वैल्यू, काम करने वाली सिस्टम प्रॉपर्टी में बताए गए ऐक्सेस मोड के बराबर होनी चाहिए.
changeMode
  • प्रॉपर्टी के लिए मोड बदलें. यह STATIC, ON_CHANGE या CONTINUOUS में से कोई एक होना चाहिए. STATIC का मतलब है कि सिस्टम के बूट होने के बाद, प्रॉपर्टी की वैल्यू कभी नहीं बदलती. ON_CHANGE का मतलब है कि वैल्यू बदलने पर, VHAL को रिपोर्ट करना चाहिए. CONTINUOUS का मतलब है कि प्रॉपर्टी की वैल्यू लगातार बदलती रहती है और VHAL को सदस्यता के सैंपल रेट के आधार पर रिपोर्ट करनी चाहिए.
  • बदलाव मोड, काम करने वाली सिस्टम प्रॉपर्टी में बताए गए बदलाव मोड से मेल खाना चाहिए.
configArray प्रॉपर्टी के हिसाब से कॉन्फ़िगरेशन शामिल करने के लिए, वैकल्पिक कलेक्शन. इसे खाली छोड़ा जा सकता है.
configString प्रॉपर्टी के हिसाब से कॉन्फ़िगरेशन शामिल करने के लिए वैकल्पिक स्ट्रिंग. इसे खाली छोड़ा जा सकता है.
minSampleRate और maxSampleRate

लगातार चलने वाली प्रॉपर्टी के लिए, सैंपल रेट की कम से कम और ज़्यादा से ज़्यादा वैल्यू. अगर प्रॉपर्टी लगातार नहीं चल रही है, तो इसका इस्तेमाल नहीं किया जाता.

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

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

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

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

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

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

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

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

फ़ील्ड ब्यौरा
areaId इस इलाके का आईडी. एरिया आईडी देखें.
minInt32Value और maxInt32Value
  • INT32 टाइप की प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा वैल्यू डालना ज़रूरी नहीं है. बाकी सभी तरह के प्रॉडक्ट के लिए, अगर दोनों वैल्यू 0 हैं, तो इन्हें अनदेखा कर दिया जाता है.
  • ग्लोबल प्रॉपर्टी के लिए, अगर कम से कम और ज़्यादा से ज़्यादा वैल्यू तय करनी है, तो क्षेत्र आईडी 0 वाले एक क्षेत्र कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
minInt64Value और maxInt64Value
  • INT64 टाइप की प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा वैल्यू डालना ज़रूरी नहीं है. बाकी सभी तरह के प्रॉडक्ट के लिए, अगर दोनों वैल्यू 0 हैं, तो इन्हें अनदेखा कर दिया जाता है.
  • ग्लोबल प्रॉपर्टी के लिए, अगर कम से कम और ज़्यादा से ज़्यादा वैल्यू तय करनी है, तो क्षेत्र आईडी 0 वाले एक क्षेत्र कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
minFloatValue और maxFloatValue
  • फ़्लोट टाइप प्रॉपर्टी के लिए, कम से कम और ज़्यादा से ज़्यादा वैल्यू डालना ज़रूरी नहीं है. बाकी सभी तरह के प्रॉडक्ट के लिए, अगर दोनों वैल्यू 0.0 हैं, तो इन्हें अनदेखा कर दिया जाता है.
  • ग्लोबल प्रॉपर्टी के लिए, अगर कम से कम और ज़्यादा से ज़्यादा वैल्यू तय करनी है, तो क्षेत्र आईडी 0 वाले एक क्षेत्र कॉन्फ़िगरेशन का इस्तेमाल करना होगा.
(Android 14 में नया)
supportedEnumValues
  • अगर प्रॉपर्टी को वैल्यू के तौर पर इस्तेमाल की जा सकने वाली प्रॉपर्टी के तौर पर तय किया गया है, तो इस्तेमाल की जा सकने वाली वैल्यू की सूची. हालांकि, यह सूची देना ज़रूरी नहीं है. अगर कोई वैल्यू नहीं दी गई है (खाली है) या Android 14 से पहले के वर्शन का इस्तेमाल किया जा रहा है, तो यह माना जाता है कि सभी वैल्यू काम करती हैं.
  • ग्लोबल प्रॉपर्टी के लिए, अगर इस्तेमाल की जा सकने वाली एनम वैल्यू तय करनी हैं, तो क्षेत्र आईडी 0 वाले एक क्षेत्र के कॉन्फ़िगरेशन का इस्तेमाल करना होगा.

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

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

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

ज़ोन वाली हर प्रॉपर्टी के लिए, पहले से तय किए गए इलाके के टाइप का इस्तेमाल करना ज़रूरी है. हर इलाके के टाइप के लिए, बिट फ़्लैग का एक सेट होता है. उदाहरण के लिए, सीट एरिया में 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 यह सिर्फ़ पीछे की दाईं सीट पर लागू होता है.

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