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