Merge "Update Nfc system config search rule" am: 1c5439a24c am: f2c9253f50 am: e1959b80b9 Change-Id: I0144f485d8d2bbdc3e1f484bef5dc6cdc4845f86
diff --git a/src/adaptation/nfc_config.cc b/src/adaptation/nfc_config.cc index 5891cc4..f406847 100644 --- a/src/adaptation/nfc_config.cc +++ b/src/adaptation/nfc_config.cc
@@ -19,6 +19,7 @@ #include <android-base/file.h> #include <android-base/logging.h> #include <android-base/parseint.h> +#include <android-base/properties.h> #include <android-base/strings.h> #include <config.h> @@ -27,12 +28,9 @@ using namespace ::android::base; namespace { - -std::string findConfigPath() { +std::string searchConfigPath(std::string file_name) { const vector<string> search_path = {"/odm/etc/", "/vendor/etc/", "/product/etc/", "/etc/"}; - const string file_name = "libnfc-nci.conf"; - for (string path : search_path) { path.append(file_name); struct stat file_stat; @@ -41,6 +39,28 @@ } return ""; } +// Configuration File Search sequence +// 1. If prop_config_file_name is defined.(where prop_config_file_name is the +// value of the property persist.nfc_cfg.config_file_name) +// Search a file matches prop_config_file_name. +// 2. If SKU is defined (where SKU is the value of the property +// ro.boot.product.hardware.sku) +// Search a file matches libnfc-nci-SKU.conf +// 3. If none of 1,2 is defined, search a default file name "libnfc-nci.conf". +std::string findConfigPath() { + string f_path = searchConfigPath( + android::base::GetProperty("persist.nfc_cfg.config_file_name", "")); + if (!f_path.empty()) return f_path; + + // Search for libnfc-nci-SKU.conf + f_path = searchConfigPath( + "libnfc-nci-" + + android::base::GetProperty("ro.boot.product.hardware.sku", "") + ".conf"); + if (!f_path.empty()) return f_path; + + // load default file if the desired file not found. + return searchConfigPath("libnfc-nci.conf"); +} } // namespace