Updates CHRE settings enum
Adds additional settings included in HAL v1.2. Also moves common
settings related fbs helper functions into a common file.
Bug: 166845383
Test: Load and verify CHRE can receive setting updates.
Change-Id: I0e10317364fb870560c65908e0d3051049855ae8
diff --git a/core/include/chre/core/settings.h b/core/include/chre/core/settings.h
index 6abe72c..b95983f 100644
--- a/core/include/chre/core/settings.h
+++ b/core/include/chre/core/settings.h
@@ -25,6 +25,8 @@
enum class Setting : uint8_t {
LOCATION = 0,
+ WIFI_AVAILABLE,
+ AIRPLANE_MODE,
SETTING_MAX,
};
diff --git a/platform/shared/host_protocol_chre.cc b/platform/shared/host_protocol_chre.cc
index 7aa751e..ed8a275 100644
--- a/platform/shared/host_protocol_chre.cc
+++ b/platform/shared/host_protocol_chre.cc
@@ -234,4 +234,43 @@
request.Union());
}
+bool HostProtocolChre::getSettingFromFbs(fbs::Setting setting,
+ Setting *chreSetting) {
+ bool success = true;
+ switch (setting) {
+ case fbs::Setting::LOCATION:
+ *chreSetting = Setting::LOCATION;
+ break;
+ case fbs::Setting::WIFI_AVAILABLE:
+ *chreSetting = Setting::WIFI_AVAILABLE;
+ break;
+ case fbs::Setting::AIRPLANE_MODE:
+ *chreSetting = Setting::AIRPLANE_MODE;
+ break;
+ default:
+ LOGE("Unknown setting %" PRIu8, setting);
+ success = false;
+ }
+
+ return success;
+}
+
+bool HostProtocolChre::getSettingStateFromFbs(fbs::SettingState state,
+ SettingState *chreSettingState) {
+ bool success = true;
+ switch (state) {
+ case fbs::SettingState::DISABLED:
+ *chreSettingState = SettingState::DISABLED;
+ break;
+ case fbs::SettingState::ENABLED:
+ *chreSettingState = SettingState::ENABLED;
+ break;
+ default:
+ LOGE("Unknown state %" PRIu8, state);
+ success = false;
+ }
+
+ return success;
+}
+
} // namespace chre
diff --git a/platform/shared/include/chre/platform/shared/host_protocol_chre.h b/platform/shared/include/chre/platform/shared/host_protocol_chre.h
index 8ee6f80..8d9816e 100644
--- a/platform/shared/include/chre/platform/shared/host_protocol_chre.h
+++ b/platform/shared/include/chre/platform/shared/host_protocol_chre.h
@@ -19,6 +19,7 @@
#include <stdint.h>
+#include "chre/core/settings.h"
#include "chre/platform/shared/generated/host_messages_generated.h"
#include "chre/platform/shared/host_protocol_common.h"
#include "chre/util/dynamic_vector.h"
@@ -200,6 +201,25 @@
* anymore, so the low-power microphone may be powered off.
*/
static void encodeLowPowerMicAccessRelease(ChreFlatBufferBuilder &builder);
+
+ /**
+ * @param state The fbs::Setting value.
+ * @param chreSettingState If success, stores the corresponding
+ * chre::Setting value.
+ *
+ * @return true if state was a valid fbs::Setting value.
+ */
+ static bool getSettingFromFbs(fbs::Setting setting, Setting *chreSetting);
+
+ /**
+ * @param state The fbs::SettingState value.
+ * @param chreSettingState If success, stores the corresponding
+ * chre::SettingState value.
+ *
+ * @return true if state was a valid fbs::SettingState value.
+ */
+ static bool getSettingStateFromFbs(fbs::SettingState state,
+ SettingState *chreSettingState);
};
} // namespace chre
diff --git a/platform/slpi/host_link.cc b/platform/slpi/host_link.cc
index 990f02d..1deca2d 100644
--- a/platform/slpi/host_link.cc
+++ b/platform/slpi/host_link.cc
@@ -562,38 +562,6 @@
return nanoapp;
}
-bool getSettingFromFbs(fbs::Setting setting, Setting *chreSetting) {
- bool success = true;
- switch (setting) {
- case fbs::Setting::LOCATION:
- *chreSetting = Setting::LOCATION;
- break;
- default:
- LOGE("Unknown setting %" PRIu8, setting);
- success = false;
- }
-
- return success;
-}
-
-bool getSettingStateFromFbs(fbs::SettingState state,
- SettingState *chreSettingState) {
- bool success = true;
- switch (state) {
- case fbs::SettingState::DISABLED:
- *chreSettingState = SettingState::DISABLED;
- break;
- case fbs::SettingState::ENABLED:
- *chreSettingState = SettingState::ENABLED;
- break;
- default:
- LOGE("Unknown state %" PRIu8, state);
- success = false;
- }
-
- return success;
-}
-
/**
* FastRPC method invoked by the host to block on messages
*
@@ -921,8 +889,8 @@
fbs::SettingState state) {
Setting chreSetting;
SettingState chreSettingState;
- if (getSettingFromFbs(setting, &chreSetting) &&
- getSettingStateFromFbs(state, &chreSettingState)) {
+ if (HostProtocolChre::getSettingFromFbs(setting, &chreSetting) &&
+ HostProtocolChre::getSettingStateFromFbs(state, &chreSettingState)) {
postSettingChange(chreSetting, chreSettingState);
}
}