مركبة_hw_device مرجع الهيكل
#include < vehicle.h >
حقول البيانات | |
البنية hw_device_t | شائع |
كثافة العمليات (* | الحرف الأول )(هيكل مركبة_hw_device *جهاز، مركبة_حدث_callback_fn Event_fn، مركبة_خطأ_callback_fn err_fn) |
كثافة العمليات (* | الإصدار )(هيكل السيارة_hw_device *device) |
Vehicle_prop_config_t const *(* | list_properties )(struct Vehicle_hw_device *device, int *num_properties) |
كثافة العمليات (* | احصل على )(بنية مركبة_hw_device *device، مركبة_prop_value_t *بيانات) |
فارغ(* | Release_memory_from_get )(بنية مركبة_hw_device *جهاز، مركبة_بروب_قيمة_t *بيانات) |
كثافة العمليات (* | مجموعة ) (بنية مركبة_hw_device *device، const Vehicle_prop_value_t *data) |
كثافة العمليات (* | الاشتراك ) (هيكل السيارة_hw_device *الجهاز، دعامة int32_t، معدل العينة العائمة، مناطق int32_t) |
كثافة العمليات (* | إلغاء الاشتراك )(struct Vehicle_hw_device *device, int32_t Prop) |
كثافة العمليات (* | تفريغ )(struct Vehicle_hw_device *device, int fd) |
وصف تفصيلي
التوثيق الميداني
بناء hw_device_t مشترك |
int(* dump)(struct Vehicle_hw_device *device, int fd) |
اطبع حالة التصحيح لمركبة hal. سيتم استدعاء هذا بواسطة خدمة شبكة السيارة وسيتم تضمينه في تفريغ الخدمة.
يمكن استخدام واصف الملف الذي تم تمريره لكتابة نص تصحيح الأخطاء باستخدام dprintf() أو write(). يجب أن يكون النص بترميز ASCII فقط.
متطلبات الأداء:
يجب أن تكون هذه مكالمة غير محظورة. يجب أن يعود HAL من هذه المكالمة خلال 1 مللي ثانية، ويجب أن يعود من هذه المكالمة خلال 10 مللي ثانية. يجب أن تتجنب هذه المكالمة حالة الجمود، حيث يمكن استدعاؤها في أي نقطة من العمليات. يجب الحصول على أي أساسيات مزامنة مستخدمة (مثل أقفال كائن المزامنة أو الإشارات) بعد انتهاء المهلة.
int(* get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
احصل على قيمة ملكية السيارة على الفور. ينبغي تخصيص البيانات بشكل صحيح. يمتلك المتصل بواجهة برمجة التطبيقات حقل البيانات. سيقوم المتصل بتعيين data->prop، وdata->value_type، وقيمة المنطقة اختياريًا للخاصية المخصصة للمنطقة. لكن تطبيق HAL يحتاج إلى ملء كافة الإدخالات بشكل صحيح عند العودة. بالنسبة لنوع المؤشر، يجب أن يخصص تنفيذ HAL الذاكرة اللازمة ويكون المتصل مسؤولاً عن استدعاء Release_memory_from_get، والذي يسمح لـ HAL بتحرير الذاكرة المخصصة. بالنسبة لنوع الخاصية VEHICLE_PROP_CHANGE_MODE_STATIC، يجب أن يُرجع get نفس القيمة دائمًا. بالنسبة لنوع الخاصية VEHICLE_PROP_CHANGE_MODE_ON_CHANGE، يجب أن تقوم بإرجاع أحدث قيمة. إذا لم تكن هناك بيانات متاحة حتى الآن، وهو ما يمكن أن يحدث أثناء المرحلة الأولية، فيجب أن تعود هذه المكالمة على الفور مع رمز الخطأ -EAGAIN.
int(* init)(struct Vehicle_hw_device *device, Vehicle_event_callback_fn events_fn, Vehicle_error_callback_fn err_fn) |
مركبة_prop_config_t const*(* list_properties)(بنية مركبة_hw_device *device, int *num_properties) |
تعداد جميع الخصائص المتاحة. يتم إرجاع القائمة في "قائمة".
- حدود
num_properties عدد الخصائص الموجودة في المصفوفة المعاد ضبطها.
- عائدات
- مجموعة من تكوينات الخصائص التي تدعمها هذه السيارة. لاحظ أن البيانات التي تم إرجاعها ثابتة ولا يمكن للمتصل تعديلها. يجب أن يحتفظ تطبيق HAL بهذه الذاكرة حتى يتم تحرير HAL لتجنب نسخها مرة أخرى.
int(* إطلاق)(هيكل مركبة_hw_device *جهاز) |
قبل الاتصال بالإغلاق، يجب على المستخدم تدمير وظائف رد الاتصال المسجلة. في حالة عدم استدعاء استدعاء إلغاء الاشتراك () على كافة الخصائص قبل الإصدار () فإن الإصدار () سيقوم بإلغاء الاشتراك في الخصائص نفسها.
باطلة (* Release_memory_from_get) (بنية مركبة_hw_device *جهاز، مركبة_بروب_قيمة_t *بيانات) |
قم بتحرير الذاكرة المخصصة للبيانات في مكالمة الحصول السابقة. يتضمن الحصول على استدعاء للبايت أو السلسلة تخصيص الذاكرة اللازمة من hal المركبة. لكي تكون آمنًا، يجب تحرير الذاكرة المخصصة بواسطة hal المركبة بواسطة hal المركبة وستقوم خدمة شبكة المركبة باستدعاء هذا عندما لا تكون البيانات من hal المركبة ضرورية. يجب أن يؤدي تنفيذ نصف المركبات فقط إلى تحرير عضومركبة_prop_value_t مثل البيانات->str_value.data أو البيانات->bytes_value.data ولكن ليس البيانات نفسها حيث يتم تخصيص البيانات نفسها من خدمة شبكة المركبة. بمجرد تحرير الذاكرة، يجب ضبط المؤشر المقابل على NULL buمركبة hal.
int(* set)(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data) |
تعيين قيمة خاصية السيارة. يجب تخصيص البيانات بشكل صحيح وليس فارغة. يمتلك المتصل بواجهة برمجة التطبيقات حقل البيانات. سيتم تجاهل الطابع الزمني للبيانات لعملية التعيين. يتطلب ضبط بعض الخصائص توفر الحالة الأولية. اعتمادًا على حالة السيارة، قد لا تكون هذه البيانات الأولية متاحة لفترة قصيرة بعد بدء التشغيل. في مثل هذه الحالة، يمكن لضبط المكالمة العودة -EAGAIN مثل تلقي مكالمة. بالنسبة لخاصية ذات تحكم منفصل في الطاقة، يمكن أن تفشل المجموعة إذا لم يتم تشغيل الخاصية. في مثل هذه الحالة، يجب أن يُرجع hal -خطأ ESHUTDOWN.
int(* الاشتراك)(هيكل مركبة_hw_device *device، دعامة int32_t، معدل عينة عائمة، مناطق int32_t) |
الاشتراك في الأحداث. اعتمادًا على مخرجات list_properties إذا كانت الخاصية هي: أ) قيد التغيير: يجب ضبط معدل العينة على 0. ب) يدعم التردد: يجب ضبط معدل العينة من min_sample_rate إلى max_sample_rate. بالنسبة لنوع الخصائص قيد التغيير، ستقوم خدمة شبكة المركبة بإجراء مكالمة أخرى للتحقق من الحالة الأولية. ونتيجة لذلك، لا يحتاج تنفيذ نصف المركبة إلى إرسال الحالة الأولية لنوع الخصائص عند التغيير.
- حدود
جهاز دعم معدل العينة المناطق جميع المناطق المشتركة للممتلكات المخصصة. يمكن تجاهلها بالنسبة للممتلكات غير المخصصة للمناطق. 0 يعني أن جميع المناطق مدعومة بدلاً من عدم وجود منطقة.
int(* إلغاء الاشتراك)(struct Vehicle_hw_device *device, int32_t Prop) |
تم إنشاء وثائق هذه البنية من الملف التالي:
- الأجهزة/libhardware/تشمل/الأجهزة/ مركبة.ح