blob: 3530916abe0ed115bba830fb98286ca76835aa3b [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
16// TODO(garnold) Adapted from connection_manager.h.
17enum ShillConnType {
18 kShillConnTypeEthernet = 0,
19 kShillConnTypeWifi,
20 kShillConnTypeWimax,
21 kShillConnTypeBluetooth,
22 kShillConnTypeCellular,
23 kShillConnTypeUnknown
24};
25
26// Provider for networking related information.
27class ShillProvider : public Provider {
28 public:
29 // Returns whether we currently have network connectivity.
30 Variable<bool>* var_is_connected() const {
31 return var_is_connected_.get();
32 }
33
34 // Returns the current network connection type. Unknown if not connected.
35 Variable<ShillConnType>* var_conn_type() const {
36 return var_conn_type_.get();
37 }
38
39 // Returns the time when network connection last changed; initialized to
40 // current time.
41 Variable<base::Time>* var_conn_last_changed() const {
42 return var_conn_last_changed_.get();
43 }
44
45 protected:
46 ShillProvider() {}
47
Alex Deymo540d9422014-02-27 11:17:31 -080048 void set_var_is_connected(Variable<bool>* var_is_connected) {
49 var_is_connected_.reset(var_is_connected);
50 }
51
52 void set_var_conn_type(Variable<ShillConnType>* var_conn_type) {
53 var_conn_type_.reset(var_conn_type);
54 }
55
56 void set_var_conn_last_changed(Variable<base::Time>* var_conn_last_changed) {
57 var_conn_last_changed_.reset(var_conn_last_changed);
58 }
Gilad Arnold55f39b72014-01-28 12:51:45 -080059
60 private:
Alex Deymo540d9422014-02-27 11:17:31 -080061 scoped_ptr<Variable<bool>> var_is_connected_;
62 scoped_ptr<Variable<ShillConnType>> var_conn_type_;
63 scoped_ptr<Variable<base::Time>> var_conn_last_changed_;
64
Gilad Arnold55f39b72014-01-28 12:51:45 -080065 DISALLOW_COPY_AND_ASSIGN(ShillProvider);
66};
67
68} // namespace chromeos_policy_manager
69
Gilad Arnold2cbb3852014-03-07 12:40:50 -080070#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_SHILL_PROVIDER_H_