diff --git a/automotive/vehicle/aidl/Android.bp b/automotive/vehicle/aidl/Android.bp index 5ca1fc8262..ff0635a7bc 100644 --- a/automotive/vehicle/aidl/Android.bp +++ b/automotive/vehicle/aidl/Android.bp @@ -56,5 +56,5 @@ aidl_interface { }, ], - + host_supported: true, } diff --git a/automotive/vehicle/aidl/generated_lib/cpp/Android.bp b/automotive/vehicle/aidl/generated_lib/cpp/Android.bp index 11d3693b50..d14cbc2dcc 100644 --- a/automotive/vehicle/aidl/generated_lib/cpp/Android.bp +++ b/automotive/vehicle/aidl/generated_lib/cpp/Android.bp @@ -24,4 +24,5 @@ cc_library_headers { local_include_dirs: ["."], export_include_dirs: ["."], defaults: ["VehicleHalInterfaceDefaults"], + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp b/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp index 75a3541cdd..d1974ac95f 100644 --- a/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp +++ b/automotive/vehicle/aidl/impl/default_config/JsonConfigLoader/Android.bp @@ -49,6 +49,7 @@ cc_library { ], cflags: ["-DENABLE_VEHICLE_HAL_TEST_PROPERTIES"], shared_libs: ["libjsoncpp"], + host_supported: true, } cc_library_headers { diff --git a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/Android.bp b/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/Android.bp index ab223d3f94..a250a4774b 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/Android.bp +++ b/automotive/vehicle/aidl/impl/fake_impl/GeneratorHub/Android.bp @@ -32,4 +32,5 @@ cc_library { shared_libs: [ "libjsoncpp", ], + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp b/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp index e75f6485b8..33b403f7fd 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/Android.bp @@ -32,6 +32,7 @@ cc_library { "VehicleHalDefaults", "FakeVehicleHardwareDefaults", ], + host_supported: true, } cc_defaults { diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h b/automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h index d986b419f2..1b6f576b8c 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/include/FakeVehicleHardware.h @@ -200,7 +200,7 @@ class FakeVehicleHardware : public IVehicleHardware { EXCLUDES(mLock); // Load the config files in format '*.json' from the directory and parse the config files // into a map from property ID to ConfigDeclarations. - void loadPropConfigsFromDir(const std::string& dirPath, + bool loadPropConfigsFromDir(const std::string& dirPath, std::unordered_map* configs); // Function to be called when a value change event comes from vehicle bus. In our fake // implementation, this function is only called during "--inject-event" dump command. diff --git a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp b/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp index dced62446c..2b20f3806b 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp +++ b/automotive/vehicle/aidl/impl/fake_impl/hardware/src/FakeVehicleHardware.cpp @@ -329,7 +329,12 @@ bool FakeVehicleHardware::UseOverrideConfigDir() { std::unordered_map FakeVehicleHardware::loadConfigDeclarations() { std::unordered_map configsByPropId; - loadPropConfigsFromDir(mDefaultConfigDir, &configsByPropId); + bool defaultConfigLoaded = loadPropConfigsFromDir(mDefaultConfigDir, &configsByPropId); + if (!defaultConfigLoaded) { + // This cannot work without a valid default config. + ALOGE("Failed to load default config, exiting"); + exit(1); + } if (UseOverrideConfigDir()) { loadPropConfigsFromDir(mOverrideConfigDir, &configsByPropId); } @@ -2258,30 +2263,35 @@ void FakeVehicleHardware::onValuesChangeCallback(std::vector v (*mOnPropertyChangeCallback)(std::move(subscribedUpdatedValues)); } -void FakeVehicleHardware::loadPropConfigsFromDir( +bool FakeVehicleHardware::loadPropConfigsFromDir( const std::string& dirPath, std::unordered_map* configsByPropId) { ALOGI("loading properties from %s", dirPath.c_str()); - if (auto dir = opendir(dirPath.c_str()); dir != NULL) { - std::regex regJson(".*[.]json", std::regex::icase); - while (auto f = readdir(dir)) { - if (!std::regex_match(f->d_name, regJson)) { - continue; - } - std::string filePath = dirPath + "/" + std::string(f->d_name); - ALOGI("loading properties from %s", filePath.c_str()); - auto result = mLoader.loadPropConfig(filePath); - if (!result.ok()) { - ALOGE("failed to load config file: %s, error: %s", filePath.c_str(), - result.error().message().c_str()); - continue; - } - for (auto& [propId, configDeclaration] : result.value()) { - (*configsByPropId)[propId] = std::move(configDeclaration); - } - } - closedir(dir); + auto dir = opendir(dirPath.c_str()); + if (dir == nullptr) { + ALOGE("Failed to open config directory: %s", dirPath.c_str()); + return false; } + + std::regex regJson(".*[.]json", std::regex::icase); + while (auto f = readdir(dir)) { + if (!std::regex_match(f->d_name, regJson)) { + continue; + } + std::string filePath = dirPath + "/" + std::string(f->d_name); + ALOGI("loading properties from %s", filePath.c_str()); + auto result = mLoader.loadPropConfig(filePath); + if (!result.ok()) { + ALOGE("failed to load config file: %s, error: %s", filePath.c_str(), + result.error().message().c_str()); + continue; + } + for (auto& [propId, configDeclaration] : result.value()) { + (*configsByPropId)[propId] = std::move(configDeclaration); + } + } + closedir(dir); + return true; } Result FakeVehicleHardware::safelyParseFloat(int index, const std::string& s) { diff --git a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/Android.bp b/automotive/vehicle/aidl/impl/fake_impl/obd2frame/Android.bp index c1cee84e63..8fc7341fb8 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/obd2frame/Android.bp +++ b/automotive/vehicle/aidl/impl/fake_impl/obd2frame/Android.bp @@ -29,4 +29,5 @@ cc_library { "VehicleHalUtils", ], export_static_lib_headers: ["VehicleHalUtils"], + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/fake_impl/userhal/Android.bp b/automotive/vehicle/aidl/impl/fake_impl/userhal/Android.bp index 2e955315cd..181fd10de5 100644 --- a/automotive/vehicle/aidl/impl/fake_impl/userhal/Android.bp +++ b/automotive/vehicle/aidl/impl/fake_impl/userhal/Android.bp @@ -29,4 +29,5 @@ cc_library { "VehicleHalUtils", ], export_static_lib_headers: ["VehicleHalUtils"], + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/grpc/Android.bp b/automotive/vehicle/aidl/impl/grpc/Android.bp index e5106f8da3..fd1d1ca75a 100644 --- a/automotive/vehicle/aidl/impl/grpc/Android.bp +++ b/automotive/vehicle/aidl/impl/grpc/Android.bp @@ -127,4 +127,5 @@ cc_library_static { cflags: [ "-Wno-unused-parameter", ], + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/Android.bp b/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/Android.bp index 52ef7beefb..d10aa3e67f 100644 --- a/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/Android.bp +++ b/automotive/vehicle/aidl/impl/grpc/utils/proto_message_converter/Android.bp @@ -39,6 +39,7 @@ cc_library { ], defaults: ["VehicleHalDefaults"], export_static_lib_headers: ["VehicleHalUtils"], + host_supported: true, } cc_test { diff --git a/automotive/vehicle/aidl/impl/hardware/Android.bp b/automotive/vehicle/aidl/impl/hardware/Android.bp index edb0f29862..52fd5e43df 100644 --- a/automotive/vehicle/aidl/impl/hardware/Android.bp +++ b/automotive/vehicle/aidl/impl/hardware/Android.bp @@ -30,4 +30,5 @@ cc_library_headers { export_header_lib_headers: [ "VehicleHalUtilHeaders", ], + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/utils/common/Android.bp b/automotive/vehicle/aidl/impl/utils/common/Android.bp index e5d9346da4..5cd07b4417 100644 --- a/automotive/vehicle/aidl/impl/utils/common/Android.bp +++ b/automotive/vehicle/aidl/impl/utils/common/Android.bp @@ -25,10 +25,12 @@ cc_library { local_include_dirs: ["include"], export_include_dirs: ["include"], defaults: ["VehicleHalDefaults"], + host_supported: true, } cc_library_headers { name: "VehicleHalUtilHeaders", export_include_dirs: ["include"], vendor: true, + host_supported: true, } diff --git a/automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp b/automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp index 6a2a695254..3d0a5240bb 100644 --- a/automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp +++ b/automotive/vehicle/aidl/impl/utils/common/src/VehiclePropertyStore.cpp @@ -173,9 +173,7 @@ VhalResult VehiclePropertyStore::writeValue(VehiclePropValuePool::Recyclab } if (onValuesChangeCallback == nullptr && onValueChangeCallback == nullptr) { - ALOGW("No callback registered, ignoring property update for propId: %" PRId32 - ", area ID: %" PRId32, - propId, areaId); + // No callback registered. return {}; } diff --git a/automotive/vehicle/aidl_property/Android.bp b/automotive/vehicle/aidl_property/Android.bp index 5db39d84f7..6a49792cd0 100644 --- a/automotive/vehicle/aidl_property/Android.bp +++ b/automotive/vehicle/aidl_property/Android.bp @@ -56,6 +56,7 @@ aidl_interface { imports: [], }, ], + host_supported: true, } filegroup {