Ссылка на структуру Vehicle_hw_device
#include < vehicle.h >
Поля данных | |
структура hw_device_t | общий |
интервал(* | init )(struct Vehicle_hw_device *device, Vehicle_event_callback_fn event_fn, Vehicle_error_callback_fn err_fn) |
интервал(* | Release )(struct Vehicle_hw_device *device) |
Vehicle_prop_config_t const *(* | list_properties )(struct Vehicle_hw_device *device, int *num_properties) |
интервал(* | get )(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
пустота(* | Release_memory_from_get )(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
интервал(* | set )(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data) |
интервал(* | подписаться )(struct Vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t зоны) |
интервал(* | отписаться )(struct Vehicle_hw_device *device, int32_t prop) |
интервал(* | дамп )(struct Vehicle_hw_device *device, int fd) |
Подробное описание
Полевая документация
структура hw_device_t общая |
int(* dump)(struct Vehicle_hw_device *device, int fd) |
Распечатать состояние отладки для автомобиля. Он будет вызван службой автомобильной сети и будет включен в дамп службы.
Переданный файловый дескриптор можно использовать для записи отладочного текста с помощью dprintf() или write(). Текст должен быть только в кодировке ASCII.
Требования к производительности:
Это должен быть неблокирующий вызов. HAL должен вернуться из этого вызова через 1 мс, должен вернуться из этого вызова через 10 мс. Этот вызов должен избегать взаимоблокировок, поскольку его можно вызвать в любой момент работы. Любые используемые примитивы синхронизации (например, блокировки мьютексов или семафоры) должны быть получены с таймаутом.
int(* get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
Получите стоимость имущества автомобиля прямо сейчас. данные должны быть распределены правильно. Вызывающий API ВЛАДЕЕТ полем данных. Вызывающий объект установит data->prop, data->value_type и, при необходимости, значение зоны для зонированного свойства. Но реализация HAL должна правильно заполнять все записи при возврате. Для типа указателя реализация HAL должна выделить необходимую память, а вызывающая сторона отвечает за вызов Release_memory_from_get, который позволяет HAL освободить выделенную память. Для типа свойства VEHICLE_PROP_CHANGE_MODE_STATIC метод get всегда должен возвращать одно и то же значение. Для типа свойства VEHICLE_PROP_CHANGE_MODE_ON_CHANGE оно должно возвращать последнее значение. Если доступных данных еще нет, что может произойти на начальном этапе, этот вызов должен немедленно вернуться с кодом ошибки -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) |
Перечислите все доступные свойства. Список возвращается в «списке».
- Параметры
num_properties количество свойств, содержащихся в перенастраиваемом массиве.
- Возврат
- массив конфигураций свойств, поддерживаемых этим автомобилем. Обратите внимание, что возвращаемые данные являются константными, и вызывающая сторона не может их изменить. Реализация HAL должна сохранять эту память до тех пор, пока HAL не будет выпущен, чтобы избежать ее повторного копирования.
int(* Release)(struct Vehicle_hw_device *device) |
Перед вызовом close пользователь должен уничтожить зарегистрированные функции обратного вызова. Если вызов unsubscribe() не вызывается для всех свойств до Release() , то Release() сам отменит подписку на свойства.
void(* Release_memory_from_get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
Освободите память, выделенную для данных в предыдущем вызове get. Вызов get для байта или строки включает в себя выделение необходимой памяти из hal транспортного средства. В целях безопасности память, выделенная Vehicle hal, должна быть освобождена Vehicle hal, и служба сети транспортного средства вызовет это, когда данные из Vehicle hal больше не нужны. Реализация Vehicle hal должна освобождать только член Vehicle_prop_value_t, такой как data->str_value.data или data->bytes_value.data, но не сами данные, поскольку сами данные выделяются из сетевой службы транспортного средства. Как только память будет освобождена, соответствующий указатель должен быть установлен в NULL для транспортного средства hal.
int(* set)(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data) |
Установите значение свойства транспортного средства. данные должны быть распределены правильно, а не NULL. Вызывающий API ВЛАДЕЕТ полем данных. временная метка данных будет игнорироваться для операции установки. Для установки некоторых свойств требуется наличие начального состояния. В зависимости от номера автомобиля такие исходные данные могут быть недоступны в течение некоторого времени после инициализации. В таком случае set call может вернуть -EAGAIN, как и get call. Для объекта с отдельным управлением питанием установка может выйти из строя, если объект не включен. В таком случае hal должен вернуть ошибку -ESHUTDOWN.
int(* subscribe)(struct Vehicle_hw_device *device, int32_t prop, float sample_rate, зоны int32_t) |
Подписывайтесь на события. В зависимости от вывода list_properties, если свойство: a) при изменении: sample_rate должно быть установлено в 0. b) поддерживает частоту: sample_rate должно быть установлено от min_sample_rate до max_sample_rate. Для свойств типа «при изменении» служба сети транспортных средств выполнит еще один вызов get для проверки исходного состояния. Благодаря этому реализации транспортного средства hal не требуется отправлять начальное состояние для свойств при изменении типа.
- Параметры
устройство опора частота дискретизации зоны Все подписанные зоны для зонированной собственности. можно игнорировать для незонированной собственности. 0 означает, что поддерживаются все зоны, а не отсутствие зоны.
int(* отписаться)(struct Vehicle_hw_device *device, int32_t prop) |
Документация для этой структуры была создана из следующего файла:
- Аппаратное обеспечение/libhardware/include/hardware/ Vehicle.h