vehicle_hw_device 構造体のリファレンス
#include < vehicle.h >
データフィールド | |
構造体 hw_device_t | 一般 |
int(* | init )(struct vehicle_hw_device *device, vehicle_event_callback_fn events_fn, vehicle_error_callback_fn err_fn) |
int(* | リリース)(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(* | サブスクライブ)(struct vehicle_hw_device *device、int32_t prop、float sample_rate、int32_t ゾーン) |
int(* | 購読解除)(struct vehicle_hw_device *device, int32_t prop) |
int(* | ダンプ)(struct vehicle_hw_device *device, int fd) |
詳細な説明
フィールドドキュメント
構造体 hw_device_t共通 |
int(* dump)(struct vehicle_hw_device *device, int fd) |
車両 hal のデバッグ状態を出力します。これは車両ネットワーク サービスによって呼び出され、サービスのダンプに含まれます。
渡されたファイル記述子は、dprintf() または write() を使用してデバッグ テキストを書き込むために使用できます。テキストは ASCII エンコードのみである必要があります。
性能要件:
これはノンブロッキング呼び出しである必要があります。 HAL はこの呼び出しから 1 ミリ秒以内に戻る必要があり、この呼び出しからは 10 ミリ秒以内に戻る必要があります。この呼び出しは操作のどの時点でも呼び出される可能性があるため、デッドロックを回避する必要があります。使用される同期プリミティブ (ミューテックス ロックやセマフォなど) は、タイムアウトを指定して取得する必要があります。
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 のエラー コードで直ちに返されます。
int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fnイベント_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties) |
int(* release)(struct vehicle_hw_device *device) |
close を呼び出す前に、ユーザーは登録されたコールバック関数を破棄する必要があります。 release()の前にすべてのプロパティに対してunsubscribe()呼び出しが呼び出されない場合、 release() はプロパティ自体のサブスクライブを解除します。
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
前回の get 呼び出しでデータに割り当てられたメモリを解放します。バイトまたは文字列の get 呼び出しには、車両 hal から必要なメモリを割り当てることが含まれます。安全のため、車両 hal によって割り当てられたメモリは車両 hal によって解放される必要があり、車両 hal からのデータが不要になったときに車両ネットワーク サービスがこれを呼び出します。 vehicle hal 実装は、data->str_value.data または data->bytes_value.data のような vehicle_prop_value_t のメンバーのみを解放する必要がありますが、データ自体は車両ネットワーク サービスから割り当てられるため、データ自体は解放しません。メモリが解放されたら、対応するポインタを車両 hal の NULL に設定する必要があります。
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
車両のプロパティ値を設定します。データは NULL ではなく、適切に割り当てられる必要があります。 API の呼び出し元はデータ フィールドを所有します。データのタイムスタンプは、セット操作では無視されます。一部のプロパティを設定するには、初期状態を使用できる必要があります。車両 hal によっては、初期データは初期化後しばらくの間利用できない場合があります。このような場合、set 呼び出しは get 呼び出しと同様に -EAGAIN を返すことができます。個別の電源制御を持つプロパティの場合、プロパティの電源がオンになっていないと、設定が失敗する可能性があります。このような場合、hal は -ESHUTDOWN エラーを返す必要があります。
int(*subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t ゾーン) |
イベントを購読します。 list_properties の出力に応じて、プロパティが次の場合: a) 変更時:sample_rate を 0 に設定する必要があります。 b) 周波数をサポート:sample_rate を min_sample_rate から max_sample_rate に設定する必要があります。変更中タイプのプロパティの場合、車両ネットワーク サービスは初期状態を確認するために別の get 呼び出しを実行します。このため、車両 hal の実装では、on-change タイプのプロパティの初期状態を送信する必要がありません。
- パラメーター
デバイス 小道具 サンプルレート ゾーン ゾーン化されたプロパティのすべてのサブスクライブ済みゾーン。ゾーン化されていないプロパティの場合は無視できます。 0 は、ゾーンなしではなく、すべてのゾーンがサポートされていることを意味します。
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
この構造体のドキュメントは次のファイルから生成されました。
- hardware/libhardware/include/hardware/ vehicle.h