Para migrar uma implementação HIDL VHAL existente para um AIDL VHAL, use a estrutura de implementação de referência AIDL para implementar a interface IVehicleHardware
.
Se a implementação HIDL existente também seguir Implementação de referência HIDL , o fornecedor implementou a classe VehicleHal
. IVehicleHardware
é muito semelhante ao VehicleHal
.
HIDL VHAL | AIDL VHAL |
---|---|
getAllPropertyConfigs() | O mesmo que VehicleHal.listProperties() |
getValues(callback, requests) | Pode chamar VehicleHal.get() para cada solicitação e chamar retornos de chamada. |
dump() | O mesmo que VehicleHal.dump() |
checkHealth() | Pode retornar VehicleHal.get() |
registerPropertyChangeCallback() | Semelhante à configuração VehicleHal.mOnHalEvent |
Diferenças de tipo no AIDL
Ao migrar do HIDL VHAL para o AIDL VHAL, considere estas diferenças.
- HIDL gera um arquivo de cabeçalho (
types.h
) para todos os tipos gerados a partir detypes.hal
. AIDL gera um arquivo de cabeçalho para cada tipo. Por exemplo,VehiclePropValue.h
deVehiclePropValue.aidl
.Como resultado, você deve incluir todos os arquivos de cabeçalho dos tipos necessários. Um arquivo auxiliar,
VehicleHalTypes.h
na bibliotecaVehicleHalUtils
contém a maioria dos tipos comuns. - Todos os tipos definidos em
types.hal
são iguais em AIDL , exceto :-
SubscribeFlags
foi removido porque não é usado porqueonPropertySet
foi removido -
UserFlags
agora está definido emUserInfo.aidl
e deve ser definido como um sinalizador em vez de um enum. Um campo de sinalizador de usuário é um número inteiro que possui vários bitsUserInfo.USER_FLAG_XXX
ou juntos. -
RawValue
emVehiclePropValue
foi renomeado comoRawPropValue
-
bytes
emRawValue
são renomeados comobyteValues
-
Em vez de ... | Usar |
---|---|
hidl_vec | std::vector |
hidl_string | std::string |
android::sp | std::shared_ptr |
android::wp | std::weak_ptr |