araç_hw_device Yapı Referansı

araç_hw_device Yapı Referansı

#include < vehicle.h >

Veri alanları

hw_device_t yapısı yaygın
int(* init )(struct araç_hw_device *device, araç_event_callback_fn event_fn, araç_error_callback_fn err_fn)
int(* serbest bırakın )(struct araç_hw_device *device)
araç_prop_config_t const *(* list_properties )(struct araç_hw_device *device, int *num_properties)
int(* get )(struct araç_hw_device *device, araç_prop_value_t *data)
geçersiz(* Release_memory_from_get )(struct araç_hw_device *cihaz, araç_prop_value_t *veri)
int(* set )(struct araç_hw_device *device, const araç_prop_value_t *data)
int(* abone ol )(struct araç_hw_device *device, int32_t prop, float sample_rate, int32_t bölgeleri)
int(* abonelikten çık )(struct araç_hw_device *device, int32_t prop)
int(* dump )(struct araç_hw_device *device, int fd)

Detaylı Açıklama

Araç.h dosyasının 1639. satırındaki tanım.

Saha Dokümantasyonu

hw_device_t ortak yapısı

Araç.h dosyasının 1640. satırındaki tanım.

int(* dump)(struct araç_hw_device *device, int fd)

Araç hal için hata ayıklama durumunu yazdırın. Bu, araç ağ hizmeti tarafından çağrılacak ve hizmet dökümüne dahil edilecektir.

Aktarılan dosya tanımlayıcı, dprintf() veya write() kullanılarak hata ayıklama metni yazmak için kullanılabilir. Metin yalnızca ASCII kodlamasında olmalıdır.

Performans gereklilikleri:

Bu, engellenmeyen bir çağrı olmalıdır. HAL bu çağrıdan 1 ms içinde, 10 ms içinde bu çağrıdan dönmelidir. Bu çağrı, operasyonun herhangi bir noktasında çağrılabileceği için kilitlenmelerden kaçınmalıdır. Kullanılan tüm senkronizasyon temelleri (muteks kilitleri veya semaforlar gibi) bir zaman aşımı ile edinilmelidir.

Araç.h dosyasının 1744. satırındaki tanım.

int(* get)(struct araç_hw_device *device, araç_prop_value_t *data)

Hemen bir araç mülk değeri alın. Veriler uygun şekilde tahsis edilmelidir. API'yi arayan kişi veri alanının SAHİBİDİR. Arayan, bölgelere ayrılmış mülk için data->prop, data->value_type ve isteğe bağlı olarak bölge değerini ayarlayacaktır. Ancak HAL uygulamasının geri dönerken tüm girişleri düzgün bir şekilde doldurması gerekiyor. İşaretçi türü için, HAL uygulamasının gerekli belleği ayırması gerekir ve arayan kişi, HAL'in ayrılan belleği serbest bırakmasına izin verenrelease_memory_from_get'in çağrılmasından sorumludur. VEHICLE_PROP_CHANGE_MODE_STATIC özelliği türü için get her zaman aynı değeri döndürmelidir. VEHICLE_PROP_CHANGE_MODE_ON_CHANGE tipi özellik için en son değeri döndürmelidir. Henüz mevcut veri yoksa, ki bu ilk aşamada gerçekleşebilir, bu çağrı hemen -EAGAIN hata koduyla geri dönmelidir.

Araç.h dosyasının 1681. satırındaki tanım.

int(* init)(struct araç_hw_device *device, araç_event_callback_fn event_fn, araç_error_callback_fn err_fn)

Cihazda open çağrıldıktan sonra kullanıcı, olay ve hata fonksiyonları için geri aramaları kaydetmelidir.

Araç.h dosyasının 1646. satırındaki tanım.

araç_prop_config_t const*(* list_properties)(struct araç_hw_device *device, int *num_properties)

Mevcut tüm özellikleri numaralandırın. Liste "liste"de döndürülür.

Parametreler
num_properties yeniden ayarlanan dizide bulunan özelliklerin sayısı.
İadeler
Bu arabanın desteklediği özellik yapılandırmaları dizisi. Döndürülen verilerin const olduğunu ve arayan kişinin bunu değiştiremeyeceğini unutmayın. HAL uygulaması, bunun tekrar kopyalanmasını önlemek için HAL serbest bırakılana kadar bu belleği saklamalıdır.

Araç.h dosyasının 1663. satırındaki tanım.

int(* yayın)(struct araç_hw_device *device)

Close'u çağırmadan önce kullanıcının kayıtlı geri çağırma işlevlerini yok etmesi gerekir. unsubscribe() çağrısının, Release() işleminden önce tüm özelliklerde çağrılmaması durumunda, Release(), özelliklerin aboneliğini iptal edecektir.

Araç.h dosyasının 1654. satırındaki tanım.

void(*release_memory_from_get)(struct araç_hw_device *device, araç_prop_value_t *data)

Önceki get çağrısında verilere ayrılan belleği serbest bırakın. bayt veya dize için çağrı alma, araç durumundan gerekli belleğin tahsis edilmesini içerir. Güvende olmak için, araç hal tarafından tahsis edilen hafıza, araç hal tarafından serbest bırakılmalıdır ve araç ağ hizmeti, araç hal'den gelen verilere artık gerek kalmadığında bunu arayacaktır. araç hal uygulaması, data->str_value.data veya data->bytes_value.data gibi yalnızca araç_prop_value_t üyesini serbest bırakmalı, ancak verinin kendisi araç ağ hizmetinden tahsis edildiğinden verinin kendisini serbest bırakmamalıdır. Bellek serbest bırakıldığında, karşılık gelen işaretçi araç hal'de NULL olarak ayarlanmalıdır.

Araç.h dosyasının 1693. satırındaki tanım.

int(* set)(struct araç_hw_device *device, const araç_prop_value_t *data)

Bir araç özelliği değeri ayarlayın. veriler NULL değil, uygun şekilde tahsis edilmelidir. API'yi arayan kişi veri alanının SAHİBİDİR. Ayarlama işlemi için verilerin zaman damgası göz ardı edilecektir. Bazı özelliklerin ayarlanması başlangıç ​​durumunun kullanılabilir olmasını gerektirir. Aracın durmasına bağlı olarak bu tür başlangıç ​​verileri, başlatma sonrasında kısa bir süre boyunca mevcut olmayabilir. Bu durumda set call, get call gibi -EAGAIN değerini döndürebilir. Ayrı güç kontrolüne sahip bir özellik için, özellik açık değilse ayar başarısız olabilir. Böyle bir durumda hal -ESHUTDOWN hatası döndürmelidir.

Araç.h dosyasının 1706. satırındaki tanım.

int(* abone ol)(struct araç_hw_device *device, int32_t prop, float sample_rate, int32_t bölgeleri)

Etkinliklere abone olun. List_properties çıktısına bağlı olarak, eğer özellik şu durumdaysa: a) değişiklik halinde: sample_rate 0'a ayarlanmalıdır. b) frekansı destekliyorsa: sample_rate min_sample_rate'den max_sample_rate'e ayarlanmalıdır. Değişiklik durumundaki mülkler için, araç şebekesi hizmeti, başlangıç ​​durumunu kontrol etmek üzere başka bir alma çağrısı yapacaktır. Bu nedenle araç hal uygulamasının, değişiklik türündeki özellikler için başlangıç ​​durumu göndermesine gerek yoktur.

Parametreler
cihaz
pervane
aynı oran
bölgeler İmarlı mülk için abone olunan tüm bölgeler. imarsız mülkler için göz ardı edilebilir. 0, bölge yok yerine tüm bölgelerin desteklendiği anlamına gelir.

Araç.h dosyasının 1723. satırındaki tanım.

int(* abonelikten çık)(struct araç_hw_device *device, int32_t prop)

Bir mülkteki aboneliği iptal edin.

Araç.h dosyasının 1727. satırındaki tanım.


Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
  • donanım/libdonanım/include/donanım/ araç.h