Vehicle_hw_device結構參考

Vehicle_hw_device結構參考

#include < vehicle.h >

資料欄位

結構體hw_device_t常見的
整數(* init )(結構vehicle_hw_device *設備, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)
整數(*釋放)(結構vehicle_hw_device *裝置)
Vehicle_prop_config_t const *(* list_properties )(結構vehicle_hw_device *設備,int *num_properties)
整數(*取得)(結構vehicle_hw_device *設備, vehicle_prop_value_t *資料)
空白(* release_memory_from_get )(結構vehicle_hw_device *設備, vehicle_prop_value_t *資料)
整數(*設定)(結構vehicle_hw_device *設備,常數vehicle_prop_value_t *資料)
整數(*訂閱)(struct Vehicle_hw_device *device, int32_t prop, float Sample_rate, int32_t zone)
整數(*取消訂閱)( structvehicle_hw_device *device, int32_t prop)
整數(*轉儲)(結構vehicle_hw_device *設備,int fd)

詳細說明

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

現場文檔

結構體hw_device_t公共

定義位於檔案Vehicle.h的第1640行。

int(* dump)(結構vehicle_hw_device *device, int fd)

列印出車輛hal的調試狀態。這將由車輛網路服務調用,並將包含在服務的轉儲中。

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

性能要求:

這必須是非阻塞呼叫。 HAL 應在 1 毫秒內從此呼叫返回,必須在 10 毫秒內從此呼叫返回。此呼叫必須避免死鎖,因為它可以在操作的任何點呼叫。使用的任何同步原語(例如互斥鎖或信號量)都應該在逾時時取得。

檔案Vehicle.h1744行的定義。

int(* get)(結構vehicle_hw_device *設備, vehicle_prop_value_t *資料)

立即取得車輛財產價值。數據應正確分配。 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行。

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

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

定義位於檔案Vehicle.h的第1646行。

vehicle_prop_config_t const*(*list_properties)( structvehicle_hw_device *device, int*num_properties)

枚舉所有可用的屬性。該列表在“list”中傳回。

參數
屬性數量傳回的數組中包含的屬性數量。
退貨
這輛車支援的屬性配置數組。請注意,傳回的資料是 const,呼叫者無法修改它。 HAL 實作應保留此記憶體直到 HAL 被釋放,以避免再次複製。

定義位於檔案Vehicle.h的第1663行。

int(*release)( structvehicle_hw_device *device)

在呼叫 close 之前,使用者應該銷毀已註冊的回呼函數。如果在release()之前未對所有屬性呼叫unsubscribe() ,則release()將取消訂閱屬性本身。

定義位於檔案Vehicle.h的第1654行。

void(*release_memory_from_get)(結構vehicle_hw_device *設備, vehicle_prop_value_t *資料)

釋放先前 get 呼叫中分配給資料的記憶體。對位元組或字串的 get 呼叫涉及從車輛 hal 分配必要的記憶體。為了安全起見,車輛 hal 分配的記憶體應該由車輛 hal 釋放,並且當不再需要來自車輛 hal 的資料時,車輛網路服務將呼叫它。車輛hal實作應該只釋放vehicle_prop_value_t的成員,如data->str_value.data或data->bytes_value.data,而不是資料本身,因為資料本身是從車輛網路服務分配的。一旦記憶體被釋放,相應的指標應該被設定為 NULL buvehicle hal。

定義位於檔案Vehicle.h的第1693行。

int(* set)(結構vehicle_hw_device *設備,常數vehicle_prop_value_t *資料)

設定車輛屬性值。數據應正確分配且不為 NULL。 API 的呼叫者擁有資料欄位。設定操作時將忽略資料的時間戳記。設定某些屬性需要具有可用的初始狀態。根據車輛暫停情況,此類初始資料可能在初始化後短時間內不可用。在這種情況下,set 呼叫可以像 get 呼叫一樣傳回 -EAGAIN。對於具有單獨電源控制的屬性,如果該屬性未通電,則設定可能會失敗。在這種情況下,hal 應回傳 -ESHUTDOWN 錯誤。

檔案vehicle.h1706行的定義。

int(* 訂閱)( structvehicle_hw_device *device,int32_t prop,floatsample_rate,int32_tzones)

訂閱活動。根據 list_properties 的輸出,如果屬性是: a) 變更時:sample_rate 應設為 0。b) 支援頻率:sample_rate 應設定為從 min_sample_rate 到 max_sample_rate。對於變化類型的屬性,車輛網路服務將再次呼叫 get 檢查初始狀態。因此,車輛 hal 實作不需要發送屬性變更類型的初始狀態。

參數
裝置
支柱
取樣率
區域分區財產的所有訂閱區域。對於非分區財產可以忽略。 0 表示支援所有區域而不是不支援區域。

定義位於檔案Vehicle.h的第1723行。

int(* 取消訂閱)( structvehicle_hw_device *device, int32_t prop)

取消房產的訂閱。

檔案Vehicle.h1727行的定義。


該結構的文檔是從以下文件產生的:
  • 硬體/libhardware/include/hardware/vehicle.h