vehicle_hw_device 結構體參考資料

vehicle_hw_device 結構體參考資料

#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)
 
void(*  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)
 

詳細說明

定義位於檔案 vehicle.h 的第 1639 行。

欄位說明文件

struct hw_device_t common

定義位於檔案 vehicle.h 1640 行。

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

列印車輛 HAL 的偵錯狀態。這會由車輛網路服務呼叫,並納入服務的傾印內容。

傳入的檔案描述元可用於使用 dprintf() 或 write() 編寫偵錯文字。文字應僅採用 ASCII 編碼。

效能需求:

這必須是非阻斷式呼叫。HAL 應在 1 毫秒內從這個呼叫傳回,且必須在 10 毫秒內從這個呼叫傳回。此呼叫可能會在任何運作點呼叫,因此必須避免發生死結。使用任何同步處理原始碼 (例如互斥鎖或訊號量) 時,應設定逾時值。

定義位於檔案 vehicle.h 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 錯誤碼。

定義位於檔案 vehicle.h 1681 行。

在裝置上呼叫 open 後,使用者應為事件和錯誤函式註冊回呼。

定義位於檔案 vehicle.h 1646 行。

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

列舉所有可用資源。清單會以「list」格式傳回。

參數
num_properties 傳回陣列中包含的屬性數量。
退貨
這輛車支援的屬性設定陣列。請注意,傳回的資料為常數,呼叫端無法修改。HAL 實作應保留此記憶體,直到 HAL 釋出為止,以免再次複製。

定義位於檔案 vehicle.h 1663 行。

int(* release)(struct vehicle_hw_device *device)

在呼叫 close 之前,使用者應先刪除已註冊的回呼函式。如果在 release() 之前,未對所有屬性呼叫 unsubscribe() 方法,則 release() 會自行取消訂閱屬性。

定義位於檔案 vehicle.h 1654 行。

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

釋出先前 get 呼叫中分配給資料的記憶體。針對位元組或字串的 get 呼叫,會涉及從車輛 HAL 分配必要的記憶體。為求安全起見,車輛 HAL 分配的記憶體應由車輛 HAL 釋放,而車輛網路服務會在不再需要車輛 HAL 的資料時呼叫此函式。車輛 HAL 實作應只釋放 vehicle_prop_value_t 的資料成員,例如 data->str_value.data 或 data->bytes_value.data,但不釋放資料本身,因為資料本身是由車輛網路服務分配。記憶體釋放後,對應的指標應設為車輛 HAL 的 NULL。

定義位於檔案 vehicle.h 1693 行。

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)

設定車輛屬性值。資料應正確分配,且不得為空值。API 的呼叫端擁有資料欄位。在 set 作業中,系統會忽略資料的時間戳記。設定某些資源時,必須提供初始狀態。視車輛 HAL 而定,這類初始資料可能在初始化後的短暫時間內無法使用。在這種情況下,set call 可以傳回 -EAGAIN,就像 get call 一樣。如果屬性有獨立的電源控制,如果未開啟屬性,就可能無法設定。在這種情況下,hal 應傳回 -ESHUTDOWN 錯誤。

定義位於檔案 vehicle.h 1706 行。

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

訂閱事件。視 list_properties 的輸出結果而定,如果屬性為:a) 變更時:應將 sample_rate 設為 0。b) 支援頻率:應將 sample_rate 設為從 min_sample_rate 到 max_sample_rate。對於變更型屬性,車輛網路服務會再發出另一個 get 呼叫,以便檢查初始狀態。因此,車輛 HAL 實作不需要傳送變更型屬性類型的初始狀態。

參數
裝置
prop
sample_rate
可用區 區域資源的所有訂閱區域。如果是未區分的資源,則可忽略。0 代表支援所有區域,而非不支援任何區域。

定義位於檔案 vehicle.h 1723 行。

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

取消房源的訂閱。

定義位於檔案 vehicle.h 1727 行。


這個結構體的說明文件是由下列檔案產生: