summaryrefslogtreecommitdiff
path: root/cmds/bootanimation/iot/BootAction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/bootanimation/iot/BootAction.cpp')
-rw-r--r--cmds/bootanimation/iot/BootAction.cpp80
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