blob: ccf87788abdcc3824ce57b7e65e0a41e3ef1baca [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Vitaly Buka0fa51e52015-07-10 00:12:25 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef LIBWEAVE_SRC_DEVICE_MANAGER_H_
6#define LIBWEAVE_SRC_DEVICE_MANAGER_H_
7
Vitaly Buka8b4ab962015-07-14 19:19:39 -07008#include <base/memory/weak_ptr.h>
Vitaly Buka7b382ac2015-08-03 13:50:01 -07009#include <weave/device.h>
Vitaly Buka0fa51e52015-07-10 00:12:25 -070010
Vitaly Buka0fa51e52015-07-10 00:12:25 -070011namespace weave {
12
13class BaseApiHandler;
Vitaly Bukac11a17d2015-08-15 10:36:10 -070014class Config;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070015class CommandManager;
16class DeviceRegistrationInfo;
17class StateChangeQueue;
18class StateManager;
19
20namespace privet {
Vitaly Buka0fa51e52015-07-10 00:12:25 -070021class Manager;
22} // namespace privet
23
24class DeviceManager final : public Device {
25 public:
Vitaly Bukac5bdd172015-10-01 19:48:51 -070026 DeviceManager(provider::ConfigStore* config_store,
27 provider::TaskRunner* task_runner,
28 provider::HttpClient* http_client,
29 provider::Network* network,
30 provider::DnsServiceDiscovery* dns_sd,
31 provider::HttpServer* http_server,
32 provider::Wifi* wifi,
33 provider::Bluetooth* bluetooth);
Vitaly Buka0fa51e52015-07-10 00:12:25 -070034 ~DeviceManager() override;
35
Vitaly Bukaae6b35d2015-09-29 23:16:54 -070036 // Device implementation.
Vitaly Bukaa8ece8f2015-10-05 13:30:23 -070037 const Settings& GetSettings() const override;
Vitaly Bukaae6b35d2015-09-29 23:16:54 -070038 void AddSettingsChangedCallback(
39 const SettingsChangedCallback& callback) override;
Vitaly Buka3110deb2015-10-06 19:54:09 -070040 void AddCommandDefinitionsFromJson(const std::string& json) override;
Vitaly Buka77c2bff2015-10-06 18:31:20 -070041 void AddCommandDefinitions(const base::DictionaryValue& dict) override;
Vitaly Bukaa8ece8f2015-10-05 13:30:23 -070042 bool AddCommand(const base::DictionaryValue& command,
43 std::string* id,
44 ErrorPtr* error) override;
45 Command* FindCommand(const std::string& id) override;
Vitaly Buka695a5fb2015-10-06 16:26:08 -070046 void AddCommandHandler(const std::string& command_name,
47 const CommandHandlerCallback& callback) override;
Vitaly Buka4c981352015-10-01 23:04:24 -070048 void AddStateChangedCallback(const base::Closure& callback) override;
Vitaly Buka3110deb2015-10-06 19:54:09 -070049 void AddStateDefinitionsFromJson(const std::string& json) override;
Vitaly Buka77c2bff2015-10-06 18:31:20 -070050 void AddStateDefinitions(const base::DictionaryValue& dict) override;
Vitaly Buka216e86d2015-10-06 20:23:02 -070051 bool SetStatePropertiesFromJson(const std::string& json,
52 ErrorPtr* error) override;
53 bool SetStateProperties(const base::DictionaryValue& dict,
Vitaly Buka4c981352015-10-01 23:04:24 -070054 ErrorPtr* error) override;
55 std::unique_ptr<base::Value> GetStateProperty(
56 const std::string& name) const override;
57 bool SetStateProperty(const std::string& name,
58 const base::Value& value,
59 ErrorPtr* error) override;
60 std::unique_ptr<base::DictionaryValue> GetState() const override;
Vitaly Buka12870bd2015-10-08 23:49:39 -070061 void Register(const std::string& ticket_id,
Vitaly Buka74763422015-10-11 00:39:52 -070062 const DoneCallback& callback) override;
Vitaly Bukac3c6dab2015-10-01 19:41:02 -070063 GcdState GetGcdState() const override;
64 void AddGcdStateChangedCallback(
65 const GcdStateChangedCallback& callback) override;
Vitaly Bukae6073612015-10-01 17:58:52 -070066 void AddPairingChangedCallbacks(
67 const PairingBeginCallback& begin_callback,
68 const PairingEndCallback& end_callback) override;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070069
Vitaly Bukac11a17d2015-08-15 10:36:10 -070070 Config* GetConfig();
71
Vitaly Buka0fa51e52015-07-10 00:12:25 -070072 private:
Vitaly Buka41a90d62015-09-29 16:58:39 -070073 void StartPrivet(provider::TaskRunner* task_runner,
Vitaly Buka1e363672015-09-25 14:01:16 -070074 provider::Network* network,
75 provider::DnsServiceDiscovery* dns_sd,
76 provider::HttpServer* http_server,
77 provider::Wifi* wifi,
78 provider::Bluetooth* bluetooth);
Vitaly Buka0fa51e52015-07-10 00:12:25 -070079
Vitaly Buka0fa51e52015-07-10 00:12:25 -070080 std::shared_ptr<CommandManager> command_manager_;
81 std::unique_ptr<StateChangeQueue> state_change_queue_;
82 std::shared_ptr<StateManager> state_manager_;
83 std::unique_ptr<DeviceRegistrationInfo> device_info_;
84 std::unique_ptr<BaseApiHandler> base_api_handler_;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070085 std::unique_ptr<privet::Manager> privet_;
86
87 base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this};
88 DISALLOW_COPY_AND_ASSIGN(DeviceManager);
89};
90
91} // namespace weave
92
93#endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_