diff options
Diffstat (limited to 'cmds/bootanimation/iot/BootAction.cpp')
-rw-r--r-- | cmds/bootanimation/iot/BootAction.cpp | 80 |
1 files changed, 7 insertions, 73 deletions
diff --git a/cmds/bootanimation/iot/BootAction.cpp b/cmds/bootanimation/iot/BootAction.cpp index 8fda87e99099..fa797444d569 100644 --- a/cmds/bootanimation/iot/BootAction.cpp +++ b/cmds/bootanimation/iot/BootAction.cpp @@ -18,17 +18,11 @@ #define LOG_TAG "BootAction" -#include <android-base/strings.h> -#include <cpu-features.h> #include <dlfcn.h> + #include <pio/peripheral_manager_client.h> #include <utils/Log.h> -using android::base::Split; -using android::base::Join; -using android::base::StartsWith; -using android::base::EndsWith; - namespace android { BootAction::~BootAction() { @@ -37,7 +31,8 @@ BootAction::~BootAction() { } } -bool BootAction::init(const std::string& libraryPath, const std::string& config) { +bool BootAction::init(const std::string& libraryPath, + const std::vector<ABootActionParameter>& parameters) { APeripheralManagerClient* client = nullptr; ALOGD("Connecting to peripheralmanager"); // Wait for peripheral manager to come up. @@ -51,16 +46,12 @@ bool BootAction::init(const std::string& libraryPath, const std::string& config) ALOGD("Peripheralmanager is up."); APeripheralManagerClient_delete(client); - std::string path_to_lib = libraryPath; - if (!parseConfig(config, &path_to_lib)) { - return false; - } - ALOGI("Loading boot action %s", path_to_lib.c_str()); - mLibHandle = dlopen(path_to_lib.c_str(), RTLD_NOW); + ALOGI("Loading boot action %s", libraryPath.c_str()); + mLibHandle = dlopen(libraryPath.c_str(), RTLD_NOW); if (mLibHandle == nullptr) { ALOGE("Unable to load library at %s :: %s", - path_to_lib.c_str(), dlerror()); + libraryPath.c_str(), dlerror()); return false; } @@ -87,7 +78,7 @@ bool BootAction::init(const std::string& libraryPath, const std::string& config) } ALOGD("Entering boot_action_init"); - bool result = mLibInit(); + bool result = mLibInit(parameters.data(), parameters.size()); ALOGD("Returned from boot_action_init"); return result; } @@ -115,61 +106,4 @@ bool BootAction::loadSymbol(const char* symbol, void** loaded) { return true; } - -bool BootAction::parseConfig(const std::string& config, std::string* path) { - auto lines = Split(config, "\n"); - - if (lines.size() < 1) { - ALOGE("Config format invalid, expected one line, found %d", - lines.size()); - return false; - } - - size_t lineNumber = 0; - auto& line1 = lines.at(lineNumber); - while (StartsWith(line1, "#")) { - if (lines.size() < ++lineNumber) { - ALOGE("Config file contains no non-comment lines."); - return false; - } - line1 = lines.at(lineNumber); - } - - const std::string libraryNameToken("LIBRARY_NAME="); - if (!StartsWith(line1, libraryNameToken.c_str())) { - ALOGE("Invalid config format, expected second line to start with %s " - "Instead found: %s", libraryNameToken.c_str(), line1.c_str()); - return false; - } - - std::string libraryName = line1.substr(libraryNameToken.length()); - - *path += "/"; - *path += architectureDirectory(); - *path += "/"; - *path += libraryName; - - return true; -} - -const char* BootAction::architectureDirectory() { - switch(android_getCpuFamily()) { - case ANDROID_CPU_FAMILY_ARM: - return "arm"; - case ANDROID_CPU_FAMILY_X86: - return "x86"; - case ANDROID_CPU_FAMILY_MIPS: - return "mips"; - case ANDROID_CPU_FAMILY_ARM64: - return "arm64"; - case ANDROID_CPU_FAMILY_X86_64: - return "x86_64"; - case ANDROID_CPU_FAMILY_MIPS64: - return "mips64"; - default: - ALOGE("Unsupported cpu family: %d", android_getCpuFamily()); - return ""; - } -} - } // namespace android |