summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Xu <pengxu@google.com>2017-04-22 14:29:06 -0700
committerPeng Xu <pengxu@google.com>2017-05-03 15:54:02 -0700
commit900cfac9eecf7b7318a9adccd8a18bbf3da3bdd1 (patch)
tree7ee107956788371180058a381f2923bc7fdf35b2
parentcc2a92de7bc37ab4514a17e1d0c1f9b05c26f86e (diff)
downloadlibhardware-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.cpp31
-rw-r--r--modules/sensors/multihal.h5
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);