वाहन गुण

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

व्हीकल हार्डवेयर एब्स्ट्रेक्शन लेयर (VHAL) इंटरफ़ेस उन गुणों को परिभाषित करता है जिन्हें OEM लागू कर सकते हैं और इसमें संपत्ति मेटाडेटा शामिल है (उदाहरण के लिए, क्या संपत्ति एक int है और कौन से परिवर्तन मोड की अनुमति है)। VHAL इंटरफ़ेस एक संपत्ति तक पहुँचने (पढ़ने, लिखने, सदस्यता लेने) पर आधारित है, जो एक विशिष्ट फ़ंक्शन के लिए एक अमूर्त है।

एचएएल इंटरफेस

वीएचएएल निम्नलिखित इंटरफेस का उपयोग करता है:

  • getAllPropConfigs() उत्पन्न करता है (vec<VehiclePropConfig>propConfigs)
    वीएचएएल द्वारा समर्थित सभी संपत्तियों के विन्यास की सूची बनाएं। CarService केवल समर्थित गुणों का उपयोग करता है।
  • getPropConfigs(vec<int32_t> props) जेनरेट करता है (StatusCode status,vec<VehiclePropConfig> propConfigs);
    चयनित गुणों का विन्यास लौटाएं।
  • set(VehiclePropValue propValue) जेनरेट करता है (StatusCodestatus);
    संपत्ति के लिए एक मूल्य लिखें। लिखने का परिणाम प्रति संपत्ति परिभाषित किया गया है।
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) उत्पन्न करता है (StatusCode status);
    संपत्ति मूल्य परिवर्तन की निगरानी शुरू करें। ज़ोन की गई संपत्ति के लिए, unsubscribe(IVehicleCallback callback, int32_t propId) उत्पन्न करता है (StatusCode status);

वीएचएएल निम्नलिखित कॉलबैक इंटरफेस का उपयोग करता है:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    वाहन संपत्ति के मूल्य परिवर्तन को सूचित करता है। केवल सब्स्क्राइब्ड संपत्तियों के लिए किया जाना चाहिए।
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    प्रति गुण वैश्विक VHAL स्तर त्रुटि या त्रुटि लौटाएं। वैश्विक त्रुटि के कारण एचएएल फिर से शुरू हो जाता है, जिससे अन्य घटकों (एप्लिकेशन सहित) को फिर से शुरू किया जा सकता है।

वाहन गुण

गुण केवल-पढ़ने के लिए, केवल-लिखने के लिए (VHAL स्तर पर जानकारी पास करने के लिए उपयोग किया जाता है), या पढ़ और लिख सकते हैं (अधिकांश गुणों का समर्थन वैकल्पिक है)। प्रत्येक संपत्ति को विशिष्ट रूप से एक int32 कुंजी द्वारा पहचाना जाता है और इसमें एक पूर्वनिर्धारित प्रकार होता है ( value_type ):

  • BYTES
  • BOOLEAN
  • EPOCH_TIME
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

संपत्ति द्वारा समर्थित क्षेत्रों की संख्या के आधार पर एक ज़ोनड संपत्ति में एक से अधिक मूल्य हो सकते हैं।

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

VHAL कई क्षेत्र प्रकारों को परिभाषित करता है:

क्षेत्र का प्रकार विवरण
GLOBAL यह संपत्ति एक सिंगलटन है और इसमें कई क्षेत्र नहीं हैं।
WINDOW विंडोज़ पर आधारित क्षेत्र, VehicleAreaWindow enum का उपयोग करता है।
MIRROR दर्पण पर आधारित क्षेत्र, VehicleAreaMirror enum का उपयोग करता है।
SEAT सीटों के आधार पर क्षेत्र, VehicleAreaSeat enum का उपयोग करता है।
DOOR दरवाजे के आधार पर क्षेत्र, VehicleAreaDoor enum का उपयोग करता है।
WHEEL पहियों पर आधारित क्षेत्र, VehicleAreaWheel का उपयोग करता है।

प्रत्येक ज़ोन की गई संपत्ति को एक पूर्व-निर्धारित क्षेत्र प्रकार का उपयोग करना चाहिए। प्रत्येक क्षेत्र प्रकार में क्षेत्र प्रकार के लिए एक एनम में परिभाषित बिट फ़्लैग का एक सेट होता है। उदाहरण के लिए, SEAT क्षेत्र VehicleAreaSeat enums को परिभाषित करता है:

  • 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 केवल पीछे की दाहिनी सीट पर लागू होता है।

संपत्ति की स्थिति

प्रत्येक संपत्ति मूल्य के साथ एक VehiclePropertyStatus मान आता है। यह संपत्ति के लिए वर्तमान स्थिति को इंगित करता है:

वस्तु विवरण
AVAILABLE संपत्ति उपलब्ध है और मूल्य मान्य है।
UNAVAILABLE संपत्ति मूल्य वर्तमान में अनुपलब्ध है। किसी समर्थित प्रॉपर्टी के लिए क्षणिक रूप से अक्षम सुविधाओं के लिए उपयोग किया जाता है।
ERROR इस संपत्ति में कुछ गड़बड़ है।

एक संपत्ति का विन्यास

प्रत्येक संपत्ति के लिए कॉन्फ़िगरेशन जानकारी प्रदान करने के लिए VehiclePropConfig का उपयोग करें। जानकारी में शामिल हैं:

चर विवरण
access r , w , rw
changeMode प्रतिनिधित्व करता है कि परिवर्तन बनाम निरंतर पर एक संपत्ति की निगरानी कैसे की जाती है।
areaConfigs areaId , min , और max मान।
configArray अतिरिक्त कॉन्फ़िगरेशन पैरामीटर।
configString अतिरिक्त जानकारी एक स्ट्रिंग के रूप में पारित की गई।
minSampleRate maxSampleRate
prop संपत्ति आईडी, int

हैंडलिंग जोन गुण

एक ज़ोनड संपत्ति कई संपत्तियों के संग्रह के बराबर होती है जहां प्रत्येक उप-संपत्ति को निर्दिष्ट क्षेत्र आईडी मान के साथ एक्सेस किया जा सकता है।

  • ज़ोनड प्रॉपर्टी के लिए कॉल get करें हमेशा अनुरोध में एरिया आईडी शामिल करें। इसलिए, अनुरोधित क्षेत्र आईडी के लिए केवल वर्तमान मान लौटाया जाता है। यदि संपत्ति वैश्विक है, तो क्षेत्र आईडी 0 है।
  • ज़ोनड प्रॉपर्टी के लिए set कॉल में हमेशा अनुरोध में एरिया आईडी शामिल होती है। इसलिए, केवल अनुरोधित क्षेत्र आईडी बदली जाती है।
  • subscribe कॉल संपत्ति के लिए सभी क्षेत्र आईडी के लिए ईवेंट उत्पन्न करता है।

कॉल प्राप्त करें

आरंभीकरण के दौरान, संपत्ति का मूल्य अभी तक उपलब्ध नहीं हो सकता है क्योंकि मिलान वाहन नेटवर्क संदेश अभी तक प्राप्त नहीं हुआ है। ऐसे मामलों में, कॉल get करें -EAGAIN वापस आ जाना चाहिए। कुछ संपत्तियों (जैसे एचवीएसी) में बिजली की संपत्ति अलग/अलग होती है। ऐसी संपत्ति के लिए कॉल get (जब बंद हो जाता है) को एक त्रुटि वापस करने के बजाय एक UNAVAILABLE स्थिति वापस करनी चाहिए। उदाहरण के लिए, एचवीएसी तापमान प्राप्त करें

वीएचएएल को एचवीएसी उदाहरण मिलता है

चित्र 1 . एचवीएसी तापमान प्राप्त करें (सीएस = कार सेवा, वीएचएएल = वाहन एचएएल)

कॉल सेट करें

एक set कॉल एक एसिंक्रोनस ऑपरेशन है जिसमें अनुरोधित परिवर्तन किए जाने के बाद ईवेंट अधिसूचना शामिल होती है। एक विशिष्ट ऑपरेशन में, एक set कॉल पूरे वाहन नेटवर्क में परिवर्तन का अनुरोध करने की ओर ले जाती है। कुछ set कॉलों के लिए प्रारंभिक डेटा तैयार होने की आवश्यकता हो सकती है लेकिन आरंभीकरण के दौरान, ऐसा डेटा अभी तक उपलब्ध नहीं हो सकता है। ऐसे मामलों में, set कॉल -EAGAIN वापस आनी चाहिए। अलग-अलग पावर ऑन/ऑफ वाली कुछ संपत्तियों को वापस लौटना चाहिए -ESHUTDOWN जब संपत्ति बंद हो जाती है और सेट नहीं किया जा सकता है। जब तक set को प्रभावी नहीं बनाया जाता है, तब तक get करना आवश्यक रूप से वही मान नहीं लौटाता है जो सेट किया गया है। उदाहरण के लिए, set HVAC Temperature

वीएचएएल ने एचवीएसी उदाहरण सेट किया

चित्र 2 । एचवीएसी तापमान सेट करें (सीएस = कार सेवा, वीएचएएल = वाहन एचएएल)

कस्टम गुणों को संभालना

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

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

एचवीएसी गुणों को संभालना

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

संपत्ति उद्देश्य
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET प्रति क्षेत्र तापमान निर्धारित करें।
VEHICLE_PROPERTY_HVAC_RECIRC_ON प्रति क्षेत्र नियंत्रण पुनरावर्तन।

HVAC संपत्तियों की पूरी सूची देखने के लिए, type.hal में types.hal VEHICLE_PROPERTY_HVAC_* खोजें। जब HVAC प्रॉपर्टी VehicleAreaSeat का उपयोग करती है, तो ज़ोन किए गए HVAC प्रॉपर्टी को एरिया आईडी में मैप करने के लिए अतिरिक्त नियम लागू होते हैं। कार में प्रत्येक उपलब्ध सीट क्षेत्र आईडी सरणी में एक क्षेत्र आईडी का हिस्सा होना चाहिए।

उदाहरण एक। एक कार में दो आगे की सीटें ( ROW_1_LEFT, ROW_1_RIGHT ) और तीन पिछली सीटें ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ) होती हैं। कार में दो तापमान नियंत्रण इकाइयां हैं: चालक पक्ष और यात्री पक्ष।

  • HVAC_TEMPERATURE SET के लिए एरिया आईडी का एक मान्य मैपिंग सेट है:
    • ROW_1_LEFT | ROW_2_LEFT
    • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
  • समान हार्डवेयर कॉन्फ़िगरेशन के लिए एक वैकल्पिक मैपिंग है:
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • 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

सेंसर गुणों को संभालना

VHAL सेंसर गुण वास्तविक सेंसर डेटा या नीति जानकारी जैसे ड्राइविंग स्थिति का प्रतिनिधित्व करते हैं। कुछ सेंसर जानकारी (जैसे ड्राइविंग की स्थिति और दिन/रात मोड) बिना किसी प्रतिबंध के किसी भी ऐप द्वारा एक्सेस की जा सकती है क्योंकि एक सुरक्षित वाहन एप्लिकेशन बनाने के लिए डेटा अनिवार्य है। अन्य सेंसर जानकारी (जैसे वाहन की गति) अधिक संवेदनशील होती है और इसके लिए विशिष्ट अनुमतियों की आवश्यकता होती है जिसे उपयोगकर्ता प्रबंधित कर सकते हैं।

समर्थित सेंसर गुण देखें ( types.hal में)।

वाहन मानचित्र सेवा

व्हीकल मैप सर्विस (VMS) आम वाहन सुविधाओं, जैसे एडवांस्ड ड्राइवर असिस्टेंस सिस्टम्स (ADAS) का समर्थन करने के लिए पब/सब इंटरफेस के माध्यम से ग्राहकों के बीच मैप डेटा का आदान-प्रदान करने के लिए एक तंत्र प्रदान करता है। ग्राहक वीएचएएल या विशेषाधिकार प्राप्त एंड्रॉइड एप्लिकेशन में वीएमएस संपत्ति के माध्यम से इंटरफेसिंग वाहन सिस्टम शामिल कर सकते हैं। वीएमएस पर साझा किए गए डेटा का उद्देश्य वाहन प्रणालियों और सहायक ऐप्स द्वारा उपयोग के लिए मानचित्र डेटा तक सीमित होना है।

VMS केवल Android Automotive कार्यान्वयन में उपयोग के लिए अभिप्रेत है; AOSP में डिफ़ॉल्ट क्लाइंट नहीं होते हैं जो VMS को प्रकाशित या सब्सक्राइब करते हैं। VHAL में VMS गुण के लिए, संदेश प्रकार और डेटा संरचना VHAL 2.0 में VmsMessageType enum में वर्णित है, जो समर्थित VMS संदेशों के प्रकारों को सूचीबद्ध करता है। इस एनम का उपयोग वाहन संपत्ति पूर्णांक सरणी में पहले पूर्णांक के रूप में किया जाता है और यह निर्धारित करता है कि शेष संदेश कैसे डिकोड किया जाता है।