Ссылка на структуру Vehicle_hw_device

Ссылка на структуру 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)

Подробное описание

Определение в строке 1639 файла Vehicle.h .

Полевая документация

структура hw_device_t общая

Определение в строке 1640 файла Vehicle.h .

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

Распечатать состояние отладки для автомобиля. Он будет вызван службой автомобильной сети и будет включен в дамп службы.

Переданный файловый дескриптор можно использовать для записи отладочного текста с помощью dprintf() или write(). Текст должен быть только в кодировке ASCII.

Требования к производительности:

Это должен быть неблокирующий вызов. HAL должен вернуться из этого вызова через 1 мс, должен вернуться из этого вызова через 10 мс. Этот вызов должен избегать взаимоблокировок, поскольку его можно вызвать в любой момент работы. Любые используемые примитивы синхронизации (например, блокировки мьютексов или семафоры) должны быть получены с таймаутом.

Определение в строке 1744 файла Vehicle.h .

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.

Определение в строке 1681 файла Vehicle.h .

int(* init)(struct Vehicle_hw_device *device, Vehicle_event_callback_fn event_fn, Vehicle_error_callback_fn err_fn)

После вызова open на устройстве пользователь должен зарегистрировать обратные вызовы для функций событий и ошибок.

Определение в строке 1646 файла Vehicle.h .

Vehicle_prop_config_t const*(* list_properties)(struct Vehicle_hw_device *device, int *num_properties)

Перечислите все доступные свойства. Список возвращается в «списке».

Параметры
num_properties количество свойств, содержащихся в перенастраиваемом массиве.
Возврат
массив конфигураций свойств, поддерживаемых этим автомобилем. Обратите внимание, что возвращаемые данные являются константными, и вызывающая сторона не может их изменить. Реализация HAL должна сохранять эту память до тех пор, пока HAL не будет выпущен, чтобы избежать ее повторного копирования.

Определение в строке 1663 файла Vehicle.h .

int(* Release)(struct Vehicle_hw_device *device)

Перед вызовом close пользователь должен уничтожить зарегистрированные функции обратного вызова. Если вызов unsubscribe() не вызывается для всех свойств до Release() , то Release() сам отменит подписку на свойства.

Определение в строке 1654 файла Vehicle.h .

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.

Определение в строке 1693 файла Vehicle.h .

int(* set)(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data)

Установите значение свойства транспортного средства. данные должны быть распределены правильно, а не NULL. Вызывающий API ВЛАДЕЕТ полем данных. временная метка данных будет игнорироваться для операции установки. Для установки некоторых свойств требуется наличие начального состояния. В зависимости от номера автомобиля такие исходные данные могут быть недоступны в течение некоторого времени после инициализации. В таком случае set call может вернуть -EAGAIN, как и get call. Для объекта с отдельным управлением питанием установка может выйти из строя, если объект не включен. В таком случае hal должен вернуть ошибку -ESHUTDOWN.

Определение в строке 1706 файла Vehicle.h .

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 означает, что поддерживаются все зоны, а не отсутствие зоны.

Определение в строке 1723 файла Vehicle.h .

int(* отписаться)(struct Vehicle_hw_device *device, int32_t prop)

Отменить подписку на ресурс.

Определение в строке 1727 файла Vehicle.h .


Документация для этой структуры была создана из следующего файла:
  • Аппаратное обеспечение/libhardware/include/hardware/ Vehicle.h