libweave: Update "base" state on config change
This fixes initial config load when state defaults does not match
actual device config.
Also allow to have consistent state if related option was change by
buy something else that base.updateBaseConfiguration.
Moved firmwareVersion into BaseApiHandler for consistency.
BaseApiHandler store DeviceRegistrationInfo as plain pointer as former
should not out-live latter.
BUG=brillo:810
TEST='FEATURES=test emerge-gizmo buffet'
Change-Id: Idf43c90116cc5500b09d2d1295a5d082f343db8c
Reviewed-on: https://chromium-review.googlesource.com/290201
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Trybot-Ready: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/src/base_api_handler.h b/libweave/src/base_api_handler.h
index 7aad3c4..c1a5f2e 100644
--- a/libweave/src/base_api_handler.h
+++ b/libweave/src/base_api_handler.h
@@ -16,6 +16,7 @@
class CommandManager;
class DeviceRegistrationInfo;
class StateManager;
+struct Settings;
// Handles commands from 'base' package.
// Objects of the class subscribe for notification from CommandManager and
@@ -25,7 +26,7 @@
// base.updateBaseConfiguration
class BaseApiHandler final {
public:
- BaseApiHandler(const base::WeakPtr<DeviceRegistrationInfo>& device_info,
+ BaseApiHandler(DeviceRegistrationInfo* device_info,
const std::shared_ptr<StateManager>& state_manager,
const std::shared_ptr<CommandManager>& command_manager);
@@ -33,8 +34,12 @@
void OnCommandAdded(Command* command);
void UpdateBaseConfiguration(Command* command);
void UpdateDeviceInfo(Command* command);
+ bool UpdateState(const std::string& anonymous_access_role,
+ bool discovery_enabled,
+ bool pairing_enabled);
+ void OnConfigChanged(const Settings& settings);
- base::WeakPtr<DeviceRegistrationInfo> device_info_;
+ DeviceRegistrationInfo* device_info_;
std::shared_ptr<StateManager> state_manager_;
base::WeakPtrFactory<BaseApiHandler> weak_ptr_factory_{this};