Référence de structure vehicle_hw_device
#include < vehicle.h >
Champs de données | |
structure hw_device_t | commun |
entier(* | init )(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
entier(* | release )(struct vehicle_hw_device *device) |
vehicle_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *device, int *num_properties) |
entier(* | get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
annuler(* | release_memory_from_get )(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
entier(* | set )(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
entier(* | s'abonner )(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
entier(* | se désabonner )(struct vehicle_hw_device *device, int32_t prop) |
entier(* | dump )(struct vehicle_hw_device *device, int fd) |
Description détaillée
Documentation de terrain
structure hw_device_t commun |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Imprimer l'état de débogage pour le véhicule hal. Celui-ci sera appelé par le service de réseau de véhicules et sera inclus dans le vidage du service.
Le descripteur de fichier transmis peut être utilisé pour écrire du texte de débogage à l'aide de dprintf() ou write(). Le texte doit être en codage ASCII uniquement.
Exigences de performances :
Il doit s'agir d'un appel non bloquant. La HAL doit revenir de cet appel dans 1 ms, doit revenir de cet appel dans 10 ms. Cet appel doit éviter les interblocages, car il peut être appelé à n'importe quel moment de l'opération. Toutes les primitives de synchronisation utilisées (telles que les verrous mutex ou les sémaphores) doivent être acquises avec un délai d'attente.
int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Obtenez une valeur de propriété du véhicule immédiatement. les données doivent être correctement allouées. L'appelant de l'API est propriétaire du champ de données. L'appelant définira data->prop, data->value_type et éventuellement la valeur de zone pour la propriété zonée. Mais l'implémentation HAL doit remplir correctement toutes les entrées lors du retour. Pour le type pointeur, l'implémentation HAL doit allouer la mémoire nécessaire et l'appelant est responsable de l'appel release_memory_from_get, ce qui permet à HAL de libérer la mémoire allouée. Pour le type de propriété VEHICLE_PROP_CHANGE_MODE_STATIC, get doit toujours renvoyer la même valeur. Pour le type de propriété VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, il doit renvoyer la dernière valeur. S'il n'y a pas encore de données disponibles, ce qui peut se produire lors de la phase initiale, cet appel doit renvoyer immédiatement avec le code d'erreur -EAGAIN.
int(* init)(struct vehicle_hw_device *device, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *device, int *num_properties) |
Énumérez toutes les propriétés disponibles. La liste est retournée dans "list".
- Paramètres
num_properties nombre de propriétés contenues dans le tableau réaccordé.
- Retour
- tableau de configurations de propriétés prises en charge par cette voiture. Notez que les données renvoyées sont constantes et que l'appelant ne peut pas les modifier. L'implémentation HAL doit conserver cette mémoire jusqu'à ce que HAL soit libérée pour éviter de la copier à nouveau.
int(* release)(struct vehicle_hw_device *device) |
Avant d'appeler close, l'utilisateur doit détruire les fonctions de rappel enregistrées. Dans le cas où l'appel unsubscribe() n'est pas appelé sur toutes les propriétés avant release() , alors release() désabonnera les propriétés elles-mêmes.
void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data) |
Libère la mémoire allouée aux données lors de l'appel get précédent. obtenir un appel pour un octet ou une chaîne implique l'allocation de la mémoire nécessaire à partir du véhicule hal. Pour être sûr, la mémoire allouée par le véhicule hal doit être libérée par le véhicule hal et le service de réseau du véhicule l'appellera lorsque les données du véhicule hal ne seront plus nécessaires. L'implémentation de véhicule hal ne devrait libérer que le membre de vehicle_prop_value_t comme data->str_value.data ou data->bytes_value.data mais pas les données elles-mêmes car les données elles-mêmes sont allouées à partir du service de réseau du véhicule. Une fois la mémoire libérée, le pointeur correspondant doit être défini sur NULL bu vehicle hal.
int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data) |
Définissez une valeur de propriété de véhicule. les données doivent être allouées correctement et non NULL. L'appelant de l'API est propriétaire du champ de données. l'horodatage des données sera ignoré pour l'opération définie. La définition de certaines propriétés nécessite que l'état initial soit disponible. En fonction de l'hal du véhicule, ces données initiales peuvent ne pas être disponibles pendant une courte période après l'initialisation. Dans ce cas, set call peut renvoyer -EAGAIN comme get call. Pour une propriété avec un contrôle d'alimentation séparé, l'activation peut échouer si la propriété n'est pas sous tension. Dans ce cas, hal devrait renvoyer l'erreur -ESHUTDOWN.
int(* abonnement)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
Abonnez-vous aux événements. En fonction de la sortie de list_properties si la propriété est : a) on-change : sample_rate doit être défini sur 0. b) prend en charge la fréquence : sample_rate doit être défini de min_sample_rate à max_sample_rate. Pour les types de propriétés en cours de modification, le service de réseau de véhicules effectuera un autre appel get pour vérifier l'état initial. Pour cette raison, l'implémentation de hal de véhicule n'a pas besoin d'envoyer l'état initial pour le type de propriétés en cas de changement.
- Paramètres
dispositif soutenir taux d'échantillonnage secteurs Toutes les zones souscrites pour la propriété zonée. peut être ignoré pour les propriétés non zonées. 0 signifie que toutes les zones sont prises en charge au lieu d'aucune zone.
int(* se désabonner)(struct vehicle_hw_device *device, int32_t prop) |
La documentation de cette structure a été générée à partir du fichier suivant :
- hardware/libhardware/include/hardware/ vehicule.h