مرجع هيكل السيارة

مرجع هيكل السيارة

#include < vehicle.h >

حقول البيانات

هيكل hw_device_t مشترك
int (* init ) ( هيكل مركبة_hw_device * device، vehicle_event_callback_fn event_fn، vehicle_error_callback_fn err_fn)
int (* الافراج ) ( هيكل مركبة_hw_device * جهاز)
مركبة_prop_config_t const * (* list_properties ) ( هيكل السيارة_hw_device * الجهاز ، عدد_الخصائص_العملية *)
int (* الحصول على ) ( هيكل مركبة_hw_device * جهاز ، مركبة_prop_value_t * بيانات)
فارغ(* release_memory_from_get ) ( هيكل مركبة_hw_device * device ، vehicle_prop_value_t * data)
int (* مجموعة ) ( هيكل مركبة_hw_device * جهاز ، مركبة مركبة_prop_value_t * بيانات)
int (* اشتراك ) ( هيكل مركبة_hw_device * جهاز ، عنصر int32_t ، معدل عينة عائمة ، مناطق int32_t)
int (* إلغاء الاشتراك ) (Struct Vehicle_hw_device * device، int32_t prop)
int (* تفريغ ) ( هيكل مركبة_hw_device * جهاز ، int fd)

وصف مفصل

تعريف في السطر 1639 لملف السيارة .

التوثيق الميداني

تعريف في السطر 1640 من ملف السيارة. h .

int (* التفريغ) (Struct vehicle_hw_device * device، int fd)

اطبع حالة التصحيح لنصف السيارة. سيتم استدعاء هذا بواسطة خدمة شبكة المركبات وسيتم تضمينه في تفريغ الخدمة.

يمكن استخدام واصف الملف الذي تم تمريره لكتابة نص تصحيح الأخطاء باستخدام dprintf () أو الكتابة (). يجب أن يكون النص بترميز ASCII فقط.

متطلبات الأداء:

يجب أن تكون هذه مكالمة غير محظورة. يجب أن يعود HAL من هذه المكالمة خلال 1 مللي ثانية ، ويجب أن يعود من هذه المكالمة في 10 مللي ثانية. يجب أن تتجنب هذه المكالمة المآزق ، كما قد يتم استدعاؤها في أي نقطة من العملية. يجب الحصول على أي أساسيات مزامنة مستخدمة (مثل أقفال كائن المزامنة أو الإشارات) مع انقضاء المهلة.

تعريف في السطر 1744 من ملف السيارة. h .

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.

تعريف في السطر 1681 من ملف السيارة. h .

بعد الاتصال مفتوحًا على الجهاز ، يجب على المستخدم تسجيل عمليات الاسترجاعات لوظائف الأحداث والخطأ.

تعريف في السطر 1646 من ملف السيارة. h .

مركبة_prop_config_t const * (* list_properties) ( هيكل مركبة_hw_device * device ، int * num_properties)

تعداد جميع الخصائص المتاحة. يتم إرجاع القائمة في "قائمة".

المعلمات
عدد_الخصائص عدد الخصائص الموجودة في المصفوفة المعاد ضبطها.
عائدات
مجموعة من تكوينات الخصائص التي تدعمها هذه السيارة. لاحظ أن البيانات التي تم إرجاعها ثابتة ولا يمكن للمتصل تعديلها. يجب أن يحتفظ تطبيق HAL بهذه الذاكرة حتى يتم تحرير HAL لتجنب نسخ هذا مرة أخرى.

التعريف في السطر 1663 لملف السيارة .

int (* release) ( مبنى مركبة_hw_device * جهاز)

قبل الاتصال بإغلاق ، يجب على المستخدم إتلاف وظائف رد الاتصال المسجلة. في حالة عدم استدعاء استدعاء إلغاء الاشتراك () على جميع الخصائص قبل الإصدار () ، فإن تحرير () سيؤدي إلى إلغاء اشتراك الخصائص نفسها.

تعريف في السطر 1654 من ملف السيارة. h .

باطل (* release_memory_from_get) ( بناء مركبة_hw_device * device ، vehicle_prop_value_t * data)

حرر الذاكرة المخصصة للبيانات في مكالمة الاستلام السابقة. الحصول على نداء للبايت أو السلسلة يتضمن تخصيص الذاكرة اللازمة من نصف السيارة. لكي تكون آمنًا ، يجب تحرير الذاكرة المخصصة بواسطة نصف السيارة من خلال نصف السيارة وستقوم خدمة شبكة السيارة باستدعاء هذا عندما لا تكون البيانات من السيارة ضرورية. يجب أن يحرر تطبيق نصف السيارة فقط عضو vehicle_prop_value_t مثل data-> str_value.data أو data-> bytes_value.data ولكن ليس البيانات نفسها حيث يتم تخصيص البيانات نفسها من خدمة شبكة السيارة. بمجرد تحرير الذاكرة ، يجب ضبط المؤشر المقابل على NULL bu hal للمركبة.

التعريف في السطر 1693 لملف السيارة .

int (* set) (Struct vehicle_hw_device * device، const vehicle_prop_value_t * data)

حدد قيمة خاصية السيارة. يجب تخصيص البيانات بشكل صحيح وليست فارغة. المتصل بواجهة برمجة التطبيقات يمتلك حقل البيانات. سيتم تجاهل الطابع الزمني للبيانات للعملية المحددة. يتطلب تعيين بعض الخصائص توفر الحالة الأولية. اعتمادًا على موقف السيارة ، قد لا تتوفر هذه البيانات الأولية لفترة قصيرة بعد التهيئة. في مثل هذه الحالة ، يمكن أن تعود المكالمة المحددة - EAGAIN مثل get call. بالنسبة لخاصية ذات تحكم منفصل في الطاقة ، يمكن أن تفشل المجموعة إذا لم يتم تشغيل الخاصية. في مثل هذه الحالة ، يجب أن يقوم hal بإرجاع الخطأ -ESHUTDOWN.

تعريف في السطر 1706 لملف السيارة .

int (* Subscribe) (Struct vehicle_hw_device * device، int32_t prop، float sample_rate، int32_t zone)

اشترك في الأحداث. اعتمادًا على ناتج list_properties إذا كانت الخاصية هي: أ) عند التغيير: يجب تعيين sample_rate إلى 0. b) دعم التردد: يجب تعيين sample_rate من min_sample_rate إلى max_sample_rate. بالنسبة لنوع الخصائص عند التغيير ، ستقوم خدمة شبكة السيارة بإجراء مكالمة أخرى للتحقق من الحالة الأولية. نتيجة لذلك ، لا يحتاج تطبيق نصف السيارة إلى إرسال الحالة الأولية لنوع الخصائص عند التغيير.

المعلمات
جهاز
دعم
معدل العينة
المناطق جميع المناطق المشتركة للممتلكات المخصصة. يمكن تجاهله للممتلكات غير المخصصة لمناطق. 0 تعني جميع المناطق المدعومة بدلاً من عدم وجود منطقة.

التعريف في السطر 1723 لملف السيارة .

int (* unsubscribe) ( مبنى مركبة_hw_device * جهاز ، int32_t prop)

إلغاء الاشتراك في الممتلكات.

التعريف في السطر 1727 لملف السيارة .


تم إنشاء وثائق هذه البنية من الملف التالي:
  • الأجهزة / libhardware / تشمل / الأجهزة / المركبات