Riferimento alla struttura vehicle_hw_device

Riferimento alla struttura vehicle_hw_device

#include < vehicle.h >

Campi dati

struct hw_device_t   comuni
 
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)
 

Descrizione dettagliata

Definizione nella riga 1639 del file vehicle.h .

Documentazione dei campi

struct hw_device_t common

Definizione nella riga 1640 del file vehicle.h .

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

Stampa lo stato di debug per l'HAL del veicolo. Verrà chiamato dal servizio di rete del veicolo e incluso nel dump del servizio.

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

Requisiti di rendimento:

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, in quanto può essere chiamata in qualsiasi momento dell'operazione. Eventuali primitive di sincronizzazione utilizzate (come lock mutex o semafori) devono essere acquisite 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 della proprietà del veicolo. I dati devono essere allocati correttamente. Il chiamante dell'API È IL PROPRIETARIO del campo dati. Chiama l'utente imposterà data->prop, data->value_type e, facoltativamente, il valore della zona per la proprietà con zona. Tuttavia, l'implementazione HAL deve compilare correttamente tutte le voci al momento del ritorno. Per il tipo di puntatore, l'implementazione HAL deve allocare la memoria necessaria e l'utente che chiama è responsabile della chiamata di release_memory_from_get, che consente a HAL di rilasciare la memoria allocata. Per il tipo di proprietà VEHICLE_PROP_CHANGE_MODE_STATIC, get deve restituire sempre lo stesso valore. Per il tipo di proprietà VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, deve restituire il valore più recente. Se non sono ancora disponibili dati, il che può accadere durante la fase iniziale, questa chiamata dovrebbe restituire immediatamente il codice di errore -EAGAIN.

Definizione nella riga 1681 del file vehicle.h .

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

Definizione alla riga 1646 del file vehicle.h .

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

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

Parametri
num_properties numero di proprietà contenute nell'array restituito.
Ritorni
un array di configurazioni delle proprietà supportate da questa auto. Tieni presente che i dati restituiti sono costanti e non possono essere modificati dall'utente che li chiama. L'implementazione di HAL deve mantenere questa memoria fino al rilascio di HAL per evitare di copiarla di nuovo.

Definizione nella 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. Se la chiamata unsubscribe() non viene chiamata su tutte le proprietà prima di release() allora release() annulla l'iscrizione delle proprietà stesse.

Definizione nella riga 1654 del file vehicle.h .

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

Libera la memoria allocata ai dati nella chiamata get precedente. La chiamata get per byte o stringa comporta l'allocazione della memoria necessaria dall'HAL del veicolo. Per sicurezza, la memoria allocata dall'HAL del veicolo deve essere rilasciata dall'HAL del veicolo e il servizio di rete del veicolo la chiamerà quando i dati dell'HAL del veicolo non sono più necessari. L'implementazione dell'HAL del veicolo deve 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é questi vengono allocati dal servizio di rete del veicolo. Una volta liberata la memoria, il puntatore corrispondente deve essere impostato su NULL dal HAL del veicolo.

Definizione nella riga 1693 del file vehicle.h .

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

Imposta un valore della proprietà del veicolo. I dati devono essere allocati correttamente e non essere NULL. L'autore della chiamata dell'API È IL PROPRIETARIO del campo dati. Il timestamp dei dati verrà ignorato per l'operazione di impostazione. L'impostazione di alcune proprietà richiede lo stato iniziale disponibile. A seconda dell'HAL del veicolo, questi dati iniziali potrebbero non essere disponibili per un breve periodo dopo l'inizializzazione. In questo 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 questo caso, hal dovrebbe restituire l'errore -ESHUTDOWN.

Definizione nella 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) 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 le proprietà di tipo on-change, il servizio di rete del veicolo effettuerà un'altra chiamata get per controllare lo stato iniziale. Di conseguenza, l'implementazione dell'HAL del veicolo non deve inviare lo stato iniziale per il tipo di proprietà on-change.

Parametri
dispositivo
prop
sample_rate
zone Tutte le zone sottoscritte per la proprietà con zone. Può essere ignorato per la proprietà senza zone. 0 indica tutte le zone supportate anziché nessuna.

Definizione nella riga 1723 del file vehicle.h .

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

Annullare l'abbonamento a una proprietà.

Definizione nella riga 1727 del file vehicle.h .


La documentazione di questa struttura è stata generata dal seguente file: