vehicle_hw_device Struct Reference

vehicle_hw_device Struct Reference

#include < vehicle.h >

שדות נתונים

struct hw_device_t מְשׁוּתָף
int(* init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)
int(* release )(struct vehicle_hw_device *device)
vehicle_prop_config_t const *(* list_properties )(struct vehicle_hw_device *device, int *num_properties)
int(* get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data)
בָּטֵל(* release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data)
int(* set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)
int(* subscribe )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)
int(* unsubscribe )(struct vehicle_hw_device *device, int32_t prop)
int(* dump )(struct vehicle_hw_device *device, int fd)

תיאור מפורט

הגדרה בשורה 1639 של תיק רכב.ח.

תיעוד שטח

struct hw_device_t נפוץ

הגדרה בשורה 1640 של תיק vehicle.h .

int(* dump)(struct vehicle_hw_device *device, int fd)

הדפס מצב ניפוי באגים עבור מחלקת הרכב. זה ייקרא על ידי שירות רשת הרכב וייכלל במזבלה של השירות.

ניתן להשתמש במתאר הקובץ המועבר לכתיבת טקסט ניפוי באגים באמצעות dprintf() או write(). הטקסט צריך להיות בקידוד ASCII בלבד.

דרישות ביצועים:

זו חייבת להיות שיחה לא חוסמת. ה-HAL אמור לחזור משיחה זו בעוד 1ms, חייב לחזור משיחה זו בעוד 10ms. קריאה זו חייבת למנוע מבוי סתום, כפי שהיא עשויה להיקרא בכל נקודת פעולה. כל פרימיטיביות סנכרון בשימוש (כגון נעילות mutex או סמפורות) צריכים להירכש עם פסק זמן.

הגדרה בשורה 1744 של תיק רכב.ח.

int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

קבל שווי נכס רכב באופן מיידי. יש להקצות את הנתונים כראוי. המתקשר של ה-API הוא הבעלים של שדה הנתונים. המתקשר יגדיר 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 של תיק vehicle.h .

int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)

לאחר הקריאה לפתיחה במכשיר, המשתמש צריך לרשום התקשרויות חוזרות עבור פונקציות אירועים ושגיאות.

הגדרה בשורה 1646 של תיק רכב.ח.

vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties)

מנה את כל הנכסים הזמינים. הרשימה מוחזרת ב"רשימה".

פרמטרים
מספר_מאפיינים מספר המאפיינים הכלולים במערך המכוונן מחדש.
החזרות
מערך תצורות נכסים הנתמכים על ידי המכונית הזו. שים לב שהנתונים שהוחזרו הם const והמתקשר לא יכול לשנות אותם. יישום HAL צריך לשמור את הזיכרון הזה עד לשחרור HAL כדי להימנע מהעתקה נוספת.

הגדרה בשורה 1663 של תיק רכב.ח.

int(* release)(struct vehicle_hw_device *device)

לפני קריאת סגור על המשתמש להרוס את פונקציות ההתקשרות חזרה הרשומות. במקרה שהקריאה unsubscribe() לא נקראת בכל המאפיינים לפני release() אז release() תבטל את הרישום של המאפיינים עצמו.

הגדרה בשורה 1654 של תיק vehicle.h .

void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

שחרר זיכרון שהוקצה לנתונים בשיחת קבל קודמת. get call עבור בתים או מחרוזת כרוכה בהקצאת זיכרון הכרחי ממרכז הרכב. ליתר בטחון, יש לשחרר זיכרון שהוקצה על ידי אגף הרכב על ידי אגף הרכב ושירות רשת הרכב יקרא לזה כאשר אין צורך בנתונים ממרכז הרכב. יישום hal רכב צריך לשחרר רק חבר של 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)

הגדר ערך מאפיין רכב. יש להקצות את הנתונים כראוי ולא NULL. המתקשר של ה-API הוא הבעלים של שדה הנתונים. חותמת הזמן של הנתונים תתעלם עבור פעולת ההגדרה. הגדרת מאפיינים מסוימים דורשת מצב התחלתי זמין. בהתאם לתא הרכב, ייתכן שנתונים ראשוניים כאלה לא יהיו זמינים למשך זמן קצר לאחר הפתיחה. במקרה כזה, שיחה מוגדרת יכולה לחזור -EAGAIN כמו לקבל שיחה. עבור מאפיין עם בקרת חשמל נפרדת, ההגדרה עלולה להיכשל אם המאפיין אינו מופעל. במקרה כזה, hal צריך להחזיר שגיאה -ESHUTDOWN.

הגדרה בשורה 1706 של תיק רכב.ח.

int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)

הירשמו לאירועים. בהתאם לפלט של list_properties אם המאפיין הוא: a) on-change: sample_rate צריך להיות מוגדר ל-0. ב) תומך בתדירות: sample_rate צריך להיות מוגדר מ-min_sample_rate ל-max_sample_rate. עבור סוג נכסים בשינוי, שירות רשת הרכב יבצע שיחה נוספת כדי לבדוק את המצב ההתחלתי. בשל כך, יישום hal רכב אינו צריך לשלוח מצב ראשוני עבור סוג נכסים בשינוי.

פרמטרים
התקן
לִתְמוֹך
קצב דגימה
אזורים כל האזורים המנויים עבור נכסים אזוריים. ניתן להתעלם מנכסים שאינם אזוריים. 0 פירושו שכל האזורים נתמכים במקום ללא אזור.

הגדרה בשורה 1723 של תיק רכב.ח.

int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop)

ביטול מנוי בנכס.

הגדרה בשורה 1727 של תיק רכב.ח.


התיעוד עבור מבנה זה נוצר מהקובץ הבא:
  • hardware/libhardware/include/hardware/ vehicle.h