O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Propriedades do veículo

A interface Vehicle Hardware Abstraction Layer (VHAL) define as propriedades que os OEMs podem implementar e contém metadados de propriedade (por exemplo, se a propriedade é um int e quais modos de alteração são permitidos). A interface VHAL é baseada no acesso (ler, escrever, assinar) uma propriedade, que é uma abstração para uma função específica.

Interfaces HAL

O VHAL usa as seguintes interfaces:

  • getAllPropConfigs() gera (vec<VehiclePropConfig>propConfigs)
    Liste a configuração de todas as propriedades suportadas pelo VHAL. CarService usa apenas propriedades com suporte.
  • getPropConfigs(vec<int32_t> props) gera (StatusCode status,vec<VehiclePropConfig> propConfigs);
    Retorna a configuração das propriedades selecionadas.
  • set(VehiclePropValue propValue) gera (StatusCodestatus);
    Escreva um valor para a propriedade. O resultado da gravação é definido por propriedade.
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) gera (StatusCode status);
    Comece a monitorar uma mudança de valor de propriedade. Para propriedade zoneada, unsubscribe(IVehicleCallback callback, int32_t propId) gera (StatusCode status);

O VHAL usa as seguintes interfaces de retorno de chamada:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    Notifica a alteração do valor da propriedade do veículo. Deve ser feito apenas para propriedades subscritas.
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    Retorna erro de nível VHAL global ou erro por propriedade. O erro global faz com que o HAL reinicie, o que pode levar à reinicialização de outros componentes (incluindo aplicativos).

Propriedades do veículo

As propriedades podem ser somente leitura, somente gravação (usado para passar informações para o nível VHAL) ou leitura e gravação (o suporte da maioria das propriedades é opcional). Cada propriedade é identificada exclusivamente por uma chave int32 e tem um tipo predefinido ( value_type ):

  • BYTES
  • BOOLEAN
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

Uma propriedade zoneada pode ter mais de um valor, com base no número de zonas suportadas pela propriedade.

Tipos de área

O VHAL define vários tipos de área:

Tipo de Área Descrição
GLOBAL Esta propriedade é um singleton e não possui várias áreas.
WINDOW Área baseada em janelas, usa a enum VehicleAreaWindow .
MIRROR Área baseada em espelhos, usa enum VehicleAreaMirror .
SEAT Área baseada em assentos, usa enum VehicleAreaSeat .
DOOR Área baseada em portas, usa enum VehicleAreaDoor .
WHEEL Área baseada em rodas, usa enum VehicleAreaWheel .

Cada propriedade zoneada deve usar um tipo de área predefinido. Cada tipo de área possui um conjunto de sinalizadores de bits definidos em um enum para o tipo de área. Por exemplo, a área SEAT define enums VehicleAreaSeat :

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

IDs de área

Propriedades zoneadas são tratadas por meio de IDs de área. Cada propriedade zoneada pode suportar um ou mais IDs de área. Um ID de área é composto por um ou mais sinalizadores de seu respectivo enum. Por exemplo, uma propriedade que usa VehicleAreaSeat pode usar os seguintes IDs de área:

Item Descrição
ROW_1_LEFT | ROW_1_RIGHT A identificação de área se aplica a ambos os bancos dianteiros.
ROW_2_LEFT Aplica-se apenas ao banco traseiro esquerdo.
ROW_2_RIGHT Aplica-se apenas ao banco traseiro direito.

Status da propriedade

Cada valor de propriedade vem com um valor VehiclePropertyStatus . Isso indica o status atual da propriedade:

Item Descrição
AVAILABLE Imóvel disponível e valor válido.
UNAVAILABLE O valor da propriedade não está disponível no momento. Usado para recursos desativados temporariamente para uma propriedade com suporte.
ERROR Algo está errado com esta propriedade.

Configurando uma propriedade

Use VehiclePropConfig para fornecer informações de configuração para cada propriedade. As informações incluem:

Variável Descrição
access r , w , rw
changeMode Representa como uma propriedade é monitorada, em mudança versus contínua.
areaConfigs areaId , min e max .
configArray Parâmetros de configuração adicionais.
configString Informações adicionais passadas como uma string.
minSampleRate maxSampleRate
prop ID da propriedade, int

Propriedades da zona de manuseio

Uma propriedade zoneada é equivalente a uma coleção de várias propriedades onde cada subpropriedade pode ser acessada com o valor de ID de área especificado.

  • get call for zoned property sempre inclui o ID da área na solicitação. Portanto, apenas o valor atual para o ID de área solicitado é retornado. Se a propriedade for global, o ID da área é 0.
  • set chamada para propriedade zoneada sempre inclui o ID da área na solicitação. Portanto, apenas o ID de área solicitado é alterado.
  • subscribe chamada de subscribe gera eventos para todos os IDs de área da propriedade.

Receba ligações

Durante a inicialização, o valor da propriedade pode ainda não estar disponível, pois a mensagem de rede do veículo correspondente ainda não foi recebida. Nesses casos, a chamada get deve retornar -EAGAIN . Algumas propriedades (como HVAC) têm propriedades de energia liga / desliga separadas. Chamar get para essa propriedade (quando desligada) deve retornar um status UNAVAILABLE vez de retornar um erro. Por exemplo, obtenha a temperatura HVAC

VHAL obter exemplo de HVAC

Figura 1 . Obter temperatura HVAC (CS = CarService, VHAL = Vehicle HAL)

Definir chamadas

Uma chamada set é uma operação assíncrona que envolve a notificação de eventos depois que uma alteração solicitada é feita. Em uma operação típica, uma chamada set leva a uma solicitação de alteração na rede do veículo. Algumas chamadas set podem exigir que os dados iniciais estejam prontos, mas durante a inicialização, esses dados podem não estar disponíveis ainda. Nesses casos, a chamada set deve retornar -EAGAIN . Algumas propriedades com ligar / desligar separados devem retornar -ESHUTDOWN quando a propriedade é desligada e a configuração não pode ser feita. Até que set seja efetivado, get não retorna necessariamente o mesmo valor que o set. Por exemplo, set HVAC Temperature .

VHAL definir exemplo HVAC

Figura 2 . Definir a temperatura HVAC (CS = CarService, VHAL = Vehicle HAL)

Tratamento de propriedades personalizadas

Para atender às necessidades específicas do parceiro, o VHAL permite propriedades personalizadas que são restritas a aplicativos do sistema. Use as seguintes diretrizes ao trabalhar com propriedades personalizadas:

  • O ID da propriedade deve ser gerado usando os seguintes campos:
    • VehiclePropertyGroup:VENDOR
      O grupo VENDOR é usado apenas para propriedades personalizadas.
    • VehicleArea
      Selecione um tipo de área apropriado.
    • VehiclePropertyType
      Selecione o tipo de dados adequado. BYTES tipo BYTES permite a passagem de dados brutos, o que é suficiente na maioria dos casos. O envio de big data com frequência por meio de propriedades personalizadas pode retardar o acesso de todo o veículo à rede - tome cuidado ao adicionar uma grande carga útil.
    • Property ID
      Escolha um ID de quatro nibble para a propriedade customizada.
  • Para evitar a fragmentação do ecossistema, as propriedades personalizadas não devem ser usadas para replicar as propriedades do veículo que já existem no ( VehiclePropertyIds SDK).
  • Preencha VehiclePropConfig.configString com uma breve descrição da propriedade personalizada. Isso permite que as ferramentas de verificação de integridade sinalizem a replicação acidental das propriedades existentes do veículo. Por exemplo, "estado da luz de perigo".
  • Acesso através de CarPropertyManager (para componentes Java) ou através da API Vehicle Network Service (para nativo). Não modifique outras APIs do carro, pois isso pode levar a futuros problemas de compatibilidade.
  • Depois de implementar as propriedades do fornecedor, selecione apenas a lista de permissões na enum VehicleVendorPermission para propriedades do fornecedor. O mapeamento das permissões do fornecedor para as propriedades do sistema interromperá o CTS e o VTS.

Manipulação de propriedades HVAC

Você pode usar o VHAL para controlar o HVAC configurando as propriedades relacionadas ao HVAC. A maioria das propriedades HVAC são propriedades zoneadas, embora várias sejam propriedades não zoneadas (globais). As propriedades definidas de amostra incluem:

Propriedade Objetivo
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET Defina a temperatura por zona.
VEHICLE_PROPERTY_HVAC_RECIRC_ON Controle de recirculação por zona.

Para ver uma lista completa das propriedades HVAC, pesquise VEHICLE_PROPERTY_HVAC_* em types.hal . Quando a propriedade HVAC usa VehicleAreaSeat , regras adicionais para mapear uma propriedade HVAC zoneada para IDs de área se aplicam. Cada assento disponível no carro deve fazer parte de um ID de área na matriz ID de área.

Exemplo um. Um carro tem dois bancos dianteiros ( ROW_1_LEFT, ROW_1_RIGHT ) e três bancos traseiros ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ). O carro possui dois termorreguladores: o lado do motorista e o lado do passageiro.

  • Um conjunto de mapeamento válido de IDs de área para HVAC_TEMPERATURE SET é:
    • ROW_1_LEFT | ROW_2_LEFT
    • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
  • Um mapeamento alternativo para a mesma configuração de hardware é:
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

Exemplo dois. Um carro tem três filas de assentos com dois assentos na primeira fila ( ROW_1_LEFT, ROW_1_RIGHT ), três assentos na segunda ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ) e três nas terceiras filas ( ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT ). O carro tem três unidades de controle de temperatura: lado do motorista, lado do passageiro e parte traseira. Uma maneira razoável de mapear HVAC_TEMPERATURE_SET para IDs de área é como uma matriz de três elementos:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

Manipulando propriedades do sensor

As propriedades do sensor VHAL representam dados reais do sensor ou informações de política, como status de direção. Algumas informações do sensor (como status de direção e modo diurno / noturno) podem ser acessadas por qualquer aplicativo sem restrição, pois os dados são obrigatórios para construir um aplicativo de veículo seguro. Outras informações do sensor (como a velocidade do veículo) são mais sensíveis e requerem permissões específicas que os usuários podem gerenciar.

Veja as propriedades do sensor com suporte em ( types.hal ).

Serviço de mapas de veículos

O Vehicle Map Service (VMS) fornece um mecanismo para trocar dados de mapa entre clientes por meio de uma interface pub / sub para oferecer suporte a recursos comuns do veículo, como Advanced Driver Assistance Systems (ADAS) . Os clientes podem incluir a interface de sistemas de veículos por meio da propriedade VMS no VHAL ou aplicativos Android privilegiados. Os dados compartilhados no VMS devem ser limitados aos dados do mapa para uso por sistemas de veículos e aplicativos de suporte.

O VMS deve ser usado apenas em implementações do Android Automotive; O AOSP não contém clientes padrão que publicam ou assinam VMS. Para a propriedade VMS no VHAL, os tipos de mensagem e estruturas de dados são descritos em VHAL 2.0 na enum VmsMessageType , que lista os tipos de mensagens VMS com suporte. Este enum é usado como o primeiro inteiro na matriz de inteiros da propriedade do veículo e determina como o restante da mensagem é decodificado.