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);
   }
 }