Referencia de la estructura vehicle_hw_device

Referencia de la estructura vehicle_hw_device

#include < vehicle.h >

Campos de datos

struct hw_device_t   común
 
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)
 

Descripción detallada

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

Documentación de campos

struct hw_device_t común

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

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

Imprime el estado de depuración del sistema HAL del vehículo. El servicio de red del vehículo llamará a esta función y la incluirá en el volcado del servicio.

El descriptor de archivo que se pasa se puede usar para escribir texto de depuración con dprintf() o write(). El texto debe estar solo en codificación ASCII.

Requisitos de rendimiento:

Esta debe ser una llamada sin bloqueo. El HAL debe mostrarse desde esta llamada en 1 ms. Esta llamada debe evitar interbloqueos, ya que se puede llamar en cualquier punto de la operación. Cualquier primitiva de sincronización que se use (como bloqueos de mutex o semáforos) debe adquirirse con un tiempo de espera.

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

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

Obtén un valor de propiedad del vehículo de inmediato. Los datos se deben asignar correctamente. El llamador de la API ES PROPIETARIO del campo de datos. El llamador establecerá data->prop, data->value_type y, de manera opcional, el valor de zona para la propiedad con zona. Sin embargo, la implementación de HAL debe completar todas las entradas correctamente cuando se muestra. Para el tipo de puntero, la implementación de HAL debe asignar la memoria necesaria y el llamador es responsable de llamar a release_memory_from_get, lo que permite que HAL libere la memoria asignada. Para el tipo de propiedad VEHICLE_PROP_CHANGE_MODE_STATIC, get siempre debe mostrar el mismo valor. Para el tipo de propiedad VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, debe mostrar el valor más reciente. Si aún no hay datos disponibles, lo que puede suceder durante la etapa inicial, esta llamada debería mostrarse de inmediato con el código de error -EAGAIN.

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

Después de llamar a open on device, el usuario debe registrar devoluciones de llamada para las funciones de eventos y errores.

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

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

Enumera todas las propiedades disponibles. La lista se muestra en "list".

Parámetros
num_properties cantidad de propiedades que contiene el array ajustado.
Muestra
Es un array de parámetros de configuración de propiedades compatibles con este automóvil. Ten en cuenta que los datos que se devuelven son const y el llamador no puede modificarlos. La implementación de HAL debe conservar esta memoria hasta que se libere HAL para evitar volver a copiarla.

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

int(* release)(struct vehicle_hw_device *device)

Antes de llamar a close, el usuario debe destruir las funciones de devolución de llamada registradas. En caso de que no se llame a la llamada unsubscribe() en todas las propiedades antes de release() , release() cancelará la suscripción de las propiedades.

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

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

Libera la memoria asignada a los datos en la llamada de get anterior. La llamada de get para un byte o una cadena implica asignar la memoria necesaria desde el sistema HAL del vehículo. Para mayor seguridad, el sistema de HAL del vehículo debe liberar la memoria que asignó, y el servicio de red del vehículo llamará a esta función cuando los datos del sistema de HAL del vehículo ya no sean necesarios. La implementación del sistema de HAL del vehículo 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 estos se asignan desde el servicio de red del vehículo. Una vez que se libera la memoria, el puntero correspondiente se debe establecer en NULL por el sistema HAL del vehículo.

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

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

Establece un valor de propiedad del vehículo. Los datos deben asignarse correctamente y no deben ser nulos. El llamador de la API ES PROPIETARIO del campo de datos. La marca de tiempo de los datos se ignorará para la operación de configuración. La configuración de algunas propiedades requiere que el estado inicial esté disponible. Según el sistema HAL del vehículo, es posible que esos datos iniciales no estén disponibles durante un período breve después de la inicialización. En ese caso, la llamada de configuración puede devolver -EAGAIN como la llamada de get. En el caso de una propiedad con control de alimentación independiente, el parámetro set puede fallar si la propiedad no está encendida. En ese caso, hal debería mostrar el error -ESHUTDOWN.

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

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

Suscríbete a eventos. Según el resultado de list_properties, si la propiedad es: a) on-change: sample_rate debe establecerse en 0. b) admite frecuencia: sample_rate debe establecerse de min_sample_rate a max_sample_rate. Para el tipo de propiedades de cambio, el servicio de red del vehículo realizará otra llamada de obtención para verificar el estado inicial. Debido a esto, la implementación de HAL del vehículo no necesita enviar el estado inicial para el tipo de propiedades de cambio.

Parámetros
dispositivo
accesorio
sample_rate
zonas Todas las zonas suscritas para la propiedad con zonas se pueden ignorar para la propiedad sin zonas. 0 significa que se admiten todas las zonas en lugar de ninguna.

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

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

Cancelar la suscripción de una propiedad

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


La documentación de esta struct se generó a partir del siguiente archivo: