1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2014 The Android Open Source Project
3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License");
5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License.
6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at
7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//      http://www.apache.org/licenses/LICENSE-2.0
9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software
11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS,
12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and
14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License.
15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
1655f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
1748415f1f6c6c356bfa9ac85b76d8ebcf053f7157Gilad Arnold#ifndef UPDATE_ENGINE_UPDATE_MANAGER_SHILL_PROVIDER_H_
1848415f1f6c6c356bfa9ac85b76d8ebcf053f7157Gilad Arnold#define UPDATE_ENGINE_UPDATE_MANAGER_SHILL_PROVIDER_H_
1955f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
2075039d7397f03dff77bdf4e26398049ff88edc4cAlex Vakulenko#include <base/time/time.h>
2155f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
2263784a578dd26880454d70797519358a2326291bAlex Deymo#include "update_engine/update_manager/provider.h"
2363784a578dd26880454d70797519358a2326291bAlex Deymo#include "update_engine/update_manager/variable.h"
2455f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
2563784a578dd26880454d70797519358a2326291bAlex Deymonamespace chromeos_update_manager {
2655f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
27af309d513504683bbcfb0bfac71652999845555fGilad Arnoldenum class ConnectionType {
28af309d513504683bbcfb0bfac71652999845555fGilad Arnold  kEthernet,
29af309d513504683bbcfb0bfac71652999845555fGilad Arnold  kWifi,
30af309d513504683bbcfb0bfac71652999845555fGilad Arnold  kWimax,
31af309d513504683bbcfb0bfac71652999845555fGilad Arnold  kBluetooth,
32af309d513504683bbcfb0bfac71652999845555fGilad Arnold  kCellular,
33af309d513504683bbcfb0bfac71652999845555fGilad Arnold  kUnknown
3455f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold};
3555f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
36ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnoldenum class ConnectionTethering {
37ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  kNotDetected,
38ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  kSuspected,
39ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  kConfirmed,
40ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  kUnknown,
41ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold};
42ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold
4355f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold// Provider for networking related information.
4455f39b7043fae6b7c27188d0cd797946098b42efGilad Arnoldclass ShillProvider : public Provider {
4555f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold public:
46610277efc6f7e5239158dfa4bb3b1021804326e0Alex Deymo  ~ShillProvider() override {}
4721716e2da121769b4d473c30360e88ef3061de15David Zeuthen
48ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  // A variable returning whether we currently have network connectivity.
49df3dd2438aef108ac66dc42a4eabae8c79ee88a3Gilad Arnold  virtual Variable<bool>* var_is_connected() = 0;
5055f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
51ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  // A variable returning the current network connection type. Unknown if not
52ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  // connected.
53df3dd2438aef108ac66dc42a4eabae8c79ee88a3Gilad Arnold  virtual Variable<ConnectionType>* var_conn_type() = 0;
5455f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
55ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  // A variable returning the tethering mode of a network connection. Unknown if
56ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  // not connected.
57ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  virtual Variable<ConnectionTethering>* var_conn_tethering() = 0;
58ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold
59072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko  // A variable returning the time when network connection last changed.
60ef120fac0ff6364aaa8c6d05339065f118be25acGilad Arnold  // Initialized to current time.
61df3dd2438aef108ac66dc42a4eabae8c79ee88a3Gilad Arnold  virtual Variable<base::Time>* var_conn_last_changed() = 0;
6255f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
6355f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold protected:
6455f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold  ShillProvider() {}
6521716e2da121769b4d473c30360e88ef3061de15David Zeuthen
6621716e2da121769b4d473c30360e88ef3061de15David Zeuthen private:
6721716e2da121769b4d473c30360e88ef3061de15David Zeuthen  DISALLOW_COPY_AND_ASSIGN(ShillProvider);
6855f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold};
6955f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
7063784a578dd26880454d70797519358a2326291bAlex Deymo}  // namespace chromeos_update_manager
7155f39b7043fae6b7c27188d0cd797946098b42efGilad Arnold
7248415f1f6c6c356bfa9ac85b76d8ebcf053f7157Gilad Arnold#endif  // UPDATE_ENGINE_UPDATE_MANAGER_SHILL_PROVIDER_H_
73