blob: 82405b6240d48bfa4115e2a16b97d3c182c70455 [file] [log] [blame]
Gilad Arnold55f39b72014-01-28 12:51:45 -08001// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Gilad Arnold2cbb3852014-03-07 12:40:50 -08005#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_SHILL_PROVIDER_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_SHILL_PROVIDER_H_
Gilad Arnold55f39b72014-01-28 12:51:45 -08007
8#include <base/memory/scoped_ptr.h>
9#include <base/time.h>
10
11#include "update_engine/policy_manager/provider.h"
12#include "update_engine/policy_manager/variable.h"
13
Gilad Arnold55f39b72014-01-28 12:51:45 -080014namespace chromeos_policy_manager {
15
Gilad Arnoldaf309d52014-03-13 11:21:55 -070016enum class ConnectionType {
17 kEthernet,
18 kWifi,
19 kWimax,
20 kBluetooth,
21 kCellular,
22 kUnknown
Gilad Arnold55f39b72014-01-28 12:51:45 -080023};
24
25// Provider for networking related information.
26class ShillProvider : public Provider {
27 public:
28 // Returns whether we currently have network connectivity.
29 Variable<bool>* var_is_connected() const {
30 return var_is_connected_.get();
31 }
32
33 // Returns the current network connection type. Unknown if not connected.
Gilad Arnoldaf309d52014-03-13 11:21:55 -070034 Variable<ConnectionType>* var_conn_type() const {
Gilad Arnold55f39b72014-01-28 12:51:45 -080035 return var_conn_type_.get();
36 }
37
38 // Returns the time when network connection last changed; initialized to
39 // current time.
40 Variable<base::Time>* var_conn_last_changed() const {
41 return var_conn_last_changed_.get();
42 }
43
44 protected:
45 ShillProvider() {}
46
Alex Deymo540d9422014-02-27 11:17:31 -080047 void set_var_is_connected(Variable<bool>* var_is_connected) {
48 var_is_connected_.reset(var_is_connected);
49 }
50
Gilad Arnoldaf309d52014-03-13 11:21:55 -070051 void set_var_conn_type(Variable<ConnectionType>* var_conn_type) {
Alex Deymo540d9422014-02-27 11:17:31 -080052 var_conn_type_.reset(var_conn_type);
53 }
54
55 void set_var_conn_last_changed(Variable<base::Time>* var_conn_last_changed) {
56 var_conn_last_changed_.reset(var_conn_last_changed);
57 }
Gilad Arnold55f39b72014-01-28 12:51:45 -080058
59 private:
Alex Deymo540d9422014-02-27 11:17:31 -080060 scoped_ptr<Variable<bool>> var_is_connected_;
Gilad Arnoldaf309d52014-03-13 11:21:55 -070061 scoped_ptr<Variable<ConnectionType>> var_conn_type_;
Alex Deymo540d9422014-02-27 11:17:31 -080062 scoped_ptr<Variable<base::Time>> var_conn_last_changed_;
63
Gilad Arnold55f39b72014-01-28 12:51:45 -080064 DISALLOW_COPY_AND_ASSIGN(ShillProvider);
65};
66
67} // namespace chromeos_policy_manager
68
Gilad Arnold2cbb3852014-03-07 12:40:50 -080069#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_SHILL_PROVIDER_H_