blob: a5588721be18b574105ab6f41531381ae39b449f [file] [log] [blame]
Darin Petkov096b3472012-05-15 10:26:22 +02001// Copyright (c) 2012 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
5#ifndef SHILL_WIMAX_DEVICE_PROXY_H_
6#define SHILL_WIMAX_DEVICE_PROXY_H_
7
8#include <base/callback.h>
9
10#include "shill/dbus_bindings/wimax_manager-device.h"
11#include "shill/wimax_device_proxy_interface.h"
12
13namespace shill {
14
15class WiMaxDeviceProxy : public WiMaxDeviceProxyInterface {
16 public:
17 // Constructs a WiMaxManager.Device DBus object proxy at |path|.
18 WiMaxDeviceProxy(DBus::Connection *connection,
19 const DBus::Path &path);
20 virtual ~WiMaxDeviceProxy();
21
22 // Inherited from WiMaxDeviceProxyInterface.
23 virtual void Enable(Error *error,
24 const ResultCallback &callback,
25 int timeout);
26 virtual void Disable(Error *error,
27 const ResultCallback &callback,
28 int timeout);
Darin Petkov9893d9c2012-05-17 15:27:31 -070029 virtual void ScanNetworks(Error *error,
30 const ResultCallback &callback,
31 int timeout);
Darin Petkov25665aa2012-05-21 14:08:12 +020032 virtual void Connect(const RpcIdentifier &network,
33 const KeyValueStore &parameters,
Ben Chan4e5c1312012-05-18 18:45:38 -070034 Error *error,
Darin Petkov096b3472012-05-15 10:26:22 +020035 const ResultCallback &callback,
36 int timeout);
37 virtual void Disconnect(Error *error,
38 const ResultCallback &callback,
39 int timeout);
Darin Petkov9893d9c2012-05-17 15:27:31 -070040 virtual void set_networks_changed_callback(
41 const NetworksChangedCallback &callback);
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020042 virtual void set_status_changed_callback(
43 const StatusChangedCallback &callback);
Darin Petkov096b3472012-05-15 10:26:22 +020044 virtual uint8 Index(Error *error);
45 virtual std::string Name(Error *error);
Darin Petkov59f2d692012-06-07 15:57:46 +020046 virtual RpcIdentifiers Networks(Error *error);
Darin Petkov096b3472012-05-15 10:26:22 +020047
48 private:
49 class Proxy : public org::chromium::WiMaxManager::Device_proxy,
50 public DBus::ObjectProxy {
51 public:
Darin Petkov9893d9c2012-05-17 15:27:31 -070052 Proxy(DBus::Connection *connection, const DBus::Path &path);
Darin Petkov096b3472012-05-15 10:26:22 +020053 virtual ~Proxy();
54
Darin Petkov9893d9c2012-05-17 15:27:31 -070055 void set_networks_changed_callback(const NetworksChangedCallback &callback);
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020056 void set_status_changed_callback(const StatusChangedCallback &callback);
Darin Petkov9893d9c2012-05-17 15:27:31 -070057
Darin Petkov096b3472012-05-15 10:26:22 +020058 private:
59 // Signal callbacks inherited from WiMaxManager::Device_proxy.
Darin Petkov9893d9c2012-05-17 15:27:31 -070060 virtual void NetworksChanged(const std::vector<DBus::Path> &networks);
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020061 virtual void StatusChanged(const int32 &status);
Darin Petkov096b3472012-05-15 10:26:22 +020062
63 // Method callbacks inherited from WiMaxManager::Device_proxy.
64 virtual void EnableCallback(const DBus::Error &error, void *data);
65 virtual void DisableCallback(const DBus::Error &error, void *data);
Darin Petkov9893d9c2012-05-17 15:27:31 -070066 virtual void ScanNetworksCallback(const DBus::Error &error, void *data);
Darin Petkov096b3472012-05-15 10:26:22 +020067 virtual void ConnectCallback(const DBus::Error &error, void *data);
68 virtual void DisconnectCallback(const DBus::Error &error, void *data);
69
70 static void HandleCallback(const DBus::Error &error, void *data);
71
Darin Petkov9893d9c2012-05-17 15:27:31 -070072 NetworksChangedCallback networks_changed_callback_;
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020073 StatusChangedCallback status_changed_callback_;
Darin Petkov9893d9c2012-05-17 15:27:31 -070074
Darin Petkov096b3472012-05-15 10:26:22 +020075 DISALLOW_COPY_AND_ASSIGN(Proxy);
76 };
77
78 void Invoke(const base::Callback<void(void *, int)> &method,
79 Error *error,
80 const ResultCallback &callback,
81 int timeout);
82
83 static void FromDBusError(const DBus::Error &dbus_error, Error *error);
84
85 Proxy proxy_;
86
87 DISALLOW_COPY_AND_ASSIGN(WiMaxDeviceProxy);
88};
89
90} // namespace shill
91
92#endif // SHILL_WIMAX_DEVICE_PROXY_H_