vehicle_hw_device Yapı Referansı
#include <
vehicle.h
>
Veri Alanları |
|
struct hw_device_t | yaygın |
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) |
Ayrıntılı Açıklama
Alan Belgeleri
struct hw_device_t common |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Araç HAL'sinin hata ayıklama durumunu yazdırın. Bu işlev, araç ağı hizmeti tarafından çağrılır ve hizmetin dökümüne dahil edilir.
İletilen dosya tanımlayıcısı, dprintf() veya write() kullanılarak hata ayıklama metni yazmak için kullanılabilir. Metin yalnızca ASCII kodlamasında olmalıdır.
Performans koşulları:
Bu, engellenmeyen bir çağrı olmalıdır. HAL bu çağrıdan 1 ms içinde, bu çağrıdan 10 ms içinde dönmelidir. Bu çağrı, çalışmanın herhangi bir noktasında çağrılabileceğinden kilitlenmeyi önlemelidir. Kullanılan tüm senkronizasyon temel öğeleri (ör. mutex kilitleri veya semaforlar) zaman aşımı ile edinilmelidir.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Hemen bir araç mülk değeri alın. Veriler uygun şekilde ayrılmalıdır. API'yi çağıran kullanıcı, veri alanının SAHİBİDİR. Çağırıcı, data->prop, data->value_type ve isteğe bağlı olarak da bölgelendirilmiş mülk için bölge değerini ayarlar. Ancak HAL uygulamasının, döndürülen tüm girişleri doğru şekilde doldurması gerekir. İşaretçi türü için HAL uygulaması gerekli belleği ayırmalıdır ve HAL'in ayrılan belleği serbest bırakmasına olanak tanıyan release_memory_from_get çağrısını yapmaktan arayan sorumludur. VEHICLE_PROP_CHANGE_MODE_STATIC türündeki mülkler için get işlevi her zaman aynı değeri döndürmelidir. VEHICLE_PROP_CHANGE_MODE_ON_CHANGE türündeki mülkler için en son değeri döndürmelidir. Henüz veri yoksa (ilk aşamada bu durumla karşılaşılabilir) bu çağrı hemen -EAGAIN hata koduyla döndürülür.
Tanım, vehicle.h dosyasının 1681. satırı içindedir.
int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties) |
Mevcut tüm mülkleri listeleyin. Liste "list" olarak döndürülür.
- Parametreler
-
num_properties döndürülen dizindeki tesis sayısı.
- İlerlemeler
- Bu araba tarafından desteklenen özellik yapılandırmaları dizisi. Döndürülen verilerin sabit olduğunu ve arayanın bu verileri değiştiremeyeceğini unutmayın. HAL uygulaması, bu belleği HAL yayınlanana kadar saklayarak tekrar kopyalanmasını önler.
Tanım, vehicle.h dosyasının 1663. satırındadır .
int(* release)(struct vehicle_hw_device *device) |
Kullanıcı, kapatma çağrısı yapmadan önce kayıtlı geri arama işlevlerini yok etmelidir. unsubscribe() çağrısı, release() çağrısından önce tüm mülklerde çağrılmazsa release() , mülklerin aboneliğini kendisi iptal eder.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Önceki get çağrısında verilere ayrılan belleği serbest bırakın. Byte veya dize için get çağrısı, araç hal'den gerekli belleğin ayrılmasını içerir. Güvenli olması için araç hal tarafından ayrılan bellek, araç hal tarafından serbest bırakılmalıdır ve araç ağı hizmeti, araç hal'den gelen veriler artık gerekli olmadığında bunu çağırır. Araç hal uygulaması yalnızca vehicle_prop_value_t üyesini (ör. data->str_value.data veya data->bytes_value.data) serbest bırakmalıdır ancak verilerin kendisi araç ağı hizmetinden ayrıldığı için verilerin kendisini serbest bırakmamalıdır. Bellek serbest bırakıldıktan sonra, ilgili işaretçi bu durumda NULL olarak ayarlanmalıdır.
Tanımı, vehicle.h dosyasının 1693. satırı içindedir.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
Bir araç özelliği değeri ayarlayın. Veriler doğru şekilde ayrılmalıdır ve NULL olmamalıdır. API'yi çağıran kullanıcı, veri alanının sahibidir. Verilerin zaman damgası, ayarlama işlemi için yoksayılır. Bazı özelliklerin ayarlanması için ilk durumun mevcut olması gerekir. Araç durumuna bağlı olarak bu tür ilk veriler, başlatma işleminden kısa bir süre sonra kullanılamayabilir. Bu durumda, set call, get call gibi -EAGAIN döndürebilir. Ayrı güç kontrolüne sahip bir mülk için, mülk açık değilse ayarlama başarısız olabilir. Bu durumda hal, -ESHUTDOWN hatası döndürmelidir.
int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
Etkinliklere abone olabilirler. Mülkün list_properties çıktısına bağlı olarak: a) değişiklikte: sample_rate 0 olarak ayarlanmalıdır. b) sıklık destekleniyorsa: sample_rate, min_sample_rate ile max_sample_rate arasında ayarlanmalıdır. Değişiklik olduğunda türündeki mülkler için araç ağı hizmeti, ilk durumu kontrol etmek üzere başka bir get çağrısı yapar. Bu nedenle, araç hal uygulamasının değişiklik türündeki mülkler için ilk durumu göndermesi gerekmez.
- Parametreler
-
cihaz prop sample_rate zones Bölgelendirilmiş mülk için abone olunan tüm bölgeler. Bölgelendirilmemiş mülk için yoksayılabilir. 0, hiçbir bölgenin desteklenmediği yerine tüm bölgelerin desteklendiği anlamına gelir.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ vehicle.h