Configurações da propriedade
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Cada propriedade compatível é especificada por uma configuração 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 em
VehicleProperty.aidl
ou uma propriedade do fornecedor. O ID da propriedade é criado usando a operação bit a bit OR dos seguintes campos (da direita para a esquerda):
- (0x00000000) 16 bits: um ID exclusivo do intervalo 0x0100 - 0xffff.
- (0x00000000) 8 bits: Tipos de propriedade, que define o tipo da propriedade.
- (0x00000000) 4 bits: tipos de área.
- (0x00000000) 4 bits:
VehiclePropertyGroup . Pode ser SYSTEM
(0x10000000) ou VENDOR (0x20000000). Consulte
Propriedades do fornecedor
para propriedades que 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, precisa ser um dos modos de acesso definidos documentados em
VehicleProperty.aidl .
- Para propriedades que têm acesso por área, esse é o subconjunto máximo do acesso por área. Por exemplo, se as propriedades tiverem duas áreas cujo acesso seja
READ e READ_WRITE , isso deverá 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 depois de uma inicialização do sistema. ON_CHANGE significa que a VHAL
precisa informar quando o valor muda. CONTINUOUS significa que o valor da propriedade muda continuamente, e a VHAL precisa gerar relatórios com base na taxa de amostragem da assinatura.
- Para propriedades do sistema, isso 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 estar 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 estar vazio. |
minSampleRate e maxSampleRate |
A taxa de amostragem mínima e máxima compatível para 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 da VHAL. Nem todas as taxas de amostragem entre o mínimo e o máximo precisam ser compatíveis. |
Tipos de propriedade
Definido como enums em VehiclePropertyType.aidl
. Os tipos de propriedades compatíveis estão listados na tabela a seguir.
Tipo de propriedade |
Valor |
Descrição |
---|
STRING |
0x00100000 |
Propriedade de string que 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 |
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 escalares ou vetoriais. O formato exato precisa ser fornecido na matriz de configuração na configuração da propriedade.
Para propriedades do tipo MIXED do fornecedor, 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] , em que o número indica o tamanho de Integer[] na propriedade
configArray[4] , 1 indica que a propriedade tem um valor Long .
configArray[5] , em que o número indica o tamanho de Long[] na propriedade
configArray[6] , 1 indica que a propriedade tem um valor Float .
configArray[7] , em que o número indica o tamanho de Float[] na propriedade
configArray[8] , em que 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 zonais (propriedades com várias áreas compatíveis). 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 no momento da inicialização. Precisa ser 0 para todos os outros tipos. Será ignorado se os dois forem 0.
- Para a propriedade global, se for necessário definir valores mínimo e máximo, use uma configuração de área com o ID 0.
- Esse valor é estático e não muda mesmo que o valor mínimo ou máximo seja alterado
no ambiente de execução. Implemente
IVehicle#getMinMaxSupportedValue para valor mínimo ou máximo dinâmico.
|
minInt64Value e maxInt64Value |
- Valor mínimo e máximo opcional para propriedades do tipo INT64 no momento da inicialização. Precisa ser 0 para todos os outros tipos. Será ignorado se os dois forem 0.
- Para a propriedade global, se for necessário definir valores mínimo e máximo, use uma configuração de área com o ID 0.
- Esse valor é estático e não muda mesmo que o valor mínimo ou máximo seja alterado
no ambiente de execução. Implemente
IVehicle#getMinMaxSupportedValue para 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. Ignorado se os dois forem 0,0.
- Para a propriedade global, se for necessário definir valores mínimo e máximo, use uma configuração de área com o ID 0.
- Esse valor é estático e não muda mesmo que o valor mínimo ou máximo seja alterado
no ambiente de execução. Implemente
IVehicle#getMinMaxSupportedValue para valor mínimo ou máximo dinâmico.
|
(Novidade no Android 14)
supportedEnumValues |
- Lista opcional de valores compatíveis na inicialização se a propriedade for definida como um tipo de propriedade de enumeração. Se não for especificado (vazio) ou antes do Android 14, será considerado que todos os valores de enumeração são compatíveis.
- Para a propriedade global, se for necessário definir valores de enumeração compatíveis, use uma configuração de área com o ID 0.
- Esse valor é estático e não muda mesmo que os valores compatíveis mudem
no ambiente de execução. Implemente
IVehicle#getSupportedValuesLists para valores dinâmicos compatíveis.
- Isso se aplica apenas a propriedades do tipo enum. Para outros tipos, esse campo precisa estar vazio.
Para expor valores compatíveis para outros tipos que não são de enumeração, use
IVehicle#getSupportedValuesLists .
|
(Novidade no Android 15)
supportVariableUpdateRate |
- Se a taxa de atualização variável é compatível. Isso se aplica apenas a propriedades contínuas.
- Se 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 para a VHAL vai ativar a taxa de atualização variável para a propriedade, e a VHAL precisará
enviar eventos de atualização de propriedade somente quando o valor da propriedade mudar.
- Se algum assinante solicitar uma taxa de atualização fixa, a solicitação de assinatura para VHAL
desativará a taxa de atualização variável para a propriedade, e o AAOS vai filtrar os
eventos duplicados para os clientes que solicitarem uma taxa de atualização variável.
- É ALTAMENTE RECOMENDADO oferecer suporte a taxa de atualização variável para todas as propriedades contínuas que não sejam de pulsação para melhorar o 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.
|
(Novidade no Android 16)
hasSupportedValueInfo |
- Se não for
null , vai mostrar se essa propriedade especifica valores mínimos ou máximos compatíveis ou uma lista de valores compatíveis.
- Esse campo controla se as APIs de valores dinâmicos aceitos:
getMinMaxSupportedValue , getSupportedValuesLists ,
subscribeSupportedValueChange , unsubscribeSupportedValueChange
são aceitas para esse ID da propriedade e ID da área.
- Se não for
null , a VHAL precisará implementar essas APIs para o ID da propriedade e o ID da área.
- Se
null ou no Android 15 ou versões anteriores, os valores dinâmicos aceitos para esse ID de propriedade e ID de área não serão compatíveis. O cliente precisa usar as informações de valor estático compatíveis fornecidas na configuração da propriedade do veículo.
|
Tipos de área
Definido como enums 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. |
WINDOW |
0x03000000 |
Área com base em janelas, usa a enumeração VehicleAreaWindow . |
MIRROR |
0x04000000 |
Área com base em espelhos, usa a enumeração VehicleAreaMirror . |
SEAT |
0x05000000 |
Área com base em assentos, usa a enumeração VehicleAreaSeat . |
DOOR |
0x06000000 |
Área com base em portas, usa a enumeração VehicleAreaDoor . |
RODA |
0x07000000 |
Área com base em rodas, usa a enumeração VehicleAreaWheel . |
Cada propriedade zoneada precisa usar um tipo de área predefinido. Cada tipo de área tem um conjunto de flags de bits
definidas em uma enumeração 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
As propriedades divididas em zonas são abordadas por IDs de área. Cada propriedade dividida em zonas pode ser compatível com um ou mais IDs de área. Um ID de área consiste em uma ou mais flags da respectiva enumeração. Por exemplo, uma propriedade que usa VehicleAreaSeat
pode usar os seguintes IDs de área:
Item |
Descrição |
---|
ROW_1_LEFT | ROW_1_RIGHT |
O ID da área se aplica aos dois assentos dianteiros. |
ROW_2_LEFT |
Aplicável apenas ao assento traseiro esquerdo. |
ROW_2_RIGHT |
Aplicável apenas ao assento traseiro direito. |
Para saber mais, consulte AVAC.