Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

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(*リリース)(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 zone)
int(*登録解除)(struct Vehicle_hw_device * device、int32_t prop)
int(*ダンプ)(struct Vehicle_hw_device * device、int fd)

詳細な説明

ファイルvehicle.h1639行で定義されています。

フィールドドキュメント

struct hw_device_t common

ファイルvehicle.h1640行で定義されています。

int(* dump)(struct Vehicle_hw_device * device、int fd)

車両halのデバッグ状態を出力します。これは、車両ネットワークサービスによって呼び出され、サービスのダンプに含まれます。

渡されたファイル記述子は、dprintf()またはwrite()を使用してデバッグテキストを書き込むために使用できます。テキストはASCIIエンコーディングのみである必要があります。

性能要件:

これは非ブロッキング呼び出しである必要があります。 HALは、この呼び出しから1ミリ秒で戻る必要があり、この呼び出しから10ミリ秒で戻る必要があります。この呼び出しは、操作のどの時点でも呼び出される可能性があるため、デッドロックを回避する必要があります。使用される同期プリミティブ(ミューテックスロックやセマフォなど)は、タイムアウトして取得する必要があります。

ファイルvehicle.h1744行で定義されています。

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.h1681行で定義されています。

int(* init)(struct Vehicle_hw_device * device、 Vehicle_event_callback_fn event_fn、 Vehicle_error_callback_fn err_fn)

デバイスでopenを呼び出した後、ユーザーはイベント関数とエラー関数のコールバックを登録する必要があります。

ファイルvehicle.h1646行で定義されています。

Vehicle_prop_config_t const *(* list_properties)(struct Vehicle_hw_device * device、int * num_properties)

使用可能なすべてのプロパティを列挙します。リストは「list」で返されます。

パラメーター
num_properties再調整された配列に含まれるプロパティの数。
戻り値
この車でサポートされているプロパティ構成の配列。返されるデータはconstであり、呼び出し元はそれを変更できないことに注意してください。 HAL実装は、これを再度コピーしないように、HALが解放されるまでこのメモリを保持する必要があります。

ファイルvehicle.h1663行で定義されています。

int(*リリース)( structvehicle_hw_device * device)

closeを呼び出す前に、ユーザーは登録されたコールバック関数を破棄する必要があります。 release()の前にすべてのプロパティでunsubscribe()呼び出しが呼び出されなかった場合、 release()はプロパティ自体のサブスクライブを解除します。

ファイルvehicle.h1654行で定義されています。

void(* release_memory_from_get)(struct Vehicle_hw_device * device、 Vehicle_prop_value_t * data)

前のget呼び出しでデータに割り当てられたメモリを解放します。バイトまたは文字列の呼び出しを取得するには、車両halから必要なメモリを割り当てる必要があります。安全のために、車両halによって割り当てられたメモリは、車両halによって解放される必要があり、車両ネットワークサービスは、車両halからのデータが不要になったときにこれを呼び出します。 Vehicle halの実装では、data->str_value.dataやdata->bytes_value.dataなどのVehicle_prop_value_tのメンバーのみを解放する必要がありますが、データ自体は車両ネットワークサービスから割り当てられるため、データ自体は解放しないでください。メモリが解放されたら、対応するポインタをNULL buVehiclehalに設定する必要があります。

ファイルvehicle.h1693行で定義されています。

int(* set)(struct Vehicle_hw_device * device、const Vehicle_prop_value_t * data)

車両のプロパティ値を設定します。データは、NULLではなく適切に割り当てる必要があります。 APIの呼び出し元はデータフィールドを所有しています。データのタイムスタンプは、設定操作では無視されます。一部のプロパティを設定するには、初期状態を使用できるようにする必要があります。車両の半分によっては、このような初期データは、初期化後しばらくの間利用できない場合があります。このような場合、setcallはgetcallのように-EAGAINを返すことができます。個別の電源制御を備えたプロパティの場合、プロパティの電源がオンになっていないと、設定が失敗する可能性があります。このような場合、halは-ESHUTDOWNエラーを返す必要があります。

ファイルvehicle.h1706行で定義されています。

int(* subscribe)(struct Vehicle_hw_device * device、int32_t prop、float sample_rate、int32_t zone)

イベントを購読します。プロパティが次の場合、list_propertiesの出力に応じて:a)変更時:sample_rateを0に設定する必要があります。b)サポート頻度:sample_rateをmin_sample_rateからmax_sample_rateに設定する必要があります。変更中のタイプのプロパティの場合、車両ネットワークサービスは、初期状態を確認するために別のget呼び出しを行います。このため、Vehicle halの実装では、変更時のタイプのプロパティの初期状態を送信する必要はありません。

パラメーター
デバイス
小道具
サンプルレート
ゾーンゾーニングされたプロパティのすべてのサブスクライブされたゾーン。ゾーン化されていないプロパティでは無視できます。 0は、ゾーンがないのではなく、サポートされているすべてのゾーンを意味します。

ファイルvehicle.h1723行で定義されています。

int(* unsubscribe)(struct Vehicle_hw_device * device、int32_t prop)

プロパティのサブスクリプションをキャンセルします。

ファイルvehicle.h1727行で定義されています。


この構造体のドキュメントは、次のファイルから生成されました。
  • ハードウェア/libhardware/ include / hardware / Vehicle.h