Riferimento alla struttura Vehicle_hw_device
#include < vehicle.h >
Campi dati | |
struttura hw_device_t | comune |
int(* | init )(struct veicolo_hw_device *device, veicolo_event_callback_fn event_fn, veicolo_error_callback_fn err_fn) |
int(* | rilascio )(struct veicolo_hw_device *dispositivo) |
veicolo_prop_config_t const *(* | list_properties )(struct veicolo_hw_device *device, int *num_properties) |
int(* | get )(struct veicolo_hw_device *dispositivo, veicolo_prop_value_t *data) |
vuoto(* | release_memory_from_get )(struct veicolo_hw_device *dispositivo, veicolo_prop_value_t *data) |
int(* | set )(struct veicolo_hw_device *dispositivo, const veicolo_prop_value_t *data) |
int(* | iscriversi )(struct veicolo_hw_device *device, int32_t prop, float sample_rate, int32_t zone) |
int(* | annullare l'iscrizione )(struct veicolo_hw_device *device, int32_t prop) |
int(* | dump )(struct veicolo_hw_device *device, int fd) |
Descrizione dettagliata
Documentazione sul campo
struttura hw_device_t comune |
int(* dump)(struct veicolo_hw_device *device, int fd) |
Stampa lo stato di debug per l'hal del veicolo. Questo verrà 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 deve essere solo in 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 situazioni di stallo, poiché può essere chiamata in qualsiasi punto dell'operazione. Eventuali primitive di sincronizzazione utilizzate (come blocchi mutex o semafori) devono essere acquisite con un timeout.
int(* get)(struct veicolo_hw_device *dispositivo, veicolo_prop_value_t *data) |
Ottieni immediatamente il valore della proprietà del veicolo. i dati dovrebbero essere allocati correttamente. Il chiamante dell'API È PROPRIETARIO del 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 dell'HAL deve riempire correttamente tutte le voci al momento della restituzione. Per il tipo puntatore, l'implementazione dell'HAL deve allocare la memoria necessaria e il chiamante è responsabile della chiamata a release_memory_from_get, che consente all'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 ci sono ancora dati disponibili, cosa che può accadere durante la fase iniziale, questa chiamata dovrebbe restituire immediatamente il codice di errore -EAGAIN.
int(* init)(struct veicolo_hw_device *device, veicolo_event_callback_fn event_fn, veicolo_error_callback_fn err_fn) |
veicolo_prop_config_t const*(* list_properties)(struct veicolo_hw_device *device, int *num_properties) |
Enumerare tutte le proprietà disponibili. L'elenco viene restituito in "list".
- Parametri
num_proprietà numero di proprietà contenute nell'array risintonizzato.
- ritorna
- serie di configurazioni di proprietà supportate da questa vettura. Tieni presente che i dati restituiti sono const e il chiamante non può modificarli. L'implementazione dell'HAL dovrebbe mantenere questa memoria fino al rilascio dell'HAL per evitare di copiarlo nuovamente.
int(* release)(struct veicolo_hw_device *dispositivo) |
Prima di chiudere l'utente deve distruggere le funzioni di callback registrate. Nel caso in cui la chiamata unsubscribe() non venga richiamata su tutte le proprietà prima di release() , release() annullerà la sottoscrizione delle proprietà stesse.
void(* release_memory_from_get)(struct veicolo_hw_device *dispositivo, veicolo_prop_value_t *data) |
Rilascia la memoria allocata ai dati nella chiamata get precedente. ottenere la chiamata per byte o stringa implica l'allocazione della memoria necessaria dall'hal del veicolo. 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 hal del veicolo dovrebbe rilasciare solo i membri 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 liberata la memoria, il puntatore corrispondente dovrebbe essere impostato su NULL bu veicolo hal.
int(* set)(struct veicolo_hw_device *dispositivo, const veicolo_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 È PROPRIETARIO del campo dati. il timestamp dei dati verrà ignorato per l'operazione impostata. L'impostazione di alcune proprietà richiede la disponibilità dello stato iniziale. A seconda del veicolo, questi dati iniziali potrebbero non essere disponibili per un breve periodo dopo l'inizializzazione. In tal caso, set call può restituire -EAGAIN come get call. Per una proprietà con controllo dell'alimentazione separato, l'impostazione può non riuscire se la proprietà non è accesa. In tal caso, hal dovrebbe restituire l'errore -ESHUTDOWN.
int(* iscriversi)(struct veicolo_hw_device *device, int32_t prop, float sample_rate, int32_t zone) |
Iscriviti agli eventi. A seconda dell'output di list_properties, se la proprietà è: a) on-change: 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 fase di modifica, il servizio di rete del veicolo effettuerà un'altra chiamata per verificare lo stato iniziale. Per questo motivo, l'implementazione dell'hal del veicolo non ha bisogno di inviare lo stato iniziale per il tipo di proprietà in fase di modifica.
- Parametri
dispositivo puntello frequenza di campionamento zone Tutte le zone sottoscritte per la proprietà suddivisa in zone. può essere ignorato per le proprietà non suddivise in zone. 0 significa che sono supportate tutte le zone anziché nessuna zona.
int(* unsubscribe)(struct veicolo_hw_device *device, int32_t prop) |
La documentazione per questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ veicolo.h