blob: 04ce1eb3f8efb62375201f19c924faa9bb019923 [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);
46
47 private:
48 class Proxy : public org::chromium::WiMaxManager::Device_proxy,
49 public DBus::ObjectProxy {
50 public:
Darin Petkov9893d9c2012-05-17 15:27:31 -070051 Proxy(DBus::Connection *connection, const DBus::Path &path);
Darin Petkov096b3472012-05-15 10:26:22 +020052 virtual ~Proxy();
53
Darin Petkov9893d9c2012-05-17 15:27:31 -070054 void set_networks_changed_callback(const NetworksChangedCallback &callback);
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020055 void set_status_changed_callback(const StatusChangedCallback &callback);
Darin Petkov9893d9c2012-05-17 15:27:31 -070056
Darin Petkov096b3472012-05-15 10:26:22 +020057 private:
58 // Signal callbacks inherited from WiMaxManager::Device_proxy.
Darin Petkov9893d9c2012-05-17 15:27:31 -070059 virtual void NetworksChanged(const std::vector<DBus::Path> &networks);
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020060 virtual void StatusChanged(const int32 &status);
Darin Petkov096b3472012-05-15 10:26:22 +020061
62 // Method callbacks inherited from WiMaxManager::Device_proxy.
63 virtual void EnableCallback(const DBus::Error &error, void *data);
64 virtual void DisableCallback(const DBus::Error &error, void *data);
Darin Petkov9893d9c2012-05-17 15:27:31 -070065 virtual void ScanNetworksCallback(const DBus::Error &error, void *data);
Darin Petkov096b3472012-05-15 10:26:22 +020066 virtual void ConnectCallback(const DBus::Error &error, void *data);
67 virtual void DisconnectCallback(const DBus::Error &error, void *data);
68
69 static void HandleCallback(const DBus::Error &error, void *data);
70
Darin Petkov9893d9c2012-05-17 15:27:31 -070071 NetworksChangedCallback networks_changed_callback_;
Darin Petkov8ea0eaf2012-05-29 11:21:33 +020072 StatusChangedCallback status_changed_callback_;
Darin Petkov9893d9c2012-05-17 15:27:31 -070073
Darin Petkov096b3472012-05-15 10:26:22 +020074 DISALLOW_COPY_AND_ASSIGN(Proxy);
75 };
76
77 void Invoke(const base::Callback<void(void *, int)> &method,
78 Error *error,
79 const ResultCallback &callback,
80 int timeout);
81
82 static void FromDBusError(const DBus::Error &dbus_error, Error *error);
83
84 Proxy proxy_;
85
86 DISALLOW_COPY_AND_ASSIGN(WiMaxDeviceProxy);
87};
88
89} // namespace shill
90
91#endif // SHILL_WIMAX_DEVICE_PROXY_H_