Vehicle_hw_device Referencia de estructura

Vehicle_hw_device Referencia de estructura

#include < vehicle.h >

Campos de información

estructura hw_device_t común
En t(* init )(struct vehículo_hw_device *dispositivo, vehículo_event_callback_fn event_fn, vehículo_error_callback_fn err_fn)
En t(* lanzamiento ) (estructura vehículo_hw_device *dispositivo)
vehículo_prop_config_t constante *(* list_properties )(struct vehículo_hw_device *dispositivo, int *num_properties)
En t(* obtener ) (estructura vehículo_hw_device *dispositivo, vehículo_prop_value_t *datos)
vacío(* release_memory_from_get (estructura vehículo_hw_device *dispositivo, vehículo_prop_value_t *datos)
En t(* set )(struct vehículo_hw_device *dispositivo, const vehículo_prop_value_t *datos)
En t(* suscribirse (estructura vehículo_hw_device * dispositivo, int32_t prop, float sample_rate, int32_t zonas)
En t(* darse de baja ) (estructura vehículo_hw_device *dispositivo, int32_t prop)
En t(* volcado ) (estructura vehículo_hw_device *dispositivo, int fd)

Descripción detallada

Definición en la línea 1639 del archivo vehículo.h .

Documentación de campo

estructura hw_device_t común

Definición en la línea 1640 del archivo vehículo.h .

int(* volcado)(struct vehículo_hw_device *dispositivo, int fd)

Imprima el estado de depuración del vehículo hal. Este será llamado por el servicio de red del vehículo y será incluido en el volcado del servicio.

El descriptor de archivo pasado se puede usar para escribir texto de depuración usando dprintf() o write(). El texto debe estar únicamente en codificación ASCII.

Requisitos de desempeño:

Esta debe ser una llamada sin bloqueo. El HAL debería regresar de esta llamada en 1 ms, debe regresar de esta llamada en 10 ms. Esta llamada debe evitar puntos muertos, ya que puede llamarse en cualquier punto de la operación. Cualquier primitiva de sincronización utilizada (como bloqueos mutex o semáforos) debe adquirirse con un tiempo de espera.

Definición en la línea 1744 del archivo vehículo.h .

int(* get)(struct vehículo_hw_device *dispositivo, vehículo_prop_value_t *datos)

Obtenga el valor de la propiedad del vehículo de inmediato. los datos deben asignarse correctamente. La persona que llama a la API ES PROPIETARIA del campo de datos. La persona que llama establecerá datos->prop, datos->valor_tipo y, opcionalmente, el valor de zona para la propiedad zonificada. Pero la implementación de HAL debe completar todas las entradas correctamente al regresar. Para el tipo de puntero, la implementación de HAL debe asignar la memoria necesaria y la persona que llama es responsable de llamar a release_memory_from_get, lo que permite a HAL liberar la memoria asignada. Para el tipo de propiedad VEHICLE_PROP_CHANGE_MODE_STATIC, get debe devolver siempre el mismo valor. Para el tipo de propiedad VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, debería devolver el último valor. Si aún no hay datos disponibles, lo que puede suceder durante la etapa inicial, esta llamada debería regresar inmediatamente con el código de error -EAGAIN.

Definición en la línea 1681 del archivo vehículo.h .

int(* init)(struct vehículo_hw_device *dispositivo, vehículo_event_callback_fn event_fn, vehículo_error_callback_fn err_fn)

Después de llamar a abrir en el dispositivo, el usuario debe registrar devoluciones de llamada para funciones de eventos y errores.

Definición en la línea 1646 del archivo vehículo.h .

vehículo_prop_config_t const*(* list_properties)(struct vehículo_hw_device *dispositivo, int *num_properties)

Enumere todas las propiedades disponibles. La lista se devuelve en "lista".

Parámetros
núm_propiedades número de propiedades contenidas en la matriz reajustada.
Devoluciones
variedad de configuraciones de propiedades admitidas por este automóvil. Tenga en cuenta que los datos devueltos son constantes y la persona que llama no puede modificarlos. La implementación de HAL debe conservar esta memoria hasta que se lance HAL para evitar copiarla nuevamente.

Definición en la línea 1663 del archivo vehículo.h .

int(* lanzamiento)(estructura vehículo_hw_device *dispositivo)

Antes de cerrar, el usuario debe destruir las funciones de devolución de llamada registradas. En caso de que la llamada unsubscribe() no se realice en todas las propiedades antes del lanzamiento() , entonces release() cancelará la suscripción de las propiedades.

Definición en la línea 1654 del archivo vehículo.h .

void(* release_memory_from_get)(struct vehículo_hw_device *dispositivo, vehículo_prop_value_t *datos)

Libera la memoria asignada a los datos en la llamada de obtención anterior. Obtener una llamada para un byte o una cadena implica asignar la memoria necesaria desde el vehículo. Para estar seguro, la memoria asignada por el vehículo hal debe ser liberada por el vehículo hal y el servicio de red del vehículo la llamará cuando los datos del vehículo hal ya no sean necesarios. La implementación de Vehicle Hal solo debe liberar el miembro de Vehicle_prop_value_t como data->str_value.data o data->bytes_value.data, pero no los datos en sí, ya que los datos en sí se asignan desde el servicio de red del vehículo. Una vez que se libera la memoria, el puntero correspondiente debe configurarse en NULL bu vehículo hal.

Definición en la línea 1693 del archivo vehículo.h .

int(* set)(struct vehículo_hw_device *dispositivo, const vehículo_prop_value_t *datos)

Establecer un valor de propiedad del vehículo. los datos deben asignarse correctamente y no NULL. La persona que llama a la API ES PROPIETARIA del campo de datos. La marca de tiempo de los datos se ignorará para la operación de configuración. Para configurar algunas propiedades es necesario tener el estado inicial disponible. Dependiendo del vehículo, es posible que dichos datos iniciales no estén disponibles por un corto tiempo después del inicio. En tal caso, establecer una llamada puede devolver -EAGAIN como recibir una llamada. Para una propiedad con control de energía independiente, la configuración puede fallar si la propiedad no está encendida. En tal caso, hal debería devolver el error -ESHUTDOWN.

Definición en la línea 1706 del archivo vehículo.h .

int(* suscribirse)(estructura vehículo_hw_device *dispositivo, int32_t prop, float sample_rate, int32_t zonas)

Suscríbete a eventos. Dependiendo de la salida de list_properties si la propiedad es: a) en cambio: sample_rate debe establecerse en 0. b) admite frecuencia: sample_rate debe establecerse desde min_sample_rate a max_sample_rate. Para el tipo de propiedades en cambio, el servicio de red de vehículos realizará otra llamada para verificar el estado inicial. Debido a esto, la implementación del vehículo hal no necesita enviar el estado inicial para las propiedades del tipo de cambio.

Parámetros
dispositivo
apuntalar
tasa_de_muestra
zonas Todas las zonas suscritas para propiedades zonificadas. se puede ignorar para propiedades no zonificadas. 0 significa que se admiten todas las zonas en lugar de ninguna zona.

Definición en la línea 1723 del archivo vehículo.h .

int(* cancelar suscripción)(struct vehículo_hw_device *dispositivo, int32_t prop)

Cancelar la suscripción de una propiedad.

Definición en la línea 1727 del archivo vehículo.h .


La documentación para esta estructura se generó a partir del siguiente archivo: