Dokumentacja struktury vehicle_hw_device

Opis struktury vehicle_hw_device

#include < vehicle.h >

Pola danych

struct hw_device_t   wspólne
 
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)
 

Szczegółowy opis

Definicja w wierszu 1639 pliku vehicle.h .

Dokumentacja pola

struct hw_device_t common

Definicja w wierszu 1640 pliku vehicle.h .

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

Wydrukuj stan debugowania interfejsu HAL pojazdu. Ta usługa zostanie wywołana przez usługę sieci pojazdu i zostanie uwzględniona w dumpie usługi.

Przekazany deskryptor pliku może służyć do zapisywania tekstu debugowania za pomocą funkcji dprintf() lub write(). Tekst powinien być zapisany tylko w kodowaniu ASCII.

Wymagania dotyczące wydajności:

Musi to być wywołanie nieblokujące. Interfejs HAL powinien zwrócić wynik tego wywołania w 1 ms, a musi to nastąpić w 10 ms. To wywołanie musi zapobiegać blokadom, ponieważ może być wywoływane w dowolnym momencie działania. Wszystkie używane obiekty synchronizacji (np. blokady mutex lub semafora) powinny być pozyskiwane z czasem oczekiwania.

Definicja w wierszu 1744 pliku vehicle.h .

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

Od razu uzyskać wartość właściwości pojazdu. Dane powinny być prawidłowo przypisane. Pole danych należy do wywołującego interfejs API. Wywołujący ustawia dane->prop, dane->value_type i opcjonalnie wartość strefy dla właściwości strefy. Jednak implementacja HAL musi prawidłowo wypełnić wszystkie wpisy podczas zwracania. W przypadku typu wskaźnika implementacja HAL powinna przydzielić niezbędną pamięć, a wywołujący jest odpowiedzialny za wywołanie release_memory_from_get, co pozwala HALowi zwolnić przydzieloną pamięć. W przypadku typu właściwości VEHICLE_PROP_CHANGE_MODE_STATIC funkcja get powinna zawsze zwracać tę samą wartość. W przypadku typu właściwości VEHICLE_PROP_CHANGE_MODE_ON_CHANGE powinna zwracać najnowszą wartość. Jeśli nie ma jeszcze dostępnych danych, co może się zdarzyć na początkowym etapie, wywołanie powinno zwrócić natychmiast kod błędu -EAGAIN.

Definicja w wierszu 1681 pliku vehicle.h .

Po wywołaniu funkcji open na urządzeniu użytkownik powinien zarejestrować funkcje wywołania zwrotnego dla funkcji zdarzeń i błędów.

Definicja w wierszu 1646 pliku vehicle.h .

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

Wymień wszystkie dostępne usługi. Lista jest zwracana w elementach „list”.

Parametry
num_properties liczba właściwości zawartych w zwróconej tablicy.
Zwroty
Tablica konfiguracji właściwości obsługiwanych przez ten samochód. Pamiętaj, że zwracane dane są stałe i wywołujący nie może ich modyfikować. Implementacja HAL powinna zachować to wspomnienie do czasu jego wydania, aby uniknąć ponownego kopiowania.

Definicja w wierszu 1663 pliku vehicle.h .

int(* release)(struct vehicle_hw_device *device)

Przed zamknięciem połączenia użytkownik powinien usunąć zarejestrowane funkcje wywołania zwrotnego. Jeśli funkcja unsubscribe() nie zostanie wywołana we wszystkich usługach przed wywołaniem funkcji release() , funkcja release() sama anuluje subskrypcję tych usług.

Definicja w wierszu 1654 pliku vehicle.h .

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

Zwolnij pamięć przydzieloną do danych w poprzednim wywołaniu get. Wywołanie get dla bajtów lub ciągu znaków wiąże się z przydzieleniem niezbędnej pamięci z hal pojazdu. Aby zachować bezpieczeństwo, pamięć przydzielona przez vehicle hal powinna zostać zwolniona przez vehicle hal, a usługa vehicle network powinna wywołać tę funkcję, gdy dane z vehicle hal nie będą już potrzebne. Implementacja vehicle hal powinna zwalniać tylko element vehicle_prop_value_t, np. data->str_value.data lub data->bytes_value.data, ale nie same dane, ponieważ są one przydzielane przez usługę vehicle network. Gdy pamięć zostanie zwolniona, odpowiedni wskaźnik powinien zostać ustawiony na NULL przez HAL pojazdu.

Definicja w wierszu 1693 pliku vehicle.h .

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

Ustaw wartość właściwości pojazdu. Dane powinny być prawidłowo przydzielone, a nie NULL. Pole danych należy do wywołującego interfejs API. W przypadku operacji set sygnatura czasowa danych zostanie zignorowana. Ustawianie niektórych właściwości wymaga dostępu do stanu początkowego. W zależności od interfejsu HAL pojazdu te dane początkowe mogą być niedostępne przez krótki czas po uruchomieniu. W takim przypadku wywołanie set call może zwrócić -EAGAIN, tak jak get call. W przypadku obiektu z osobnym włącznikiem może wystąpić błąd, jeśli obiekt jest wyłączony. W takim przypadku funkcja hal powinna zwrócić błąd -ESHUTDOWN.

Definicja w wierszu 1706 pliku vehicle.h .

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

subskrybować zdarzenia; W zależności od danych wyjściowych funkcji list_properties, jeśli właściwość jest: a) zmienna: sample_rate należy ustawić na 0. b) obsługuje częstotliwość: sample_rate należy ustawić od min_sample_rate do max_sample_rate. W przypadku właściwości typu „w zmianie” usługa sieci pojazdu wykona kolejne wywołanie GET, aby sprawdzić stan początkowy. Dlatego implementacja HAL pojazdu nie musi wysyłać stanu początkowego w przypadku właściwości typu „on-change”.

Parametry
urządzenie
rekwizyt
sample_rate
stref Wszystkie subskrybowane strefy w przypadku usługi z podziałem na strefy. W przypadku usługi bez podziału na strefy można je zignorować. Wartość 0 oznacza, że obsługiwane są wszystkie strefy, a nie brak strefy.

Definicja w wierszu 1723 pliku vehicle.h .

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

anulować subskrypcję usługi,

Definicja w wierszu 1727 w pliku vehicle.h .


Dokumentacja tego typu danych została wygenerowana z tego pliku: