Android Automotive OS (AAOS) में सामान्य VHAL प्रॉपर्टी होती हैं, जिन्हें एमुलेटर की VHAL विंडो में देखा जा सकता है. इसकी वजह से, आपको वीएचएएल के बारे में काफ़ी जानकारी दिख सकती है. इसमें नाम, ब्यौरा, और वैल्यू का मतलब शामिल है. यह जानकारी, VHAL प्रॉपर्टी के मेटाडेटा से निकाली जाती है. यह मेटाडेटा, QEMU एमुलेटर में हार्ड-कोड किया जाता है.
अपने डिवाइसों पर खास तौर पर इस्तेमाल करने के लिए, अपनी VHAL प्रॉपर्टी जोड़ने पर, VHAL विंडो में VHAL मेटाडेटा देखने के लिए, आपको कोड में बदलाव करना होगा और पसंद के मुताबिक QEMU एमुलेटर बनाना होगा. इसे ठीक करने के लिए, JSON फ़ॉर्मैट में अपने ब्यौरे लिखे जा सकते हैं और उन्हें अपनी सिस्टम इमेज में जोड़ा जा सकता है.
खास जानकारी
इस पेज पर बताया गया है कि AAOS एमुलेटर में VHAL प्रॉपर्टी की जानकारी को कैसे बढ़ाया जा सकता है.
VHAL प्रॉपर्टी को बड़ा करने के लिए, JSON मेटाडेटा बनाना
Android वर्चुअल डिवाइस (AVD) के पाथ में, -types-meta.json
पर खत्म होने वाली सभी फ़ाइलों में, एमुलेटर अतिरिक्त मेटाडेटा खोजता है. JSON फ़ाइलों में, Enum
ऑब्जेक्ट का एक कलेक्शन होना चाहिए, जैसा कि यहां दिखाया गया है.
Enum ऑब्जेक्ट
VehicleProperty
नाम वाला Enum
ऑब्जेक्ट, That में एक खास मामला है. इसे रूट के तौर पर माना जा सकता है. इसके कॉन्टेंट को वाहन की प्रॉपर्टी के मैप में जोड़ दिया जाता है. अन्य
Enums
(VehicleProperty
के अलावा किसी और नाम के साथ), कस्टम वैल्यू के नामों के मैप तय करते हैं.
Enum: { "name" : String, "values" : Array of { ValueObject } }
ValueObject
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
VehicleProperty
के लिए, Enum
नाम से पता चलता है कि एमुलेटर की VHAL विंडो में यह प्रॉपर्टी कैसे दिखती है. वैल्यू, ValueObject
की बताई गई प्रॉपर्टी की property_id
है.
data_enum
, ValueObject
को किसी दूसरे Enum
से जोड़ता है.
इस असोसिएशन का इस्तेमाल, किसी वैल्यू को ऐसी स्ट्रिंग में मैप करने के लिए किया जाता है जिसे कोई भी व्यक्ति पढ़ सके. यह सिर्फ़ VehicleProperty
के लिए, Enum
में मौजूद ValueObjects
के लिए मौजूद होता है.
VehicleProperty
का उदाहरण यहां दिया गया है:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
इस उदाहरण में, property_id
के value
के तौर पर 289408001 दिया गया है, जो CURRENT_GEAR
के लिए name
के तौर पर दिया गया है.
एमुलेटर में, इस प्रॉपर्टी को पहले से ही मौजूदा गियर नाम के तौर पर हार्ड-कोड किया गया है.
(इस स्थिति को दोहराया नहीं जा सकता, क्योंकि इस पेज को बनाने के लिए, सभी हार्ड कोड की गई प्रॉपर्टी को हटा दिया गया था. ऐसा, उदाहरण के तौर पर दिखाने के लिए किया गया था.)
पहली इमेज. नाम और वैल्यू के साथ तय की गई VehicleProperty.
एमुलेटर के VHAL प्रॉपर्टी टैब में, नाम को रीफ़्रेश करके, उम्मीद के मुताबिक CURRENT_GEAR
पढ़ने के लिए सेट किया गया है.
data_enum
ऊपर दिए गए उदाहरण में, गियर को P पर सेट करने पर, दिखाई गई वैल्यू 4 है.
दूसरी इमेज. वैल्यू 4 के तौर पर दिखती है.
जैसा कि उम्मीद थी, एमुलेटर में VHAL प्रॉपर्टी टैब पर, नाम CURRENT_GEAR
के तौर पर दिखता है. यह मौजूदा एमुलेटर से अलग है, जहां इसे P के तौर पर दिखाया जाता है.
enum VehicleGear { GEAR_UNKNOWN = 0x0000, GEAR_NEUTRAL = 0x0001, GEAR_REVERSE = 0x0002, GEAR_PARK = 0x0004, GEAR_DRIVE = 0x0008, GEAR_1 = 0x0010, GEAR_2 = 0x0020, GEAR_3 = 0x0040, GEAR_4 = 0x0080, GEAR_5 = 0x0100, GEAR_6 = 0x0200, GEAR_7 = 0x0400, GEAR_8 = 0x0800, GEAR_9 = 0x1000, }
ज़्यादा जानने के लिए, AIDL की परिभाषा देखें.
जैसा कि एआईडीएल में बताया गया है, पार्क गियर की वैल्यू 4 है. इसका मतलब है कि आपको 4 वैल्यू को P में बदलना होगा. ऐसा तब होता है, जब data_enum
का इस्तेमाल किया जाता है. यह प्रॉपर्टी वैल्यू को किसी दूसरी Enum
में, ऐसी स्ट्रिंग पर मैप करता है जिसे कोई भी व्यक्ति पढ़ सकता है. एमुलेटर, प्रॉपर्टी वैल्यू का अनुवाद करने के लिए इस मैप का इस्तेमाल करता है. उदाहरण के लिए:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001, "data_enum": "VehicleGear" } ] }, { "name": "VehicleGear", "values": [ { "name": "GEAR_UNKNOWN", "value": 0 }, { "name": "GEAR_PARK", "value": 4 } ] } ]
"data_enum": "VehicleGear"
जोड़ें, ताकि एमुलेटर, प्रॉपर्टी वैल्यू का अनुवाद करने के लिए, VehicleGear
नाम वाले Enum
का इस्तेमाल कर सके. VehicleGear
नाम वाला एक और Enum
जोड़ें, जिसकी वैल्यू ValueObject
की कैटगरी हो. साथ ही, प्रॉपर्टी की वैल्यू (वैल्यू के साथ) को नाम के तौर पर दिखाया जाना चाहिए.
तीसरी इमेज. वैल्यू, GEAR_PARK के तौर पर दिखती है.
एमुलेटर के VHAL प्रॉपर्टी टैब पर, नाम को CURRENT_GEAR
के तौर पर रीफ़्रेश किया गया है, जैसा कि उम्मीद थी. 4
की प्रॉपर्टी वैल्यू, GEAR_PARK
के तौर पर दिखती है.
VHAL प्रॉपर्टी को बड़ा करने के लिए, JSON मेटाडेटा का इस्तेमाल करना
अपनी VHAL प्रॉपर्टी को बड़ा करने के लिए, JSON मेटाडेटा का इस्तेमाल करें. इसके लिए, Python स्क्रिप्ट (Android सोर्स में मौजूद) को चलाएं. इससे, AIDL में मौजूद जानकारी से बड़ी प्रॉपर्टी का JSON जनरेट होगा.
इस JSON में कुछ ग़ैर-ज़रूरी वैल्यू शामिल हैं, जैसे कि change_mode
,
access
, और unit
. हालांकि, यह जानकारी VHAL प्रॉपर्टी का हिस्सा है,
लेकिन इन JSON वैल्यू का असर, एमुलेटर की VHAL प्रॉपर्टी विंडो में दिखने वाली जानकारी पर नहीं पड़ता.
सिस्टम इमेज में JSON मेटाडेटा जोड़ना
ध्यान रखें कि फ़ाइल के नाम के आखिर में -types-meta.json
होना चाहिए. अगर ऐसा नहीं है, तो फ़ाइल को अनदेखा कर दिया जाता है.
बिल्ड टारगेट जोड़ना
-types-meta.json
फ़ाइल को PRODUCT_COPY_FILE
में जोड़ें. उदाहरण के लिए:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
यह कोड, फ़ाइल को out/target/product/{your_target_path}/
में कॉपी करता है. यह आपके बने हुए टारगेट आउटपुट का रूट होता है.