vehicle_hw_device Yapı Referansı

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

Tanım, vehicle.h dosyasının 1639 satırındadır.

Alan Belgeleri

struct hw_device_t common

Tanımı, vehicle.h dosyasının 1640 satırı

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.

Tanım, vehicle.h dosyasının 1744 satırındadır.

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.

Kullanıcı, cihazda açma işlevini çağırdıktan sonra etkinlik ve hata işlevleri için geri çağırma işlevleri kaydetmelidir.

Tanımın bulunduğu satır: 1646 vehicle.h .

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.

Tanımı, vehicle.h dosyasının 1654 satırındadır.

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.

Tanım, vehicle.h dosyasının 1706 satırındadır.

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.

Tanım, vehicle.h dosyasının 1723 satırı

int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop)

Bir mülkte aboneliği iptal etme.

Tanım, vehicle.h dosyasının 1727 satırındadır.


Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur: