वाहन गुण

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

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

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

  • getAllPropConfigs() उत्पन्न करता है (vec<VehiclePropConfig>propConfigs)
    VHAL द्वारा समर्थित सभी गुणों के विन्यास की सूची बनाएं। 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 एनम का उपयोग करता है।
MIRROR दर्पण पर आधारित क्षेत्र, VehicleAreaMirror एनम का उपयोग करता है।
SEAT सीटों के आधार पर क्षेत्र, VehicleAreaSeat एनम का उपयोग करता है।
DOOR दरवाजों पर आधारित क्षेत्र, VehicleAreaDoor एनम का उपयोग करता है।
WHEEL पहियों पर आधारित क्षेत्र, VehicleAreaWheel एनम का उपयोग करता है।

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

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

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

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

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

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

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

ज़ोन संपत्तियों को संभालना

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

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

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

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

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

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

कॉल सेट करें

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

VHAL सेट HVAC उदाहरण

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

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

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

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

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

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

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

HVAC संपत्तियों की पूरी सूची देखने के लिए, VEHICLE_PROPERTY_HVAC_* को types.hal में खोजें। जब 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 में)।

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

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

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