Cada propriedade compatível é especificada por uma configuração de propriedade definida pela
estrutura
VehiclePropConfig
e tem os seguintes campos.
Campo |
Descrição |
---|
prop |
O ID da propriedade. Ela precisa ser uma das propriedades do sistema definidas do
VehicleProperty.aidl
ou uma propriedade do fornecedor. O ID da propriedade é criado usando a operação OR de bits dos seguintes campos (da direita para a esquerda):
- (0x00000000) 16 bits: um ID exclusivo do intervalo 0x0100 a 0xffff.
- (0x00000000) 8 bits: tipos de propriedade, que define o tipo da propriedade.
- (0x00000000) 4 bits: tipos de área.
- (0x00000000) 4 bits:
VehiclePropertyGroup É SYSTEM
(0x10000000) ou VENDOR (0x20000000). Consulte
Propriedades do fornecedor
para saber quais propriedades podem ser personalizadas.
Por exemplo,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)
|
access |
- O modo de acesso da propriedade. Precisa ser
READ , WRITE ou
READ_WRITE .
- Para propriedades do sistema, esse valor precisa ser um dos modos de acesso definidos documentados em
VehicleProperty.aidl .
- Para propriedades com acesso por área, esse é o subconjunto máximo do acesso por área. Por exemplo, se as propriedades tiverem duas áreas com acesso
READ e READ_WRITE , ele será definido como READ .
|
changeMode |
- Mude o modo da propriedade. Precisa ser
STATIC ,
ON_CHANGE ou CONTINUOUS . STATIC significa que o
valor da propriedade nunca muda após a inicialização do sistema. ON_CHANGE significa que o VHAL
precisa informar quando o valor muda. CONTINUOUS significa que o valor da propriedade
muda continuamente, e o VHAL precisa informar com base na taxa de amostragem de assinatura.
- Para propriedades do sistema, esse valor precisa ser igual ao modo de mudança documentado em
VehicleProperty.aidl .
|
configArray |
Uma matriz opcional para conter a configuração específica da propriedade. Pode ficar vazio. Para determinadas
propriedades do sistema, por exemplo, GEAR_SELECTION , a matriz de configuração tem um significado especial e
precisa ser especificada.
|
configString |
Uma string opcional para conter a configuração específica da propriedade. Pode ficar vazio. |
minSampleRate e maxSampleRate |
A taxa de amostragem mínima e máxima com suporte para a propriedade contínua (em Hertz). Não é usado se a propriedade
não for contínua. minSampleRate e maxSampleRate precisam ser alcançáveis pela implementação
do VHAL. Nem todas as taxas de amostragem entre o mínimo e o máximo precisam ter suporte. |
Tipos de propriedade
Definidos como tipos enumerados em VehiclePropertyType.aidl
. Os tipos de propriedade aceitos estão
listados na tabela a seguir.
Tipo de propriedade |
Valor |
Descrição |
---|
STRING |
0x00100000 |
Propriedade de string, usa o campo stringValue em Valor da propriedade do veículo. |
BOOLEAN |
0x00200000 |
A propriedade Boolean usa o primeiro elemento no campo int32Values em
Valor da propriedade do veículo.
0 significa false , None 0 significa true . |
INT32 |
0x00400000 |
A propriedade Integer usa o primeiro elemento no campo int32Values em
Valor da propriedade do veículo. |
INT32_VEC |
0x00410000 |
A propriedade Integer[] usa os elementos no campo int32Values em
Valor da propriedade do veículo. |
INT64 |
0x00500000 |
Propriedade longa, usa o primeiro elemento no campo int64Values em
Valor da propriedade do veículo. |
INT64_VEC |
0x00510000 |
A propriedade Long[] usa os elementos no campo int64Values em
Valor da propriedade do veículo. |
FLOAT |
0x00600000 |
A propriedade Float usa o primeiro elemento no campo floatValues em
Valor da propriedade do veículo. |
FLOAT_VEC |
0x00610000 |
A propriedade Float[] usa os elementos no campo floatValues em
Valor da propriedade do veículo. |
BYTES |
0x00700000 |
A propriedade byte[] usa os elementos no campo byteValues em
Valor da propriedade do veículo. |
MIXED |
0x00e00000 |
Propriedade de tipo misto. Qualquer combinação de tipos escalar ou vetor. O formato exato precisa ser
fornecido no array de configuração na configuração da propriedade.
Para propriedades do tipo MIXED do fornecedor, o configArray precisa ser formatado nesta estrutura:
configArray[0] , 1 indica que a propriedade tem um valor String
configArray[1] , 1 indica que a propriedade tem um valor Boolean
configArray[2] , 1 indica que a propriedade tem um valor Integer
configArray[3] , o número indica o tamanho de Integer[] na propriedade
configArray[4] , 1 indica que a propriedade tem um valor Long
configArray[5] , o número indica o tamanho de Long[] na propriedade
configArray[6] , 1 indica que a propriedade tem um valor Float
configArray[7] , o número indica o tamanho de Float[] na propriedade
configArray[8] , o número indica o tamanho de byte[] na propriedade.
Por exemplo, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} indica que a
propriedade tem um valor String , um valor Boolean , um valor Integer e uma matriz com
três números inteiros.
|
Configuração do ID da área
Cada configuração de propriedade também pode conter uma lista de configurações de ID de área. Essa lista é opcional para propriedades globais e obrigatória para propriedades com zonas (propriedades com várias áreas com suporte). Cada configuração de ID de área tem os seguintes campos.
Campo |
Descrição |
---|
areaId |
O ID dessa área. Consulte IDs de área. |
minInt32Value e maxInt32Value |
- Valor mínimo e máximo opcional para propriedades do tipo INT32 na inicialização. Precisa ser 0
para todos os outros tipos. Será ignorado se ambos forem 0.
- Para a propriedade global, se o valor mínimo e máximo precisar ser definido, use uma configuração de área
com o ID de área 0.
- Esse valor é estático e não muda, mesmo que o valor mínimo ou máximo mude
durante a execução. Implemente
IVehicle#getMinMaxSupportedValue para o valor mínimo ou máximo
dinâmico.
|
minInt64Value e maxInt64Value |
- Valor mínimo e máximo opcional para propriedades do tipo INT64 na inicialização. Precisa ser 0
para todos os outros tipos. Será ignorado se ambos forem 0.
- Para a propriedade global, se o valor mínimo e máximo precisar ser definido, use uma configuração de área
com o ID de área 0.
- Esse valor é estático e não muda, mesmo que o valor mínimo ou máximo mude
durante a execução. Implemente
IVehicle#getMinMaxSupportedValue para o valor mínimo ou máximo
dinâmico.
|
minFloatValue e maxFloatValue |
- Valor mínimo e máximo opcional para propriedades do tipo "float" no momento da inicialização. Precisa ser 0
para todos os outros tipos. Será ignorado se ambos forem 0,0.
- Para a propriedade global, se o valor mínimo e máximo precisar ser definido, use uma configuração de área
com o ID de área 0.
- Esse valor é estático e não muda, mesmo que o valor mínimo ou máximo mude
durante a execução. Implemente
IVehicle#getMinMaxSupportedValue para o valor mínimo ou máximo
dinâmico.
|
(Novidades do Android 14)
supportedEnumValues |
- Lista opcional de valores aceitos na inicialização, se a propriedade for definida como uma propriedade
enum. Se não for especificado (vazio) ou antes do Android 14, será considerado que todos os valores
de tipo enumerado são aceitos.
- Para a propriedade global, se for necessário definir valores de tipo enumerado com suporte, use uma configuração de área com o ID de área 0.
- Esse valor é estático e não muda, mesmo que os valores compatíveis mudem
durante a execução. Implemente
IVehicle#getSupportedValuesLists para valores dinâmicos
compatíveis.
- Isso se aplica apenas a propriedades do tipo de enumeração. Para outros tipos, esse campo precisa estar vazio.
Para expor valores aceitos para outros tipos que não são enum, use
IVehicle#getSupportedValuesLists .
|
(Novidades do Android 15)
supportVariableUpdateRate |
- Se a taxa de atualização variável é compatível. Isso se aplica apenas a propriedades contínuas.
- Se esse valor for
true , o app poderá ativar a taxa de atualização variável para uma assinatura e
receber eventos de atualização de propriedade somente quando o valor da propriedade mudar,
tratando propriedades contínuas como propriedades de mudança.
- Se todos os assinantes de uma propriedade ativarem a taxa de atualização variável, a solicitação de assinatura
ativa a taxa de atualização variável para a propriedade, e o VHAL vai precisar
enviar eventos de atualização da propriedade somente quando o valor da propriedade mudar.
- Se algum assinante solicitar uma taxa de atualização fixa, a solicitação de assinatura para o VHAL
desativa a taxa de atualização variável para a propriedade, e o AAOS filtra os
eventos duplicados para os clientes que solicitam a taxa de atualização variável.
- É ALTAMENTE RECOMENDADO oferecer suporte à taxa de atualização variável para todas as propriedades contínuas que não sejam de
batimentos cardíacos para um melhor desempenho, a menos que os dados da propriedade sejam grandes (por
exemplo, uma matriz de bytes de 1k de tamanho) e possam ocupar uma grande quantidade de memória para armazenamento em cache.
|
(Novidades do Android 16)
hasSupportedValueInfo |
- Se não for
null , mostra se essa propriedade especifica valores mínimos ou máximos
ou a lista de valores compatíveis.
- Esse campo controla se as APIs de valor com suporte dinâmico:
getMinMaxSupportedValue , getSupportedValuesLists ,
subscribeSupportedValueChange , unsubscribeSupportedValueChange
têm suporte para esse ID de propriedade e ID de área.
- Se não for
null , o VHAL precisa implementar essas APIs para esse
ID de propriedade e de área.
- Se
null ou no Android 15 ou anterior, os valores com suporte dinâmico para esse ID de propriedade e ID de área não são aceitos. O cliente precisa usar as informações de valor com suporte estático fornecidas na configuração da propriedade do veículo.
|
Tipos de área
Definidos como tipos enumerados em VehicleArea.aidl
. Confira abaixo os tipos de área aceitos.
Tipo de área |
Valor |
Descrição |
---|
GLOBAL |
0x01000000 |
Essa propriedade é global e não tem várias áreas. |
JANELA |
0x03000000 |
Área baseada em janelas, usa o tipo enumerado VehicleAreaWindow . |
MIRROR |
0x04000000 |
Área baseada em espelhos, usa o tipo enumerado VehicleAreaMirror . |
SEAT |
0x05000000 |
Área com base nos assentos, usa o tipo enumerado VehicleAreaSeat . |
PORTA |
0x06000000 |
Área com base em portas, usa o tipo enumerado VehicleAreaDoor . |
RODA |
0x07000000 |
Área baseada em rodas, usa a enumeração VehicleAreaWheel . |
Cada propriedade com zona precisa usar um tipo de área predefinido. Cada tipo de área tem um conjunto de flags de bit
definido em um tipo enumerado para o tipo de área. Por exemplo, a área SEAT define
os tipos enumerados 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
As propriedades com zonas são abordadas usando IDs de área. Cada propriedade zonada pode oferecer suporte a um ou mais IDs de área. Um ID de área consiste em uma ou mais flags do respectivo tipo enumerado. Por exemplo, uma propriedade que usa VehicleAreaSeat
pode usar os seguintes IDs de área:
Nome |
Descrição |
---|
ROW_1_LEFT | ROW_1_RIGHT |
O ID de área se aplica aos dois assentos dianteiros. |
ROW_2_LEFT |
Aplicável apenas ao banco traseiro esquerdo. |
ROW_2_RIGHT |
Aplicável apenas ao banco traseiro direito. |
Para saber mais, consulte HVAC.