blob: 9b03b05d0bd3ea987f4eddd397875542327ddbf9 [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;
Alex Vakulenkoe79fa912015-12-04 17:24:15 -080015class ComponentManager;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070016class DeviceRegistrationInfo;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070017
18namespace privet {
Vitaly Buka3d851b42015-12-08 16:17:01 -080019class AuthManager;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070020class Manager;
21} // namespace privet
22
23class DeviceManager final : public Device {
24 public:
Vitaly Bukac5bdd172015-10-01 19:48:51 -070025 DeviceManager(provider::ConfigStore* config_store,
26 provider::TaskRunner* task_runner,
27 provider::HttpClient* http_client,
28 provider::Network* network,
29 provider::DnsServiceDiscovery* dns_sd,
30 provider::HttpServer* http_server,
31 provider::Wifi* wifi,
32 provider::Bluetooth* bluetooth);
Vitaly Buka0fa51e52015-07-10 00:12:25 -070033 ~DeviceManager() override;
34
Vitaly Bukaae6b35d2015-09-29 23:16:54 -070035 // Device implementation.
Vitaly Bukaa8ece8f2015-10-05 13:30:23 -070036 const Settings& GetSettings() const override;
Vitaly Bukaae6b35d2015-09-29 23:16:54 -070037 void AddSettingsChangedCallback(
38 const SettingsChangedCallback& callback) override;
Alex Vakulenkoe79fa912015-12-04 17:24:15 -080039 void AddTraitDefinitionsFromJson(const std::string& json) override;
40 void AddTraitDefinitions(const base::DictionaryValue& dict) override;
41 const base::DictionaryValue& GetTraits() const override;
42 bool AddComponent(const std::string& name,
43 const std::vector<std::string>& traits,
44 ErrorPtr* error) override;
45 void AddComponentTreeChangedCallback(const base::Closure& callback) override;
46 const base::DictionaryValue& GetComponents() const override;
47 bool SetStatePropertiesFromJson(const std::string& component,
48 const std::string& json,
49 ErrorPtr* error) override;
50 bool SetStateProperties(const std::string& component,
51 const base::DictionaryValue& dict,
52 ErrorPtr* error) override;
53 const base::Value* GetStateProperty(const std::string& component,
54 const std::string& name,
55 ErrorPtr* error) const override;
56 bool SetStateProperty(const std::string& component,
57 const std::string& name,
58 const base::Value& value,
59 ErrorPtr* error) override;
60 void AddCommandHandler(const std::string& component,
61 const std::string& command_name,
62 const CommandHandlerCallback& callback) override;
Vitaly Bukaa8ece8f2015-10-05 13:30:23 -070063 bool AddCommand(const base::DictionaryValue& command,
64 std::string* id,
65 ErrorPtr* error) override;
66 Command* FindCommand(const std::string& id) override;
Alex Vakulenkoe79fa912015-12-04 17:24:15 -080067 void AddStateChangedCallback(const base::Closure& callback) override;
68 void Register(const std::string& ticket_id,
69 const DoneCallback& callback) override;
70 GcdState GetGcdState() const override;
71 void AddGcdStateChangedCallback(
72 const GcdStateChangedCallback& callback) override;
73 void AddPairingChangedCallbacks(
74 const PairingBeginCallback& begin_callback,
75 const PairingEndCallback& end_callback) override;
76
77 void AddCommandDefinitionsFromJson(const std::string& json) override;
78 void AddCommandDefinitions(const base::DictionaryValue& dict) override;
Vitaly Buka695a5fb2015-10-06 16:26:08 -070079 void AddCommandHandler(const std::string& command_name,
80 const CommandHandlerCallback& callback) override;
Vitaly Buka3110deb2015-10-06 19:54:09 -070081 void AddStateDefinitionsFromJson(const std::string& json) override;
Vitaly Buka77c2bff2015-10-06 18:31:20 -070082 void AddStateDefinitions(const base::DictionaryValue& dict) override;
Vitaly Buka216e86d2015-10-06 20:23:02 -070083 bool SetStatePropertiesFromJson(const std::string& json,
84 ErrorPtr* error) override;
85 bool SetStateProperties(const base::DictionaryValue& dict,
Vitaly Buka4c981352015-10-01 23:04:24 -070086 ErrorPtr* error) override;
Vitaly Bukac4305602015-11-24 23:33:09 -080087 const base::Value* GetStateProperty(const std::string& name) const override;
Vitaly Buka4c981352015-10-01 23:04:24 -070088 bool SetStateProperty(const std::string& name,
89 const base::Value& value,
90 ErrorPtr* error) override;
Vitaly Bukac4305602015-11-24 23:33:09 -080091 const base::DictionaryValue& GetState() const override;
Vitaly Buka0fa51e52015-07-10 00:12:25 -070092
Vitaly Bukac11a17d2015-08-15 10:36:10 -070093 Config* GetConfig();
94
Vitaly Buka0fa51e52015-07-10 00:12:25 -070095 private:
Vitaly Buka41a90d62015-09-29 16:58:39 -070096 void StartPrivet(provider::TaskRunner* task_runner,
Vitaly Buka1e363672015-09-25 14:01:16 -070097 provider::Network* network,
98 provider::DnsServiceDiscovery* dns_sd,
99 provider::HttpServer* http_server,
100 provider::Wifi* wifi,
101 provider::Bluetooth* bluetooth);
Vitaly Buka0fa51e52015-07-10 00:12:25 -0700102
Vitaly Buka3d851b42015-12-08 16:17:01 -0800103 std::unique_ptr<privet::AuthManager> auth_manager_;
Alex Vakulenkoe79fa912015-12-04 17:24:15 -0800104 std::unique_ptr<ComponentManager> component_manager_;
Vitaly Buka0fa51e52015-07-10 00:12:25 -0700105 std::unique_ptr<DeviceRegistrationInfo> device_info_;
106 std::unique_ptr<BaseApiHandler> base_api_handler_;
Vitaly Buka0fa51e52015-07-10 00:12:25 -0700107 std::unique_ptr<privet::Manager> privet_;
108
109 base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this};
110 DISALLOW_COPY_AND_ASSIGN(DeviceManager);
111};
112
113} // namespace weave
114
115#endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_