वाहन_एचडब्ल्यू_डिवाइस संरचना संदर्भ
#include < vehicle.h >
डेटा फ़ील्ड | |
संरचना hw_device_t | सामान्य |
पूर्णांक(* | init )(संरचना वाहन_hw_device *डिवाइस, वाहन_इवेंट_कॉलबैक_fn इवेंट_fn, वाहन_त्रुटि_कॉलबैक_fn err_fn) |
पूर्णांक(* | रिलीज )(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस) |
वाहन_प्रॉप_कॉन्फिग_टी स्थिरांक *(* | सूची_गुण )(संरचना वाहन_hw_device *डिवाइस, int *num_properties) |
पूर्णांक(* | प्राप्त करें )(संरचना वाहन_एचडब्ल्यू_डिवाइस *डिवाइस, वाहन_प्रॉप_वैल्यू_टी *डेटा) |
खालीपन(* | रिलीज_मेमोरी_फ्रॉम_गेट )(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, व्हीकल_प्रॉप_वैल्यू_टी *डेटा) |
पूर्णांक(* | सेट )(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, कॉन्स्ट व्हीकल_प्रॉप_वैल्यू_टी *डेटा) |
पूर्णांक(* | सदस्यता लें )(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, int32_t प्रोप, फ्लोट सैंपल_रेट, int32_t जोन) |
पूर्णांक(* | सदस्यता समाप्त करें )(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, int32_t प्रोप) |
पूर्णांक(* | डंप )(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, इंट एफडी) |
विस्तृत विवरण
फ़ील्ड दस्तावेज़ीकरण
struct hw_device_t सामान्य |
int(* डंप)(स्ट्रक्चर वाहन_hw_device *डिवाइस, int fd) |
वाहन हाल के लिए डिबगिंग स्थिति का प्रिंट आउट लें। इसे वाहन नेटवर्क सेवा द्वारा कॉल किया जाएगा और सेवा के डंप में शामिल किया जाएगा।
पास किए गए फ़ाइल डिस्क्रिप्टर का उपयोग dprintf() या write() का उपयोग करके डिबगिंग टेक्स्ट लिखने के लिए किया जा सकता है। पाठ केवल ASCII एन्कोडिंग में होना चाहिए.
प्रदर्शन संबंधी जरूरतें:
यह एक नॉन-ब्लॉकिंग कॉल होनी चाहिए. एचएएल को इस कॉल से 1ms में वापस आना चाहिए, इस कॉल से 10ms में वापस आना चाहिए। इस कॉल को गतिरोध से बचना चाहिए, क्योंकि इसे ऑपरेशन के किसी भी बिंदु पर कॉल किया जा सकता है। उपयोग किए गए किसी भी सिंक्रोनाइज़ेशन प्रिमिटिव (जैसे म्यूटेक्स लॉक या सेमाफोर) को टाइमआउट के साथ हासिल किया जाना चाहिए।
int(* प्राप्त करें)(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, व्हीकल_प्रॉप_वैल्यू_टी *डेटा) |
वाहन संपत्ति का मूल्य तुरंत प्राप्त करें। डेटा ठीक से आवंटित किया जाना चाहिए. एपीआई का कॉलर डेटा फ़ील्ड का मालिक है। कॉलर ज़ोन की गई संपत्ति के लिए डेटा->प्रोप, डेटा->वैल्यू_टाइप और वैकल्पिक रूप से ज़ोन मान सेट करेगा। लेकिन एचएएल कार्यान्वयन को लौटते समय सभी प्रविष्टियाँ ठीक से भरने की आवश्यकता होती है। पॉइंटर प्रकार के लिए, एचएएल कार्यान्वयन को आवश्यक मेमोरी आवंटित करनी चाहिए और कॉलर रिलीज_मेमोरी_फ्रॉम_गेट को कॉल करने के लिए जिम्मेदार है, जो एचएएल को आवंटित मेमोरी जारी करने की अनुमति देता है। VEHICLE_PROP_CHANGE_MODE_STATIC प्रकार की संपत्ति के लिए, get को हमेशा समान मान लौटाना चाहिए। VEHICLE_PROP_CHANGE_MODE_ON_CHANGE प्रकार की संपत्ति के लिए, इसे नवीनतम मान लौटाना चाहिए। यदि अभी तक कोई डेटा उपलब्ध नहीं है, जो प्रारंभिक चरण के दौरान हो सकता है, तो यह कॉल -EAGAIN के त्रुटि कोड के साथ तुरंत वापस आनी चाहिए।
int(* init)(स्ट्रक्चर वाहन_hw_device *डिवाइस, वाहन_इवेंट_कॉलबैक_fn इवेंट_fn, वाहन_त्रुटि_कॉलबैक_fn err_fn) |
वाहन_प्रॉप_कॉन्फिग_टी कॉन्स्ट*(* सूची_गुण)(संरचना वाहन_एचडब्ल्यू_डिवाइस *डिवाइस, पूर्णांक *संख्या_गुण) |
सभी उपलब्ध संपत्तियों की गणना करें। सूची "सूची" में लौटा दी गई है।
- पैरामीटर
num_properties पुनर्निर्धारित सरणी में निहित गुणों की संख्या।
- रिटर्न
- इस कार द्वारा समर्थित संपत्ति कॉन्फ़िगरेशन की श्रृंखला। ध्यान दें कि लौटाया गया डेटा स्थिर है और कॉलर इसे संशोधित नहीं कर सकता है। इसे दोबारा कॉपी करने से बचने के लिए एचएएल कार्यान्वयन को यह मेमोरी तब तक बनाए रखनी चाहिए जब तक कि एचएएल जारी न हो जाए।
int(* रिलीज)(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस) |
क्लोज़ कॉल करने से पहले उपयोगकर्ता को पंजीकृत कॉलबैक फ़ंक्शंस को नष्ट कर देना चाहिए। यदि रिलीज() से पहले सभी संपत्तियों पर अनसब्सक्राइब() कॉल नहीं किया जाता है तो रिलीज() गुणों को स्वयं ही अनसब्सक्राइब कर देगा।
शून्य(* रिलीज_मेमोरी_फ्रॉम_गेट)(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, व्हीकल_प्रॉप_वैल्यू_टी *डेटा) |
पिछले प्राप्त कॉल में डेटा को आवंटित मेमोरी जारी करें। बाइट या स्ट्रिंग के लिए कॉल प्राप्त करने में वाहन हॉल से आवश्यक मेमोरी आवंटित करना शामिल है। सुरक्षित रहने के लिए, व्हीकल हाल द्वारा आवंटित मेमोरी को व्हीकल हाल द्वारा जारी किया जाना चाहिए और वाहन नेटवर्क सेवा इसे तब कॉल करेगी जब व्हीकल हाल से डेटा आवश्यक नहीं रह जाएगा। वाहन हाल कार्यान्वयन को केवल वाहन_प्रॉप_वैल्यू_टी जैसे डेटा->str_value.data या डेटा->बाइट्स_वैल्यू.डेटा के सदस्य को जारी करना चाहिए, लेकिन डेटा को स्वयं नहीं, क्योंकि डेटा स्वयं वाहन नेटवर्क सेवा से आवंटित किया जाता है। एक बार मेमोरी खाली हो जाने पर, संबंधित पॉइंटर को NULL bu व्हीकल हाल पर सेट किया जाना चाहिए।
int(* सेट)(स्ट्रक्चर व्हीकल_एचडब्ल्यू_डिवाइस *डिवाइस, कॉन्स्ट व्हीकल_प्रॉप_वैल्यू_टी *डेटा) |
वाहन संपत्ति का मूल्य निर्धारित करें। डेटा ठीक से आवंटित किया जाना चाहिए न कि NULL। एपीआई का कॉलर डेटा फ़ील्ड का मालिक है। सेट ऑपरेशन के लिए डेटा के टाइमस्टैम्प को नजरअंदाज कर दिया जाएगा। कुछ संपत्तियों को सेट करने के लिए प्रारंभिक स्थिति उपलब्ध होने की आवश्यकता होती है। वाहन के आधार पर, ऐसा प्रारंभिक डेटा प्रारंभ के बाद थोड़े समय के लिए उपलब्ध नहीं हो सकता है। ऐसे मामले में, सेट कॉल कॉल प्राप्त करने की तरह -EAGAIN लौटा सकता है। अलग पावर नियंत्रण वाली संपत्ति के लिए, यदि संपत्ति चालू नहीं है तो सेट विफल हो सकता है। ऐसे मामले में, HAL को -ESHUTDOWN त्रुटि लौटानी चाहिए।
int(* सदस्यता लें)(संरचना वाहन_hw_device *डिवाइस, int32_t प्रोप, फ़्लोट नमूना_दर, int32_t ज़ोन) |
घटनाओं की सदस्यता लें. list_properties के आउटपुट के आधार पर यदि संपत्ति है: ए) ऑन-चेंज: सैंपल_रेट को 0 पर सेट किया जाना चाहिए। बी) आवृत्ति का समर्थन करता है: सैंपल_रेट को न्यूनतम_सैंपल_रेट से अधिकतम_सैंपल_रेट पर सेट किया जाना चाहिए। संपत्तियों के प्रकार में बदलाव के लिए, वाहन नेटवर्क सेवा प्रारंभिक स्थिति की जांच करने के लिए एक और कॉल करेगी। इसके कारण, वाहन हाल कार्यान्वयन को ऑन-चेंज प्रकार की संपत्तियों के लिए प्रारंभिक स्थिति भेजने की आवश्यकता नहीं होती है।
- पैरामीटर
उपकरण प्रोप नमूना दर क्षेत्र ज़ोन की गई संपत्ति के लिए सभी सदस्यता प्राप्त ज़ोन। गैर-क्षेत्रीय संपत्ति के लिए इसे अनदेखा किया जा सकता है। 0 का मतलब नो ज़ोन के बजाय सभी ज़ोन समर्थित हैं।
int(* अनसब्सक्राइब)(स्ट्रक्चर व्हीकल_hw_डिवाइस *डिवाइस, int32_t प्रोप) |
इस संरचना के लिए दस्तावेज़ीकरण निम्नलिखित फ़ाइल से तैयार किया गया था:
- हार्डवेयर/लिबहार्डवेयर/शामिल/हार्डवेयर/ वाहन.एच