自 2025 年 3 月 27 日起,我們建議您使用 android-latest-release
而非 aosp-main
建構及貢獻 AOSP。詳情請參閱「Android 開放原始碼計畫變更」。
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
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
行。
列印車輛 HAL 的偵錯狀態。這會由車輛網路服務呼叫,並納入服務的傾印內容。
傳入的檔案描述元可用於使用 dprintf() 或 write() 編寫偵錯文字。文字應僅採用 ASCII 編碼。
效能需求:
這必須是非阻斷式呼叫。HAL 應在 1 毫秒內從這個呼叫傳回,且必須在 10 毫秒內從這個呼叫傳回。此呼叫可能會在任何運作點呼叫,因此必須避免發生死結。使用任何同步處理原始碼 (例如互斥鎖或訊號量) 時,應設定逾時值。
定義位於檔案
vehicle.h
的
1744
行。
立即取得車輛屬性值。資料應正確分配。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
行。
列舉所有可用資源。清單會以「list」格式傳回。
-
參數
-
num_properties
|
傳回陣列中包含的屬性數量。 |
-
退貨
-
這輛車支援的屬性設定陣列。請注意,傳回的資料為常數,呼叫端無法修改。HAL 實作應保留此記憶體,直到 HAL 釋出為止,以免再次複製。
定義位於檔案
vehicle.h
的
1663
行。
釋出先前 get 呼叫中分配給資料的記憶體。針對位元組或字串的 get 呼叫,會涉及從車輛 HAL 分配必要的記憶體。為求安全起見,車輛 HAL 分配的記憶體應由車輛 HAL 釋放,而車輛網路服務會在不再需要車輛 HAL 的資料時呼叫此函式。車輛 HAL 實作應只釋放 vehicle_prop_value_t 的資料成員,例如 data->str_value.data 或 data->bytes_value.data,但不釋放資料本身,因為資料本身是由車輛網路服務分配。記憶體釋放後,對應的指標應設為車輛 HAL 的 NULL。
定義位於檔案
vehicle.h
的
1693
行。
設定車輛屬性值。資料應正確分配,且不得為空值。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
行。
這個結構體的說明文件是由下列檔案產生:
-
hardware/libhardware/include/hardware/
vehicle.h
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-03-26 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-03-26 (世界標準時間)。"],[],[]]