Vehicle_hw_device Referência de estrutura
#include < vehicle.h >
Campos de dados | |
struct hw_device_t | comum |
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) |
vazio(* | 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) |
Descrição detalhada
Documentação de campo
struct hw_device_t comum |
int(* dump)(struct vehicle_hw_device *device, int fd) |
Imprima o estado de depuração para o veículo hal. Isso será chamado pelo serviço de rede do veículo e será incluído no dump do serviço.
O descritor de arquivo passado pode ser usado para escrever texto de depuração usando dprintf() ou write(). O texto deve estar apenas em codificação ASCII.
Requisitos de desempenho:
Esta deve ser uma chamada sem bloqueio. O HAL deve retornar desta chamada em 1ms, deve retornar desta chamada em 10ms. Essa chamada deve evitar deadlocks, pois pode ser chamada em qualquer ponto de operação. Quaisquer primitivas de sincronização usadas (como bloqueios de mutex ou semáforos) devem ser adquiridas com um tempo limite.
int(* get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
Obtenha um valor de propriedade do veículo imediatamente. os dados devem ser alocados adequadamente. O chamador da API possui o campo de dados. O chamador definirá data->prop, data->value_type e, opcionalmente, o valor da zona para a propriedade zoneada. Mas a implementação do HAL precisa preencher todas as entradas corretamente ao retornar. Para o tipo de ponteiro, a implementação de HAL deve alocar a memória necessária e o chamador é responsável por chamar release_memory_from_get, o que permite que HAL libere a memória alocada. Para o tipo de propriedade VEHICLE_PROP_CHANGE_MODE_STATIC, get deve retornar sempre o mesmo valor. Para o tipo de propriedade VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, deve retornar o valor mais recente. Se ainda não houver dados disponíveis, o que pode acontecer durante a fase inicial, esta chamada deve retornar imediatamente com o código de erro -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) |
Enumere todas as propriedades disponíveis. A lista é retornada em "lista".
- Parâmetros
num_properties número de propriedades contidas na matriz reajustada.
- Devoluções
- matriz de configurações de propriedade suportadas por este carro. Observe que os dados retornados são const e o chamador não pode modificá-los. A implementação do HAL deve manter essa memória até que o HAL seja liberado para evitar copiá-lo novamente.
int(* release)(struct vehicle_hw_device *device) |
Antes de chamar close o usuário deve destruir as funções de callback registradas. Caso a chamada unsubscribe() não seja chamada em todas as propriedades antes de release() , então release() cancelará a assinatura das próprias propriedades.
void(* release_memory_from_get)(struct Vehicle_hw_device *device, Vehicle_prop_value_t *data) |
Libera a memória alocada aos dados na chamada get anterior. get call for byte ou string envolve a alocação de memória necessária do veículo hal. Para ser seguro, a memória alocada pelo veículo hal deve ser liberada pelo veículo hal e o serviço de rede do veículo chamará isso quando os dados do veículo hal não forem mais necessários. A implementação do hal do veículo deve liberar apenas o membro de Vehicle_prop_value_t como data->str_value.data ou data->bytes_value.data, mas não os dados em si, pois os próprios dados são alocados do serviço de rede do veículo. Uma vez que a memória é liberada, o ponteiro correspondente deve ser definido como NULL bu vehicle hal.
int(* set)(struct Vehicle_hw_device *device, const Vehicle_prop_value_t *data) |
Defina um valor de propriedade do veículo. os dados devem ser alocados corretamente e não NULL. O chamador da API possui o campo de dados. timestamp dos dados serão ignorados para operação de set. A configuração de algumas propriedades requer a disponibilidade do estado inicial. Dependendo do hal do veículo, esses dados iniciais podem não estar disponíveis por um curto período de tempo após a inicialização. Nesse caso, set call pode retornar -EAGAIN como get call. Para uma propriedade com controle de energia separado, o conjunto pode falhar se a propriedade não estiver ligada. Nesse caso, hal deve retornar o erro -ESHUTDOWN.
int(* subscribe)(struct vehicle_hw_device *device, int32_t prop, float sample_rate, int32_t zones) |
Inscreva-se em eventos. Dependendo da saída de list_properties se a propriedade for: a) on-change: sample_rate deve ser definido como 0. b) suporta frequência: sample_rate deve ser definido de min_sample_rate para max_sample_rate. Para propriedades do tipo on-change, o serviço de rede do veículo fará outra chamada get para verificar o estado inicial. Devido a isso, a implementação do hal do veículo não precisa enviar o estado inicial para as propriedades do tipo on-change.
- Parâmetros
dispositivo suporte taxa de amostragem zonas Todas as zonas inscritas para propriedade zoneada. pode ser ignorado para propriedades não zoneadas. 0 significa todas as zonas suportadas em vez de nenhuma zona.
int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop) |
A documentação para esta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ veículo.h