Referência de estrutura Vehicle_hw_device
#include < vehicle.h >
Campos de dados | |
estrutura hw_device_t | comum |
interno(* | init )(struct veículo_hw_device *dispositivo, veículo_event_callback_fn evento_fn, veículo_error_callback_fn err_fn) |
interno(* | liberar )(estrutura veículo_hw_device *dispositivo) |
veículo_prop_config_t const *(* | list_properties )(struct veículo_hw_device *dispositivo, int *num_properties) |
interno(* | obter )(estrutura veículo_hw_device *dispositivo, veículo_prop_value_t *dados) |
vazio(* | release_memory_from_get )(struct veículo_hw_device *dispositivo, veículo_prop_value_t *dados) |
interno(* | set )(struct veículo_hw_device *dispositivo, const veículo_prop_value_t *dados) |
interno(* | inscrever-se )(struct veículo_hw_device *device, int32_t prop, float sample_rate, zonas int32_t) |
interno(* | cancelar assinatura )(struct veículo_hw_device *device, int32_t prop) |
interno(* | dump )(struct veículo_hw_device *dispositivo, int fd) |
Descrição detalhada
Documentação de campo
estrutura hw_device_t comum |
int(* dump)(struct veículo_hw_device *dispositivo, int fd) |
Imprima o estado de depuração do veículo hal. Este 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 deverá retornar desta chamada em 1ms, deverá retornar desta chamada em 10ms. Esta chamada deve evitar deadlocks, pois pode ser chamada em qualquer ponto da operação. Quaisquer primitivas de sincronização usadas (como bloqueios mutex ou semáforos) devem ser adquiridas com um tempo limite.
int(* get)(struct veículo_hw_device *dispositivo, veículo_prop_value_t *dados) |
Obtenha o valor da propriedade do veículo imediatamente. os dados devem ser alocados adequadamente. O chamador da API é dono do 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 ponteiro, a implementação do HAL deve alocar a memória necessária e o chamador é responsável por chamar release_memory_from_get, o que permite que o 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, ele deve retornar o valor mais recente. Caso ainda não haja dados disponíveis, o que pode acontecer na fase inicial, esta chamada deverá retornar imediatamente com o código de erro -EAGAIN.
int(* init)(struct veículo_hw_device *dispositivo, veículo_event_callback_fn event_fn, veículo_error_callback_fn err_fn) |
veículo_prop_config_t const*(* list_properties)(struct veículo_hw_device *dispositivo, 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 propriedades 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 esta memória até que o HAL seja liberado para evitar copiá-lo novamente.
int(*liberação)(estrutura veículo_hw_device *dispositivo) |
Antes de chamar close o usuário deve destruir as funções de retorno de chamada 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 veículo_hw_device *dispositivo, veículo_prop_value_t *dados) |
Libera memória alocada para dados na chamada get anterior. obter chamada para byte ou string envolve a alocação de memória necessária do veículo hal. Por segurança, 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 veículo hal deve liberar apenas membros de veículo_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. Assim que a memória for liberada, o ponteiro correspondente deve ser definido como NULL bu veículo hal.
int(* conjunto)(struct veículo_hw_device *dispositivo, const veículo_prop_value_t *dados) |
Defina um valor de propriedade do veículo. os dados devem ser alocados corretamente e não NULOS. O chamador da API é dono do campo de dados. o carimbo de data/hora dos dados será ignorado para a operação definida. A configuração de algumas propriedades exige que o estado inicial esteja disponível. Dependendo 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 poderá falhar se a propriedade não estiver ligada. Nesse caso, hal deve retornar o erro -ESHUTDOWN.
int(*subscrever)(struct veículo_hw_device *device, int32_t prop, float sample_rate, zonas int32_t) |
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 veículo hal não precisa enviar o estado inicial para propriedades do tipo on-change.
- Parâmetros
dispositivo suporte taxa de amostragem zonas Todas as zonas inscritas para propriedades zoneadas. pode ser ignorado para propriedades não zoneadas. 0 significa todas as zonas suportadas em vez de nenhuma zona.
int(* cancelar assinatura)(struct veículo_hw_device *device, int32_t prop) |
A documentação desta estrutura foi gerada a partir do seguinte arquivo:
- hardware/libhardware/include/hardware/ veículo.h