libweave: Cleanup enum to string conversion

Conversion should be done using weave::EnumToString
and weave::StringToEnum.
enum_to_string header moved public interface.

BUG=brillo:1242
TEST='FEATURES=test emerge-gizmo buffet'

Change-Id: I96af61ef0b263d4ec149b14a7c9055bd51bf2e4c
Reviewed-on: https://chromium-review.googlesource.com/285775
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Trybot-Ready: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index 1716756..33e22e8 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -62,6 +62,7 @@
         '../libweave/src/privet/peerd_client.cc',
         '../libweave/src/privet/privet_handler.cc',
         '../libweave/src/privet/privet_manager.cc',
+        '../libweave/src/privet/privet_types.cc',
         '../libweave/src/privet/security_manager.cc',
         '../libweave/src/privet/shill_client.cc',
         '../libweave/src/privet/wifi_bootstrap_manager.cc',
diff --git a/buffet/manager.cc b/buffet/manager.cc
index a8f6112..9fa54cd 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -23,6 +23,8 @@
 #include <dbus/object_path.h>
 #include <dbus/values_util.h>
 
+#include "weave/enum_to_string.h"
+
 using chromeos::dbus_utils::AsyncEventSequencer;
 using chromeos::dbus_utils::ExportedObjectManager;
 
@@ -37,21 +39,6 @@
 const char kErrorDomain[] = "buffet";
 const char kNotImplemented[] = "notImplemented";
 
-std::string StatusToString(weave::RegistrationStatus status) {
-  switch (status) {
-    case weave::RegistrationStatus::kUnconfigured:
-      return "unconfigured";
-    case weave::RegistrationStatus::kConnecting:
-      return "connecting";
-    case weave::RegistrationStatus::kConnected:
-      return "connected";
-    case weave::RegistrationStatus::kInvalidCredentials:
-      return "invalid_credentials";
-  }
-  CHECK(0) << "Unknown status";
-  return "unknown";
-}
-
 }  // anonymous namespace
 
 Manager::Manager(const base::WeakPtr<ExportedObjectManager>& object_manager)
@@ -185,8 +172,12 @@
 
   chromeos::ErrorPtr error;
   weave::UserRole role;
-  if (!FromString(in_user_role, &role, &error))
+  if (!StringToEnum(in_user_role, &role)) {
+    chromeos::Error::AddToPrintf(&error, FROM_HERE, kErrorDomain,
+                                 "invalid_user_role", "Invalid role: '%s'",
+                                 in_user_role.c_str());
     return response->ReplyWithError(error.get());
+  }
 
   std::string id;
   if (!device_->GetCommands()->AddCommand(*command, role, &id, &error))
@@ -305,7 +296,7 @@
 }
 
 void Manager::OnRegistrationChanged(weave::RegistrationStatus status) {
-  dbus_adaptor_.SetStatus(StatusToString(status));
+  dbus_adaptor_.SetStatus(weave::EnumToString(status));
 }
 
 void Manager::OnConfigChanged(const weave::BuffetConfig& config) {
@@ -319,22 +310,8 @@
   dbus_adaptor_.SetAnonymousAccessRole(config.local_anonymous_access_role());
 }
 
-void Manager::UpdateWiFiBootstrapState(
-    weave::privet::WifiBootstrapManager::State state) {
-  switch (state) {
-    case weave::WifiSetupState::kDisabled:
-      dbus_adaptor_.SetWiFiBootstrapState("disabled");
-      break;
-    case weave::WifiSetupState::kBootstrapping:
-      dbus_adaptor_.SetWiFiBootstrapState("waiting");
-      break;
-    case weave::WifiSetupState::kMonitoring:
-      dbus_adaptor_.SetWiFiBootstrapState("monitoring");
-      break;
-    case weave::WifiSetupState::kConnecting:
-      dbus_adaptor_.SetWiFiBootstrapState("connecting");
-      break;
-  }
+void Manager::UpdateWiFiBootstrapState(weave::WifiSetupState state) {
+  dbus_adaptor_.SetWiFiBootstrapState(weave::EnumToString(state));
 }
 
 void Manager::OnPairingStart(const std::string& session_id,
@@ -344,7 +321,7 @@
   // the most recent pairing attempt.
   dbus_adaptor_.SetPairingInfo(chromeos::VariantDictionary{
       {kPairingSessionIdKey, session_id},
-      {kPairingModeKey, weave::privet::PairingTypeToString(pairing_type)},
+      {kPairingModeKey, weave::EnumToString(pairing_type)},
       {kPairingCodeKey, code},
   });
 }