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
Documentación de campos
struct hw_device_t común |
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.
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.
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) |
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.
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.
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.
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.
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.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
La documentación de esta struct se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ vehicle.h