blob: c55910ef556f43c86b1667afee9c527f1c21c6d9 [file] [log] [blame]
mukesh agrawalf2028172012-03-13 14:20:22 -07001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
mukesh agrawalaf571952011-07-14 14:31:12 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SUPPLICANT_INTERFACE_PROXY_H_
6#define SUPPLICANT_INTERFACE_PROXY_H_
7
8#include <map>
9#include <string>
10
11#include <base/basictypes.h>
12
Darin Petkov4a09b6b2011-07-19 12:52:06 -070013#include "shill/dbus_bindings/supplicant-interface.h"
mukesh agrawalaf571952011-07-14 14:31:12 -070014#include "shill/supplicant_interface_proxy_interface.h"
15#include "shill/refptr_types.h"
16
17namespace shill {
18
19// SupplicantInterfaceProxy. provides access to wpa_supplicant's
20// network-interface APIs via D-Bus.
21class SupplicantInterfaceProxy
22 : public SupplicantInterfaceProxyInterface {
23 public:
24 SupplicantInterfaceProxy(const WiFiRefPtr &wifi,
Darin Petkovaceede32011-07-18 15:32:38 -070025 DBus::Connection *bus,
mukesh agrawalaf571952011-07-14 14:31:12 -070026 const ::DBus::Path &object_path,
27 const char *dbus_addr);
28 virtual ~SupplicantInterfaceProxy();
29
30 virtual ::DBus::Path AddNetwork(
31 const std::map<std::string, ::DBus::Variant> &args);
Paul Stewart66c86002012-01-30 18:00:52 -080032 virtual void ClearCachedCredentials();
mukesh agrawal0ed0f2e2011-12-05 20:36:17 +000033 virtual void Disconnect();
mukesh agrawalaf571952011-07-14 14:31:12 -070034 virtual void FlushBSS(const uint32_t &age);
Paul Stewart3c508e12012-08-09 11:40:06 -070035 virtual void Reassociate();
mukesh agrawalaf571952011-07-14 14:31:12 -070036 virtual void RemoveAllNetworks();
mukesh agrawal15908392011-11-16 18:29:25 +000037 virtual void RemoveNetwork(const ::DBus::Path &network);
mukesh agrawalaf571952011-07-14 14:31:12 -070038 virtual void Scan(
39 const std::map<std::string, ::DBus::Variant> &args);
40 virtual void SelectNetwork(const ::DBus::Path &network);
Paul Stewart2987dcf2012-01-30 15:47:42 -080041 virtual void SetFastReauth(bool enabled);
mukesh agrawalf2028172012-03-13 14:20:22 -070042 virtual void SetScanInterval(int seconds);
mukesh agrawalaf571952011-07-14 14:31:12 -070043
44 private:
45 class Proxy : public fi::w1::wpa_supplicant1::Interface_proxy,
46 public ::DBus::ObjectProxy {
47 public:
Darin Petkovaceede32011-07-18 15:32:38 -070048 Proxy(const WiFiRefPtr &wifi,
49 DBus::Connection *bus,
50 const ::DBus::Path &object_path,
51 const char *dbus_addr);
mukesh agrawalaf571952011-07-14 14:31:12 -070052 virtual ~Proxy();
53
54 private:
55 // signal handlers called by dbus-c++, via
56 // fi::w1::wpa_supplicant1::Interface_proxy interface
57 virtual void BlobAdded(const std::string &blobname);
58 virtual void BlobRemoved(const std::string &blobname);
59 virtual void BSSAdded(const ::DBus::Path &BSS,
60 const std::map<std::string, ::DBus::Variant>
61 &properties);
62 virtual void BSSRemoved(const ::DBus::Path &BSS);
Paul Stewartbc6e7392012-05-24 07:07:48 -070063 virtual void Certification(const std::map<std::string, ::DBus::Variant>
64 &properties);
mukesh agrawalaf571952011-07-14 14:31:12 -070065 virtual void NetworkAdded(const ::DBus::Path &network,
66 const std::map<std::string, ::DBus::Variant>
67 &properties);
68 virtual void NetworkRemoved(const ::DBus::Path &network);
69 virtual void NetworkSelected(const ::DBus::Path &network);
70 virtual void PropertiesChanged(const std::map<std::string, ::DBus::Variant>
71 &properties);
72 virtual void ScanDone(const bool &success);
73
74 WiFiRefPtr wifi_;
75 DISALLOW_COPY_AND_ASSIGN(Proxy);
76 };
77
mukesh agrawalaf571952011-07-14 14:31:12 -070078 Proxy proxy_;
79
80 DISALLOW_COPY_AND_ASSIGN(SupplicantInterfaceProxy);
mukesh agrawalaf571952011-07-14 14:31:12 -070081};
82
83} // namespace shill
84
85#endif // SUPPLICANT_INTERFACE_PROXY_H_