tool_hw_device Yapı Referansı

tool_hw_device Yapı Referansı

#include < vehicle.h >

Veri alanları

struct hw_device_t yaygın
int(* init )(struct araç_hw_device *device, Vehicle_event_callback_fn event_fn, Vehicle_error_callback_fn err_fn)
int(* sürüm )( araç_hw_device *device struct)
araç_prop_config_t const *(* list_properties )(struct araç_hw_device *device, int *num_properties)
int(* get )( araç_hw_device *device, araç_prop_value_t *veri yapısı)
geçersiz(* release_memory_from_get )( araç_hw_device *device yapısı, araç_prop_value_t *veri yapısı)
int(* set )(struct araç_hw_device *device, const araç_prop_value_t *veri)
int(* abone ol )(struct araç_hw_device *device, int32_t prop, float sample_rate, int32_t zones)
int(* aboneliği iptal et )( araç_hw_device *device yapı, int32_t prop)
int(* dökümü )(struct araç_hw_device *device, int fd)

Detaylı Açıklama

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

Saha Dokümantasyonu

struct hw_device_t ortak

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ğı servisi tarafından aranacak ve servis dökümüne dahil edilecektir.

Aktarılan dosya tanıtı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 gereksinimleri:

Bu, engellenmeyen bir çağrı olmalıdır. HAL bu çağrıdan 1ms içinde, bu çağrıdan 10ms içinde dönmelidir. Bu çağrı, herhangi bir operasyon noktasında çağrılabileceği için kilitlenmelerden kaçınmalıdır. Kullanılan tüm senkronizasyon temel öğeleri (mutex 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, Vehicle_prop_value_t *veri)

Hemen bir araç mülk değeri alın. veriler uygun şekilde tahsis edilmelidir. API'nin arayanı, veri alanının SAHİBİDİR. Arayan, bölgeli özellik için data->prop, data->value_type ve isteğe bağlı olarak bölge değeri ayarlayacaktır. Ancak HAL uygulamasının geri dönerken tüm girdileri düzgün bir şekilde doldurması gerekir. İşaretçi türü için, HAL uygulaması gerekli belleği tahsis etmelidir ve arayan, HAL'in ayrılan belleği serbest bırakmasına izin veren release_memory_from_get çağrısından sorumludur. VEHICLE_PROP_CHANGE_MODE_STATIC türü özellik 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 ilk aşamada olabilecek herhangi bir veri yoksa, 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, Vehicle_event_callback_fn event_fn, Vehicle_error_callback_fn err_fn)

Cihazda open çağrısı yapı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.

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

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

parametreler
num_properties yeniden ayarlanmış dizide bulunan özelliklerin sayısı.
İadeler
bu araba tarafından desteklenen bir dizi özellik yapılandırması. Döndürülen verilerin const olduğunu ve arayanın değiştiremeyeceğini unutmayın. HAL uygulaması, bunu tekrar kopyalamaktan kaçınmak için HAL serbest bırakılana kadar bu belleği tutmalıdır.

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

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

Kapat aramadan önce, kullanıcı kayıtlı geri arama işlevlerini yok etmelidir. unsubscribe() çağrısı, release() 'den önce tüm özelliklerde çağrılmazsa, o zaman release() , özelliklerin kendisini abonelikten çıkaracaktır.

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

void(* release_memory_from_get)(struct araç_hw_device *device, Vehicle_prop_value_t *veri)

Ö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ği ayırmayı 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ç hal verisi artık gerekli olmadığında araç ağı servisi bunu arayacaktır. araç hal uygulaması, data->str_value.data veya data->bytes_value.data gibi yalnızca tool_prop_value_t üyesini serbest bırakmalı, ancak verilerin kendisi araç ağı hizmetinden tahsis edildiğinden verilerin kendisini serbest bırakmamalıdır. Bellek boşaldığında, karşılık gelen işaretçi NULL bu araç hal 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 *veri)

Bir araç özelliği değeri ayarlayın. veriler NULL değil, uygun şekilde tahsis edilmelidir. API'nin arayanı, veri alanının SAHİBİDİR. set işlemi için verilerin zaman damgası yok sayılır. Bazı özelliklerin ayarlanması, başlangıç ​​durumunun kullanılabilir olmasını gerektirir. Aracın durumuna bağlı olarak, bu tür ilk veriler, başlatmadan sonra kısa bir süre için mevcut olmayabilir. Böyle bir durumda set call, get call gibi -EAGAIN dönebilir. Ayrı güç kontrolüne sahip bir özellik için, özellik açık değilse set 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)(struct araç_hw_device *device, int32_t prop, float sample_rate, int32_t zones)

Etkinliklere abone olun. Eğer özellik aşağıdaki ise list_properties çıktısına bağlı olarak: a) on-change: sample_rate 0'a ayarlanmalıdır. b) frekansı destekler: sample_rate, min_sample_rate'den max_sample_rate'e ayarlanmalıdır. Değişken özellik türü için, araç ağ servisi, başlangıç ​​durumunu kontrol etmek için başka bir arama yapacaktır. Bu nedenle, araç hal uygulamasının, değiştirilen özellik türü için başlangıç ​​durumunu göndermesine gerek yoktur.

parametreler
cihaz
pervane
aynı oran
bölgeler İmarlı mülk için tüm abone olunan bölgeler. imarlı olmayan mülkler için yoksayılabilir. 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ülkte aboneliği iptal edin.

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


Bu yapı için belgeler aşağıdaki dosyadan oluşturulmuştur:
  • donanım/libhardware/include/donanım/ araç.h