buffet: Move privet options and state into buffet

Now it's a single binary and don't deserve separate configs and states.

BUG=brillo:1211,brillo:1212
CQ-DEPEND=CL:281024
TEST=`FEATURES=test emerge-gizmo buffet`

Change-Id: I5886d3092b8ccba57be5f2f6edf7ddbc36fd199b
Reviewed-on: https://chromium-review.googlesource.com/281018
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/buffet_config.cc b/buffet/buffet_config.cc
index dc3ae97..c89bb2d 100644
--- a/buffet/buffet_config.cc
+++ b/buffet/buffet_config.cc
@@ -4,9 +4,12 @@
 
 #include "buffet/buffet_config.h"
 
+#include <set>
+
 #include <base/files/file_util.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
+#include <chromeos/strings/string_utils.h>
 
 #include "buffet/storage_impls.h"
 #include "buffet/storage_interface.h"
@@ -72,6 +75,10 @@
 const char kRefreshToken[] = "refresh_token";
 const char kDeviceId[] = "device_id";
 const char kRobotAccount[] = "robot_account";
+const char kWifiAutoSetupEnabled[] = "wifi_auto_setup_enabled";
+const char kEmbeddedCodePath[] = "embedded_code_path";
+const char kPairingModes[] = "pairing_modes";
+const char kLastConfiguredSsid[] = "last_configured_ssid";
 
 }  // namespace config_keys
 
@@ -128,6 +135,28 @@
   if (store.GetString(config_keys::kBackupPollingPeriodMs, &polling_period_str))
     CHECK(base::StringToUint64(polling_period_str, &backup_polling_period_ms_));
 
+  store.GetBoolean(config_keys::kWifiAutoSetupEnabled,
+                   &wifi_auto_setup_enabled_);
+
+  std::string embedded_code_path;
+  if (store.GetString(config_keys::kEmbeddedCodePath, &embedded_code_path)) {
+    embedded_code_path_ = base::FilePath(embedded_code_path);
+    if (!embedded_code_path_.empty())
+      pairing_modes_ = {privetd::PairingType::kEmbeddedCode};
+  }
+
+  std::string modes_str;
+  if (store.GetString(config_keys::kPairingModes, &modes_str)) {
+    std::set<privetd::PairingType> pairing_modes;
+    for (const std::string& mode :
+         chromeos::string_utils::Split(modes_str, ",", true, true)) {
+      privetd::PairingType pairing_mode;
+      CHECK(privetd::StringToPairingType(mode, &pairing_mode));
+      pairing_modes.insert(pairing_mode);
+    }
+    pairing_modes_ = std::move(pairing_modes);
+  }
+
   // Empty name set by user or server is allowed, still we expect some
   // meaningfull config value.
   store.GetString(config_keys::kName, &name_);
@@ -198,6 +227,9 @@
   if (dict->GetString(config_keys::kRobotAccount, &tmp))
     set_robot_account(tmp);
 
+  if (dict->GetString(config_keys::kLastConfiguredSsid, &tmp))
+    set_last_configured_ssid(tmp);
+
   if (dict->GetString(config_keys::kDeviceId, &tmp))
     set_device_id(tmp);
 }
@@ -214,6 +246,7 @@
   dict.SetString(config_keys::kRefreshToken, refresh_token_);
   dict.SetString(config_keys::kDeviceId, device_id_);
   dict.SetString(config_keys::kRobotAccount, robot_account_);
+  dict.SetString(config_keys::kLastConfiguredSsid, last_configured_ssid_);
   dict.SetString(config_keys::kName, name_);
   dict.SetString(config_keys::kDescription, description_);
   dict.SetString(config_keys::kLocation, location_);