Riferimento struttura vehicle_hw_device

Riferimento struttura vehicle_hw_device

#include < vehicle.h >

Campi dati

struttura hw_device_t Comune
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)
vuoto(* 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(* iscriviti )(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)

Descrizione dettagliata

Definizione alla riga 1639 del file vehicle.h .

Documentazione sul campo

struct hw_device_t comune

Definizione alla riga 1640 del file vehicle.h .

int(* dump)(struct vehicle_hw_device *device, int fd)

Stampa lo stato di debug per il veicolo hal. Questo sarà chiamato dal servizio di rete del veicolo e sarà incluso nel dump del servizio.

Il descrittore di file passato può essere utilizzato per scrivere testo di debug utilizzando dprintf() o write(). Il testo dovrebbe essere solo nella codifica ASCII.

Requisiti di prestazione:

Questa deve essere una chiamata non bloccante. L'HAL dovrebbe tornare da questa chiamata in 1 ms, deve tornare da questa chiamata in 10 ms. Questa chiamata deve evitare deadlock, poiché può essere chiamata in qualsiasi momento dell'operazione. Qualsiasi primitiva di sincronizzazione utilizzata (come blocchi mutex o semafori) deve essere acquisita con un timeout.

Definizione alla riga 1744 del file vehicle.h .

int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

Ottieni immediatamente un valore di proprietà del veicolo. i dati dovrebbero essere assegnati correttamente. Il chiamante dell'API POSSIEDE il campo dati. Il chiamante imposterà data->prop, data->value_type e, facoltativamente, il valore della zona per la proprietà suddivisa in zone. Ma l'implementazione HAL deve riempire correttamente tutte le voci al momento della restituzione. Per il tipo di puntatore, l'implementazione HAL dovrebbe allocare la memoria necessaria e il chiamante è responsabile della chiamata a release_memory_from_get, che consente a HAL di rilasciare la memoria allocata. Per il tipo di proprietà VEHICLE_PROP_CHANGE_MODE_STATIC, get dovrebbe restituire sempre lo stesso valore. Per il tipo di proprietà VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, dovrebbe restituire il valore più recente. Se non sono ancora disponibili dati, cosa che può verificarsi durante la fase iniziale, questa chiamata dovrebbe tornare immediatamente con il codice di errore -EAGAIN.

Definizione alla riga 1681 del file vehicle.h .

int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn)

Dopo aver chiamato open sul dispositivo, l'utente deve registrare i callback per le funzioni di evento ed errore.

Definizione alla riga 1646 del file vehicle.h .

vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties)

Enumera tutte le proprietà disponibili. L'elenco viene restituito in "elenco".

Parametri
num_proprietà numero di proprietà contenute nell'array risintonizzato.
ritorna
array di configurazioni di proprietà supportate da questa macchina. Si noti che i dati restituiti sono const e il chiamante non può modificarli. L'implementazione HAL dovrebbe conservare questa memoria fino al rilascio di HAL per evitare di copiarla nuovamente.

Definizione alla riga 1663 del file vehicle.h .

int(* release)(struct vehicle_hw_device *device)

Prima di chiamare close, l'utente deve distruggere le funzioni di callback registrate. Nel caso in cui la chiamata unsubscribe() non venga chiamata su tutte le proprietà prima di release() , release() annullerà la sottoscrizione delle proprietà stesse.

Definizione alla riga 1654 del file vehicle.h .

void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

Rilascia la memoria assegnata ai dati nella precedente chiamata get. get call for byte o string implica l'allocazione della memoria necessaria dal veicolo hal. Per sicurezza, la memoria allocata dal veicolo hal dovrebbe essere rilasciata dal veicolo hal e il servizio di rete del veicolo lo chiamerà quando i dati dal veicolo hal non sono più necessari. l'implementazione di hal del veicolo dovrebbe rilasciare solo il membro di vehicle_prop_value_t come data->str_value.data o data->bytes_value.data ma non i dati stessi poiché i dati stessi vengono allocati dal servizio di rete del veicolo. Una volta che la memoria è stata liberata, il puntatore corrispondente dovrebbe essere impostato su NULL bu veicolo hal.

Definizione alla riga 1693 del file vehicle.h .

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)

Imposta un valore per la proprietà del veicolo. i dati devono essere allocati correttamente e non NULL. Il chiamante dell'API POSSIEDE il campo dati. il timestamp dei dati verrà ignorato per l'operazione di impostazione. L'impostazione di alcune proprietà richiede la disponibilità dello stato iniziale. A seconda dell'hal del veicolo, tali dati iniziali potrebbero non essere disponibili per un breve periodo dopo l'avvio. In tal caso, set call può restituire -EAGAIN come get call. Per una proprietà con controllo dell'alimentazione separato, il set può non riuscire se la proprietà non è accesa. In tal caso, hal dovrebbe restituire l'errore -ESHUTDOWN.

Definizione alla riga 1706 del file vehicle.h .

int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones)

Iscriviti agli eventi. A seconda dell'output di list_properties se la proprietà è: a) in modifica: sample_rate deve essere impostato su 0. b) supporta la frequenza: sample_rate deve essere impostato da min_sample_rate a max_sample_rate. Per il tipo di proprietà in modifica, il servizio di rete del veicolo effettuerà un'altra chiamata di ricezione per verificare lo stato iniziale. Per questo motivo, non è necessario che l'implementazione del veicolo hal invii lo stato iniziale per il tipo di proprietà in modifica.

Parametri
dispositivo
puntello
frequenza di campionamento
zone Tutte le zone sottoscritte per la proprietà suddivisa in zone. può essere ignorato per proprietà non suddivise in zone. 0 significa che tutte le zone sono supportate invece di nessuna zona.

Definizione alla riga 1723 del file vehicle.h .

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

Annulla l'abbonamento su una proprietà.

Definizione alla riga 1727 del file vehicle.h .


La documentazione per questa struttura è stata generata dal seguente file:
  • hardware/libhardware/include/hardware/ veicolo.h