• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 The Weave 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 
5 #ifndef LIBWEAVE_EXAMPLES_UBUNTU_WIFI_MANAGER_H_
6 #define LIBWEAVE_EXAMPLES_UBUNTU_WIFI_MANAGER_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include <base/memory/weak_ptr.h>
12 #include <base/time/time.h>
13 #include <weave/provider/wifi.h>
14 
15 namespace weave {
16 
17 namespace provider {
18 class TaskRunner;
19 }
20 
21 namespace examples {
22 
23 class EventNetworkImpl;
24 
25 // Basic weave::Wifi implementation.
26 // Production version of SSL socket needs secure server certificate check.
27 class WifiImpl : public provider::Wifi {
28  public:
29   WifiImpl(provider::TaskRunner* task_runner, EventNetworkImpl* network);
30   ~WifiImpl();
31 
32   // Wifi implementation.
33   void Connect(const std::string& ssid,
34                const std::string& passphrase,
35                const DoneCallback& callback) override;
36   void StartAccessPoint(const std::string& ssid) override;
37   void StopAccessPoint() override;
IsWifi24Supported()38   bool IsWifi24Supported() const override {return true;};
IsWifi50Supported()39   bool IsWifi50Supported() const override {return false;};
40 
41   static bool HasWifiCapability();
42 
43  private:
44   void TryToConnect(const std::string& ssid,
45                     const std::string& passphrase,
46                     int pid,
47                     base::Time until,
48                     const DoneCallback& callback);
49   bool hostapd_started_{false};
50   provider::TaskRunner* task_runner_{nullptr};
51   EventNetworkImpl* network_{nullptr};
52   base::WeakPtrFactory<WifiImpl> weak_ptr_factory_{this};
53   std::string iface_;
54 };
55 
56 }  // namespace examples
57 }  // namespace weave
58 
59 #endif  // LIBWEAVE_EXAMPLES_UBUNTU_WIFI_MANAGER_H_
60