libweave: Add 'ble_setup_enabled' config option Add a 'ble_setup_enabled' option to the device config. This will control whether or not we enable wifi credentials bootstrapping over Bluetooth Low Energy. BLE bootstrapping isn't implemented yet, this is just a first step. TEST=buffet_config_unittest BUG=brillo:1266 Change-Id: Idbe1444ec9b74b8393ffd2dd932d7b85ae4ff948 Reviewed-on: https://chromium-review.googlesource.com/289321 Reviewed-by: Vitaly Buka <vitalybuka@chromium.org> Tested-by: Rob Ginda <rginda@chromium.org> Commit-Queue: Rob Ginda <rginda@chromium.org>
diff --git a/libweave/include/weave/config.h b/libweave/include/weave/config.h index 6b87385..a13eee5 100644 --- a/libweave/include/weave/config.h +++ b/libweave/include/weave/config.h
@@ -35,6 +35,7 @@ base::TimeDelta backup_polling_period; bool wifi_auto_setup_enabled{true}; + bool ble_setup_enabled{false}; std::set<PairingType> pairing_modes; base::FilePath embedded_code_path;
diff --git a/libweave/src/buffet_config.cc b/libweave/src/buffet_config.cc index a4a38da..ee15693 100644 --- a/libweave/src/buffet_config.cc +++ b/libweave/src/buffet_config.cc
@@ -85,6 +85,7 @@ const char kDeviceId[] = "device_id"; const char kRobotAccount[] = "robot_account"; const char kWifiAutoSetupEnabled[] = "wifi_auto_setup_enabled"; +const char kBleSetupEnabled[] = "ble_setup_enabled"; const char kEmbeddedCodePath[] = "embedded_code_path"; const char kPairingModes[] = "pairing_modes"; const char kLastConfiguredSsid[] = "last_configured_ssid"; @@ -109,6 +110,7 @@ result.polling_period = base::TimeDelta::FromSeconds(7); result.backup_polling_period = base::TimeDelta::FromMinutes(30); result.wifi_auto_setup_enabled = true; + result.ble_setup_enabled = false; result.pairing_modes.emplace(PairingType::kPinCode); return result; } @@ -180,6 +182,9 @@ store.GetBoolean(config_keys::kWifiAutoSetupEnabled, &settings_.wifi_auto_setup_enabled); + store.GetBoolean(config_keys::kBleSetupEnabled, + &settings_.ble_setup_enabled); + std::string embedded_code_path; if (store.GetString(config_keys::kEmbeddedCodePath, &embedded_code_path)) { settings_.embedded_code_path = base::FilePath(embedded_code_path);
diff --git a/libweave/src/buffet_config.h b/libweave/src/buffet_config.h index 8924365..f2c4891 100644 --- a/libweave/src/buffet_config.h +++ b/libweave/src/buffet_config.h
@@ -112,6 +112,9 @@ bool wifi_auto_setup_enabled() const { return settings_.wifi_auto_setup_enabled; } + bool ble_setup_enabled() const { + return settings_.ble_setup_enabled; + } const std::set<PairingType>& pairing_modes() const { return settings_.pairing_modes; }
diff --git a/libweave/src/buffet_config_unittest.cc b/libweave/src/buffet_config_unittest.cc index 7811814..7c80b06 100644 --- a/libweave/src/buffet_config_unittest.cc +++ b/libweave/src/buffet_config_unittest.cc
@@ -58,6 +58,7 @@ EXPECT_EQ(base::TimeDelta::FromSeconds(7), config_->polling_period()); EXPECT_EQ(base::TimeDelta::FromMinutes(30), config_->backup_polling_period()); EXPECT_TRUE(config_->wifi_auto_setup_enabled()); + EXPECT_FALSE(config_->ble_setup_enabled()); EXPECT_EQ(std::set<PairingType>{PairingType::kPinCode}, config_->pairing_modes()); EXPECT_EQ("", config_->embedded_code_path().value()); @@ -86,6 +87,7 @@ config_store.SetString("polling_period_ms", "12345"); config_store.SetString("backup_polling_period_ms", "6589"); config_store.SetBoolean("wifi_auto_setup_enabled", false); + config_store.SetBoolean("ble_setup_enabled", true); config_store.SetString("pairing_modes", "pinCode,embeddedCode,ultrasound32,audible32"); config_store.SetString("embedded_code_path", "/conf_code"); @@ -120,6 +122,7 @@ EXPECT_EQ(base::TimeDelta::FromMilliseconds(6589), config_->backup_polling_period()); EXPECT_FALSE(config_->wifi_auto_setup_enabled()); + EXPECT_TRUE(config_->ble_setup_enabled()); std::set<PairingType> pairing_types{ PairingType::kPinCode, PairingType::kEmbeddedCode, PairingType::kUltrasound32, PairingType::kAudible32}; @@ -205,6 +208,8 @@ EXPECT_EQ(default_.backup_polling_period(), config_->backup_polling_period()); EXPECT_EQ(default_.wifi_auto_setup_enabled(), config_->wifi_auto_setup_enabled()); + EXPECT_EQ(default_.ble_setup_enabled(), + config_->ble_setup_enabled()); EXPECT_EQ(default_.pairing_modes(), config_->pairing_modes()); EXPECT_EQ(default_.embedded_code_path(), config_->embedded_code_path()); EXPECT_EQ("state_name", config_->name());
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc index 5638726..698283a 100644 --- a/libweave/src/privet/privet_manager.cc +++ b/libweave/src/privet/privet_manager.cc
@@ -83,6 +83,7 @@ VLOG(1) << "Enabling WiFi bootstrapping."; wifi_bootstrap_manager_.reset(new WifiBootstrapManager( device->GetConfig().last_configured_ssid(), options.test_privet_ssid, + device->GetConfig().ble_setup_enabled(), shill_client, ap_manager_client_.get(), cloud_.get())); wifi_bootstrap_manager_->Init(); }
diff --git a/libweave/src/privet/wifi_bootstrap_manager.cc b/libweave/src/privet/wifi_bootstrap_manager.cc index a52b11c..d1bf380 100644 --- a/libweave/src/privet/wifi_bootstrap_manager.cc +++ b/libweave/src/privet/wifi_bootstrap_manager.cc
@@ -26,6 +26,7 @@ WifiBootstrapManager::WifiBootstrapManager( const std::string& last_configured_ssid, const std::string& test_privet_ssid, + bool ble_setup_enabled, ShillClient* shill_client, ApManagerClient* ap_manager_client, CloudDelegate* gcd) @@ -33,7 +34,8 @@ ap_manager_client_{ap_manager_client}, ssid_generator_{gcd, this}, last_configured_ssid_{last_configured_ssid}, - test_privet_ssid_{test_privet_ssid} { + test_privet_ssid_{test_privet_ssid}, + ble_setup_enabled_{ble_setup_enabled} { cloud_observer_.Add(gcd); } @@ -86,9 +88,11 @@ std::string ssid = GenerateSsid(); CHECK(!ssid.empty()); ap_manager_client_->Start(ssid); + LOG_IF(INFO, ble_setup_enabled_) << "BLE Bootstrap start: not implemented."; } void WifiBootstrapManager::EndBootstrapping() { + LOG_IF(INFO, ble_setup_enabled_) << "BLE Bootstrap stop: not implemented."; ap_manager_client_->Stop(); }
diff --git a/libweave/src/privet/wifi_bootstrap_manager.h b/libweave/src/privet/wifi_bootstrap_manager.h index 7ade295..fbe89d0 100644 --- a/libweave/src/privet/wifi_bootstrap_manager.h +++ b/libweave/src/privet/wifi_bootstrap_manager.h
@@ -37,6 +37,7 @@ WifiBootstrapManager(const std::string& last_configured_ssid, const std::string& test_privet_ssid, + bool wifi_setup_enabled, ShillClient* shill_client, ApManagerClient* ap_manager_client, CloudDelegate* gcd); @@ -105,6 +106,7 @@ bool currently_online_{false}; std::string last_configured_ssid_; std::string test_privet_ssid_; + bool ble_setup_enabled_{false}; ScopedObserver<CloudDelegate, CloudDelegate::Observer> cloud_observer_{this};