diff options
author | Peng Xu <pengxu@google.com> | 2017-04-22 14:29:06 -0700 |
---|---|---|
committer | Peng Xu <pengxu@google.com> | 2017-05-03 15:54:02 -0700 |
commit | 900cfac9eecf7b7318a9adccd8a18bbf3da3bdd1 (patch) | |
tree | 7ee107956788371180058a381f2923bc7fdf35b2 | |
parent | cc2a92de7bc37ab4514a17e1d0c1f9b05c26f86e (diff) | |
download | libhardware-900cfac9eecf7b7318a9adccd8a18bbf3da3bdd1.tar.gz |
Move default multihal configuration file to /vendor/...
Move default multihal configuration file path to
/vendor/etc/sensors/hals.conf. Retained old definition but changed
varible name to mark it deprecated. get_so_paths() is modified
to search both new and old path for configuration file.
MULTI_HAL_CONFIG_FILE_PATH is only used by hidl default
implementation at this moment outside multihal module.
Bug: 35947802
Test: build ok, sensor works on 2017 devices
Change-Id: I443ff71fa194383646108c8eb0c5438d150a5886
-rw-r--r-- | modules/sensors/multihal.cpp | 31 | ||||
-rw-r--r-- | modules/sensors/multihal.h | 5 |
2 files changed, 28 insertions, 8 deletions
diff --git a/modules/sensors/multihal.cpp b/modules/sensors/multihal.cpp index 2810118f..887a4ba5 100644 --- a/modules/sensors/multihal.cpp +++ b/modules/sensors/multihal.cpp @@ -500,15 +500,32 @@ static bool starts_with(const char* s, const char* prefix) { * The vector must not be null. */ static void get_so_paths(std::vector<std::string> *so_paths) { - std::string line; - std::ifstream conf_file(MULTI_HAL_CONFIG_FILE_PATH); - - if(!conf_file) { - ALOGW("No multihal config file found at %s", MULTI_HAL_CONFIG_FILE_PATH); + const std::vector<const char *> config_path_list( + { MULTI_HAL_CONFIG_FILE_PATH, DEPRECATED_MULTI_HAL_CONFIG_FILE_PATH }); + + std::ifstream stream; + const char *path = nullptr; + for (auto i : config_path_list) { + std::ifstream f(i); + if (f) { + stream = std::move(f); + path = i; + break; + } + } + if(!stream) { + ALOGW("No multihal config file found"); return; } - ALOGV("Multihal config file found at %s", MULTI_HAL_CONFIG_FILE_PATH); - while (std::getline(conf_file, line)) { + + ALOGE_IF(strcmp(path, DEPRECATED_MULTI_HAL_CONFIG_FILE_PATH) == 0, + "Multihal configuration file path %s is not compatible with Treble " + "requirements. Please move it to %s.", + path, MULTI_HAL_CONFIG_FILE_PATH); + + ALOGV("Multihal config file found at %s", path); + std::string line; + while (std::getline(stream, line)) { ALOGV("config file line: '%s'", line.c_str()); so_paths->push_back(line); } diff --git a/modules/sensors/multihal.h b/modules/sensors/multihal.h index 210c7cce..234f2f07 100644 --- a/modules/sensors/multihal.h +++ b/modules/sensors/multihal.h @@ -19,7 +19,10 @@ #include <hardware/sensors.h> #include <hardware/hardware.h> -static const char* MULTI_HAL_CONFIG_FILE_PATH = "/system/etc/sensors/hals.conf"; +static const char* MULTI_HAL_CONFIG_FILE_PATH = "/vendor/etc/sensors/hals.conf"; + +// Depracated because system partition HAL config file does not satisfy treble requirements. +static const char* DEPRECATED_MULTI_HAL_CONFIG_FILE_PATH = "/system/etc/sensors/hals.conf"; struct sensors_module_t *get_multi_hal_module_info(void); |