वाहन गुण

वाहन हार्डवेयर अमूर्त लेयर (VHAL) इंटरफेस गुण ओईएम लागू कर सकते हैं परिभाषित करता है और (उदाहरण के लिए, चाहे संपत्ति एक पूर्णांक है और जो परिवर्तन मोड अनुमति दी जाती है) संपत्ति मेटाडाटा शामिल हैं। 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);
    संपत्ति मूल्य परिवर्तन की निगरानी शुरू करें। Zoned संपत्ति के लिए, 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 enum।

प्रत्येक ज़ोन की गई संपत्ति को एक पूर्व-निर्धारित क्षेत्र प्रकार का उपयोग करना चाहिए। प्रत्येक क्षेत्र प्रकार में क्षेत्र प्रकार के लिए एक एनम में परिभाषित बिट फ़्लैग का एक सेट होता है। उदाहरण के लिए, 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 zoned संपत्ति के लिए कॉल हमेशा अनुरोध में क्षेत्र आईडी भी शामिल है। इसलिए, अनुरोधित क्षेत्र आईडी के लिए केवल वर्तमान मान लौटाया जाता है। यदि संपत्ति वैश्विक है, तो क्षेत्र आईडी 0 है।
  • set zoned संपत्ति के लिए कॉल हमेशा अनुरोध में क्षेत्र आईडी भी शामिल है। इसलिए, केवल अनुरोधित क्षेत्र आईडी बदली जाती है।
  • 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 एसडीके)।
  • भरें VehiclePropConfig.configString कस्टम गुण का एक संक्षिप्त विवरण के साथ। यह मौजूदा वाहन संपत्तियों की आकस्मिक प्रतिकृति को चिह्नित करने के लिए विवेक जांच उपकरण की अनुमति देता है। उदाहरण के लिए, "खतरे की रोशनी की स्थिति।"
  • के माध्यम से प्रवेश CarPropertyManager (जावा घटकों के लिए) या वाहन नेटवर्क सेवा एपीआई के माध्यम से (मूल के लिए)। अन्य कार एपीआई को संशोधित न करें क्योंकि ऐसा करने से भविष्य में संगतता समस्याएं हो सकती हैं।
  • विक्रेता गुण को लागू करने के बाद, में केवल अनुमति सूची का चयन VehicleVendorPermission विक्रेता संपत्तियों के लिए enum। सिस्टम गुणों के लिए विक्रेता अनुमतियों को मैप करना सीटीएस और वीटीएस को तोड़ देगा।

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

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

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

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

उदाहरण एक। एक कार सामने दो सीटों (है 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 )।

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

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

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