blob: b7e47b620a3ff2c8846a4fc66ab51250d088d45a [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 Arnold48415f12014-06-27 07:10:58 -07005#ifndef UPDATE_ENGINE_UPDATE_MANAGER_SHILL_PROVIDER_H_
6#define UPDATE_ENGINE_UPDATE_MANAGER_SHILL_PROVIDER_H_
Gilad Arnold55f39b72014-01-28 12:51:45 -08007
Alex Vakulenko75039d72014-03-25 12:36:28 -07008#include <base/time/time.h>
Gilad Arnold55f39b72014-01-28 12:51:45 -08009
Alex Deymo63784a52014-05-28 10:46:14 -070010#include "update_engine/update_manager/provider.h"
11#include "update_engine/update_manager/variable.h"
Gilad Arnold55f39b72014-01-28 12:51:45 -080012
Alex Deymo63784a52014-05-28 10:46:14 -070013namespace chromeos_update_manager {
Gilad Arnold55f39b72014-01-28 12:51:45 -080014
Gilad Arnoldaf309d52014-03-13 11:21:55 -070015enum class ConnectionType {
16 kEthernet,
17 kWifi,
18 kWimax,
19 kBluetooth,
20 kCellular,
21 kUnknown
Gilad Arnold55f39b72014-01-28 12:51:45 -080022};
23
Gilad Arnoldef120fa2014-04-09 12:52:10 -070024enum class ConnectionTethering {
25 kNotDetected,
26 kSuspected,
27 kConfirmed,
28 kUnknown,
29};
30
Gilad Arnold55f39b72014-01-28 12:51:45 -080031// Provider for networking related information.
32class ShillProvider : public Provider {
33 public:
David Zeuthen21716e22014-04-23 15:42:05 -070034 virtual ~ShillProvider() {}
35
Gilad Arnoldef120fa2014-04-09 12:52:10 -070036 // A variable returning whether we currently have network connectivity.
Gilad Arnolddf3dd242014-04-09 07:15:51 -070037 virtual Variable<bool>* var_is_connected() = 0;
Gilad Arnold55f39b72014-01-28 12:51:45 -080038
Gilad Arnoldef120fa2014-04-09 12:52:10 -070039 // A variable returning the current network connection type. Unknown if not
40 // connected.
Gilad Arnolddf3dd242014-04-09 07:15:51 -070041 virtual Variable<ConnectionType>* var_conn_type() = 0;
Gilad Arnold55f39b72014-01-28 12:51:45 -080042
Gilad Arnoldef120fa2014-04-09 12:52:10 -070043 // A variable returning the tethering mode of a network connection. Unknown if
44 // not connected.
45 virtual Variable<ConnectionTethering>* var_conn_tethering() = 0;
46
Alex Vakulenko072359c2014-07-18 11:41:07 -070047 // A variable returning the time when network connection last changed.
Gilad Arnoldef120fa2014-04-09 12:52:10 -070048 // Initialized to current time.
Gilad Arnolddf3dd242014-04-09 07:15:51 -070049 virtual Variable<base::Time>* var_conn_last_changed() = 0;
Gilad Arnold55f39b72014-01-28 12:51:45 -080050
51 protected:
52 ShillProvider() {}
David Zeuthen21716e22014-04-23 15:42:05 -070053
54 private:
55 DISALLOW_COPY_AND_ASSIGN(ShillProvider);
Gilad Arnold55f39b72014-01-28 12:51:45 -080056};
57
Alex Deymo63784a52014-05-28 10:46:14 -070058} // namespace chromeos_update_manager
Gilad Arnold55f39b72014-01-28 12:51:45 -080059
Gilad Arnold48415f12014-06-27 07:10:58 -070060#endif // UPDATE_ENGINE_UPDATE_MANAGER_SHILL_PROVIDER_H_