Référence de structure Vehicle_hw_device

Référence de structure Vehicle_hw_device

#include < vehicle.h >

Champs de données

structure hw_device_t commun
entier(* init )(struct véhicule_hw_device *device, véhicule_event_callback_fn event_fn, véhicule_error_callback_fn err_fn)
entier(* release )(struct véhicule_hw_device *device)
véhicule_prop_config_t const *(* list_properties )(struct véhicule_hw_device *device, int *num_properties)
entier(* get )(struct véhicule_hw_device *appareil, véhicule_prop_value_t *données)
vide(* release_memory_from_get )(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data)
entier(* set )(struct véhicule_hw_device *device, const véhicule_prop_value_t *données)
entier(* s'abonner (struct véhicule_hw_device *device, int32_t prop, float sample_rate, int32_t zones)
entier(* désabonnement )(struct véhicule_hw_device *device, int32_t prop)
entier(* dump )(struct véhicule_hw_device *device, int fd)

Description détaillée

Définition à la ligne 1639 du fichier véhicule.h .

Documentation de terrain

struct hw_device_t commun

Définition à la ligne 1640 du fichier véhicule.h .

int(* dump)(struct véhicule_hw_device *device, int fd)

Imprimez l’état de débogage pour le véhicule hal. Celui-ci sera appelé par le service du réseau de véhicules et sera inclus dans le dump 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 uniquement en codage ASCII.

Exigences de performances :

Il doit s'agir d'un appel non bloquant. Le HAL devrait revenir de cet appel dans 1 ms, doit revenir de cet appel dans 10 ms. Cet appel doit éviter les blocages, car il peut être appelé à tout 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.

Définition à la ligne 1744 du fichier véhicule.h .

int (* get) (struct véhicule_hw_device * appareil, véhicule_prop_value_t * données)

Obtenez immédiatement la valeur d'un véhicule. les données doivent être allouées correctement. 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 de HAL doit remplir correctement toutes les entrées lors du retour. Pour le type de pointeur, l'implémentation de HAL doit allouer la mémoire nécessaire et l'appelant est responsable de l'appel de 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. Si aucune donnée n'est encore disponible, ce qui peut arriver lors de la phase initiale, cet appel doit revenir immédiatement avec le code d'erreur -EAGAIN.

Définition à la ligne 1681 du fichier véhicule.h .

Après avoir appelé open sur l'appareil, l'utilisateur doit enregistrer les rappels pour les fonctions d'événement et d'erreur.

Définition à la ligne 1646 du fichier véhicule.h .

véhicule_prop_config_t const*(* list_properties)(struct véhicule_hw_device *device, int *num_properties)

Énumérez toutes les propriétés disponibles. La liste est renvoyée dans "list".

Paramètres
num_propriétés nombre de propriétés contenues dans le tableau réajusté.
Retour
gamme 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 de HAL doit conserver cette mémoire jusqu'à ce que HAL soit publié pour éviter de la copier à nouveau.

Définition à la ligne 1663 du fichier véhicule.h .

int(* release)(struct véhicule_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 elle-même.

Définition à la ligne 1654 du fichier véhicule.h .

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 du réseau du véhicule l'appellera lorsque les données du véhicule hal ne seront plus nécessaires. L'implémentation de Vehicle Hal ne doit libérer que les membres 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 réseau du véhicule. Une fois la mémoire libérée, le pointeur correspondant doit être réglé sur NULL pour le véhicule.

Définition à la ligne 1693 du fichier véhicule.h .

int(* set)(struct véhicule_hw_device *device, const véhicule_prop_value_t *données)

Définissez une valeur de propriété du 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 du véhicule, ces données initiales peuvent ne pas être disponibles peu de temps après le démarrage. Dans ce cas, set call peut renvoyer -EAGAIN comme get call. Pour une propriété avec contrôle d’alimentation séparé, l’ensemble peut échouer si la propriété n’est pas sous tension. Dans ce cas, hal devrait renvoyer l'erreur -ESHUTDOWN.

Définition à la ligne 1706 du fichier véhicule.h .

int(* abonnement)(struct véhicule_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) en cas de changement : 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 du réseau de véhicules effectuera un autre appel pour vérifier l'état initial. Pour cette raison, l'implémentation de Vehicle Hal n'a pas besoin d'envoyer l'état initial pour les types de propriétés en cas de changement.

Paramètres
appareil
soutenir
taux d'échantillonnage
zones Toutes les zones souscrites pour une 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.

Définition à la ligne 1723 du fichier véhicule.h .

int(* désabonnement)(struct véhicule_hw_device *device, int32_t prop)

Annuler l'abonnement sur une propriété.

Définition à la ligne 1727 du fichier véhicule.h .


La documentation de cette structure a été générée à partir du fichier suivant :