Referência da estrutura vehicle_hw_device

Referência da estrutura vehicle_hw_device

#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)
 
void(*  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

Definição na linha 1639 do arquivo vehicle.h .

Documentação do campo

struct hw_device_t common

Definição na linha 1640 do arquivo vehicle.h .

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

Imprime o estado de depuração do HAL do veículo. Ele será chamado pelo serviço de rede do veículo e incluído no dump do serviço.

O descritor de arquivo transmitido pode ser usado para gravar texto de depuração usando dprintf() ou write(). O texto precisa estar apenas na codificação ASCII.

Requisitos de desempenho:

Essa precisa ser uma chamada que não bloqueia. O HAL precisa retornar desta chamada em 1ms e em 10ms. Essa chamada precisa evitar deadlocks, já que pode ser chamada em qualquer ponto da operação. Todas as primitivas de sincronização usadas (como bloqueios de mutex ou semáforos) precisam ser adquiridas com um tempo limite.

Definição na linha 1744 do arquivo vehicle.h .

int(* get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

Receba um valor de propriedade do veículo imediatamente. Os dados precisam ser alocados corretamente. O autor da chamada da API É DONO do campo de dados. O autor da chamada vai definir data->prop, data->value_type e, opcionalmente, o valor da zona para a propriedade zonificada. Mas a implementação do HAL precisa preencher todas as entradas corretamente ao retornar. Para o tipo de ponteiro, a implementação da HAL precisa alocar a memória necessária, e o autor da chamada é responsável por chamar release_memory_from_get, que permite que a HAL libere a memória alocada. Para o tipo de propriedade VEHICLE_PROP_CHANGE_MODE_STATIC, o método get precisa retornar sempre o mesmo valor. Para o tipo de propriedade VEHICLE_PROP_CHANGE_MODE_ON_CHANGE, ele precisa retornar o valor mais recente. Se ainda não houver dados disponíveis, o que pode acontecer durante a fase inicial, essa chamada será retornada imediatamente com o código de erro -EAGAIN.

Definição na linha 1681 do arquivo vehicle.h .

Depois de chamar o método "open" no dispositivo, o usuário precisa registrar callbacks para funções de evento e de erro.

Definição na linha 1646 do arquivo vehicle.h .

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 "list".

Parâmetros
num_properties número de propriedades contidas na matriz ajustada.
Retorna
matriz de configurações de propriedade aceitas por este carro. Os dados retornados são constantes, e o autor da chamada não pode modificá-los. A implementação do HAL precisa manter essa memória até que o HAL seja liberado para evitar que ela seja copiada novamente.

Definição na linha 1663 do arquivo vehicle.h .

int(* release)(struct vehicle_hw_device *device)

Antes de chamar close, o usuário precisa 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() vai cancelar a inscrição das propriedades.

Definição na linha 1654 do arquivo vehicle.h .

void(* release_memory_from_get)(struct vehicle_hw_device *device, vehicle_prop_value_t *data)

Libere a memória alocada para dados na chamada de recebimento anterior. A chamada de recebimento para byte ou string envolve a alocação da memória necessária do HAL do veículo. Para garantir a segurança, a memória alocada pelo HAL do veículo precisa ser liberada pelo HAL do veículo, e o serviço de rede do veículo vai chamar isso quando os dados do HAL do veículo não forem mais necessários. A implementação do HAL do veículo só precisa liberar o membro de vehicle_prop_value_t, como data->str_value.data ou data->bytes_value.data, mas não os dados em si, já que eles são alocados pelo serviço de rede do veículo. Depois que a memória for liberada, o ponteiro correspondente precisa ser definido como NULL pelo HAL do veículo.

Definição na linha 1693 do arquivo vehicle.h .

int(* set)(struct vehicle_hw_device *device, const vehicle_prop_value_t *data)

Defina um valor de propriedade do veículo. Os dados precisam ser alocados corretamente e não NULL. O autor da chamada da API POSSUI o campo de dados. O carimbo de data/hora dos dados será ignorado para a operação de definição. A configuração de algumas propriedades exige que o estado inicial esteja disponível. Dependendo do HAL do veículo, esses dados iniciais podem não estar disponíveis por um curto período após a inicialização. Nesse caso, a chamada de configuração pode retornar -EAGAIN como a chamada de recebimento. Para uma propriedade com controle de energia separado, a definição pode falhar se a propriedade não estiver ativada. Nesse caso, o HAL precisa retornar o erro -ESHUTDOWN.

Definição na linha 1706 do arquivo vehicle.h .

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 precisa ser definida como 0. b) suporta frequência: sample_rate precisa ser definida de min_sample_rate para max_sample_rate. Para propriedades do tipo "on-change", o serviço de rede do veículo faz outra chamada de recebimento para verificar o estado inicial. Por isso, a implementação do HAL do veículo não precisa enviar o estado inicial para o tipo de propriedade de mudança.

Parâmetros
dispositivo
prop
sample_rate
zonas Todas as zonas de propriedade com assinatura podem ser ignoradas para propriedades não zoneadas. 0 significa que todas as zonas têm suporte, e não nenhuma.

Definição na linha 1723 do arquivo vehicle.h .

int(* unsubscribe)(struct vehicle_hw_device *device, int32_t prop)

Cancelar a assinatura de uma propriedade.

Definição na linha 1727 do arquivo vehicle.h .


A documentação desse struct foi gerada com base no seguinte arquivo: