Vehicle_hw_device Referencia de estructura
#include < vehicle.h >
Campos de información | |
estructura hw_device_t | común |
En t(* | init )(estructura vehículo_hw_device *dispositivo, vehículo_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
En t(* | liberar )(estructura vehículo_hw_dispositivo *dispositivo) |
vehículo_prop_config_t const *(* | list_properties )(struct vehicle_hw_device *dispositivo, int *num_properties) |
En t(* | obtener )(estructura vehículo_hw_dispositivo *dispositivo, vehículo_prop_valor_t *datos) |
vacío(* | release_memory_from_get )(estructura vehículo_hw_dispositivo *dispositivo, vehículo_prop_valor_t *datos) |
En t(* | establecer )(estructura vehículo_hw_dispositivo *dispositivo, const vehículo_prop_valor_t *datos) |
En t(* | subscribe )(struct vehicle_hw_device *dispositivo, int32_t prop, float sample_rate, int32_t zones) |
En t(* | darse de baja )(struct vehicle_hw_device *dispositivo, int32_t prop) |
En t(* | volcado )(estructura vehículo_hw_dispositivo *dispositivo, int fd) |
Descripción detallada
Documentación de campo
estructura hw_device_t común |
int(* volcado)(estructura vehículo_hw_dispositivo *dispositivo, int fd) |
Imprima el estado de depuración para el vehículo hal. Este será llamado por el servicio de red de vehículos y se incluirá 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 en codificación ASCII únicamente.
Requisitos de desempeño:
Esta debe ser una llamada sin bloqueo. El HAL debe regresar de esta llamada en 1 ms, debe regresar de esta llamada en 10 ms. Esta llamada debe evitar interbloqueos, ya que puede ser llamada en cualquier punto de operación. Cualquier primitiva de sincronización utilizada (como bloqueos mutex o semáforos) debe adquirirse con un tiempo de espera.
int(* get)(estructura vehículo_hw_dispositivo *dispositivo, vehículo_prop_valor_t *datos) |
Obtenga un valor de propiedad del vehículo de inmediato. los datos deben ser asignados correctamente. La persona que llama a la API POSEE el campo de datos. La persona que llama establecerá data->prop, data->value_type y, opcionalmente, valor de zona para la propiedad dividida en zonas. 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 que HAL libere 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, debe devolver el último valor. Si aún no hay datos disponibles, lo que puede suceder durante la etapa inicial, esta llamada debería devolverse inmediatamente con el código de error -EAGAIN.
int(* init)(struct vehicle_hw_device *dispositivo, vehicle_event_callback_fn event_fn, vehicle_error_callback_fn err_fn) |
vehicle_prop_config_t const*(* list_properties)(struct vehicle_hw_device *dispositivo, int *num_properties) |
Enumerar todas las propiedades disponibles. La lista se devuelve en "lista".
- Parámetros
num_propiedades número de propiedades contenidas en la matriz devuelta.
- Devoluciones
- matriz de configuraciones de propiedades compatibles con 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 mantener esta memoria hasta que se libere HAL para evitar copiarla nuevamente.
int(* release)(estructura vehículo_hw_device *dispositivo) |
Antes de cerrar la llamada, el usuario debe destruir las funciones de devolución de llamada registradas. En caso de que la llamada unsubscribe() no se llame a todas las propiedades antes de release() , release() cancelará la suscripción de las propiedades.
void(* release_memory_from_get)(estructura vehículo_hw_device *dispositivo, vehículo_prop_valor_t *datos) |
Liberar la memoria asignada a los datos en la llamada de obtención anterior. obtener una llamada por byte o cadena implica asignar la memoria necesaria del vehículo hal. 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 lo llamará cuando los datos del vehículo hal ya no sean necesarios. La implementación 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í mismos, 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 establecerse en NULL bu vehículo hal.
int(* conjunto)(estructura vehículo_hw_dispositivo *dispositivo, const vehículo_prop_valor_t *datos) |
Establezca un valor de propiedad del vehículo. los datos deben asignarse correctamente y no NULL. La persona que llama a la API POSEE el 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 tener disponible el estado inicial. Según el vehículo, es posible que dichos datos iniciales no estén disponibles durante un breve período de tiempo después de la inicialización. En tal caso, establecer llamada puede devolver -EAGAIN como obtener llamada. Para una propiedad con control de energía separado, la configuración puede fallar si la propiedad no está encendida. En tal caso, hal debería devolver el error -ESHUTDOWN.
int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
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 de 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 de hal de vehículo no necesita enviar el estado inicial para el tipo de propiedades en cambio.
- Parámetros
dispositivo apuntalar tasa_de_muestra zonas Todas las zonas suscritas para la propiedad zonificada. puede ignorarse para propiedades no zonificadas. 0 significa que todas las zonas son compatibles en lugar de ninguna zona.
int(* darse de baja)(struct vehicle_hw_device *dispositivo, int32_t prop) |
La documentación para esta estructura se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ vehículo.h