Zwróć uwagę na strukturę hw_module_t
#include <
hardware.h
>
Pola danych |
|
uint32_t | tag |
uint16_t | module_api_version |
uint16_t | hal_api_version |
const char * | id |
const char * | name |
const char * | author |
struct hw_module_methods_t * | metody |
void * | dso |
uint32_t | reserved [32-7] |
Szczegółowy opis
Każdy moduł sprzętowy musi mieć strukturę danych o nazwie HAL_MODULE_INFO_SYM, a pola tej struktury danych muszą zaczynać się od hw_module_t po czym następuje informacja o danym module.
Definicja w wierszu 86 pliku hardware.h .
Dokumentacja pola
const char* author |
Autor, właściciel lub osoba implementująca moduł
Definicja w wierszu 139 pliku hardware.h .
void* dso |
dso modułu
Definicja w wierszu 145 pliku hardware.h .
uint16_t hal_api_version |
Definicje version_major/version_minor są podawane tutaj na potrzeby tymczasowej zgodności kodu źródłowego. Zostaną one usunięte w kolejne wersji. WSZYSTKIE pliki klienta muszą zostać przekonwertowane do formatu nowej wersji. Wersja interfejsu API modułu HAL. Ma ona na celu zaktualizowanie wersji struktur i definicji hw_module_t , hw_module_methods_t i hw_device_t
To pole jest obsługiwane przez interfejs HAL. Użytkownicy modułu i implementacje nie mogą polegać na tej wartości w celu uzyskania informacji o wersji.
Obecnie jedyną prawidłową wartością jest 0.
Definicja w wierszu 129 pliku hardware.h .
const char* id |
Identyfikator modułu
Definicja w wierszu 133 pliku hardware.h .
struct hw_module_methods_t * methods |
Metody modułów
Definicja w wierszu 142 pliku hardware.h .
uint16_t module_api_version |
Wersja interfejsu API zaimplementowanego modułu. Właściciel modułu jest odpowiedzialny za aktualizację wersji, gdy zmieni się interfejs modułu.
Moduli pochodnych, takich jak gralloc i audio, są właścicielami tego pola i nim zarządzają. Użytkownik modułu musi zinterpretować pole wersji, aby zdecydować, czy ma współpracować z dostarczoną implementacją modułu. Na przykład SurfaceFlinger musi wiedzieć, jak zarządzać różnymi wersjami interfejsu gralloc-module API, a AudioFlinger musi wiedzieć, jak to samo robić w przypadku interfejsu audio-module API.
Wersja interfejsu API modułu powinna zawierać komponent główny i podrzędny. Na przykład wersja 1.0 może być reprezentowana jako 0x0100. Ten format oznacza, że wszystkie wersje od 0x0100 do 0x01ff są zgodne z interfejsem API.
W przyszłości biblioteka libhardware udostępni funkcję hw_get_module_version() (lub jej odpowiednik), która będzie przyjmować jako argumenty minimalną i maksymalną wersję obsługiwanego modułu. Będzie ona mogła odrzucać moduły z wersjami spoza podanego zakresu.
Definicja w wierszu 111 pliku hardware.h .
const char* name |
Nazwa tego modułu
Definicja w wierszu 136 pliku hardware.h .
uint32_t reserved[32-7] |
wypełnienie do 128 bajtów, zarezerwowane do użycia w przyszłości
Definicja w wierszu 151 pliku hardware.h .
tag uint32_t |
tag musi być zainicjowany jako HARDWARE_MODULE_TAG
Definicja w wierszu 88 pliku hardware.h .
Dokumentacja tego typu danych została wygenerowana z tego pliku:
- hardware/libhardware/include/hardware/ hardware.h