blob: b1996e182143f447b9c21ec67092d93753a04dc2 [file] [log] [blame]
mukesh agrawal6bb9e7c2012-01-30 14:57:54 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Chris Masoned7732e42011-05-20 11:08:56 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "shill/manager_dbus_adaptor.h"
6
7#include <map>
8#include <string>
Chris Masone8fe2c7e2011-06-09 15:51:19 -07009#include <vector>
Chris Masoned7732e42011-05-20 11:08:56 -070010
Chris Masone7ccc8192011-05-24 14:54:49 -070011#include <base/logging.h>
Chris Masone8fe2c7e2011-06-09 15:51:19 -070012#include <dbus-c++/dbus.h>
13
mukesh agrawal32399322011-09-01 10:53:43 -070014#include "shill/device.h"
Chris Masone8fe2c7e2011-06-09 15:51:19 -070015#include "shill/error.h"
mukesh agrawal7a4e4002011-09-06 11:26:05 -070016#include "shill/key_value_store.h"
Chris Masone8fe2c7e2011-06-09 15:51:19 -070017#include "shill/manager.h"
mukesh agrawal7a4e4002011-09-06 11:26:05 -070018#include "shill/wifi_service.h"
Chris Masone7ccc8192011-05-24 14:54:49 -070019
Chris Masoned7732e42011-05-20 11:08:56 -070020using std::map;
21using std::string;
Chris Masone8fe2c7e2011-06-09 15:51:19 -070022using std::vector;
Chris Masoned7732e42011-05-20 11:08:56 -070023
24namespace shill {
25
Chris Masoned7732e42011-05-20 11:08:56 -070026// static
27const char ManagerDBusAdaptor::kInterfaceName[] = SHILL_INTERFACE;
Chris Masoned7732e42011-05-20 11:08:56 -070028// static
Chris Masone19e30402011-07-19 15:48:47 -070029const char ManagerDBusAdaptor::kPath[] = "/";
Chris Masoned7732e42011-05-20 11:08:56 -070030
Chris Masoned0ceb8c2011-06-02 10:05:39 -070031ManagerDBusAdaptor::ManagerDBusAdaptor(DBus::Connection* conn, Manager *manager)
Chris Masoned7732e42011-05-20 11:08:56 -070032 : DBusAdaptor(conn, kPath),
33 manager_(manager) {
34}
Chris Masoneec6b18b2011-06-08 14:09:10 -070035
36ManagerDBusAdaptor::~ManagerDBusAdaptor() {
37 manager_ = NULL;
38}
Chris Masoned7732e42011-05-20 11:08:56 -070039
40void ManagerDBusAdaptor::UpdateRunning() {}
41
Chris Masone8fe2c7e2011-06-09 15:51:19 -070042void ManagerDBusAdaptor::EmitBoolChanged(const string &name, bool value) {
Chris Masoned0ceb8c2011-06-02 10:05:39 -070043 PropertyChanged(name, DBusAdaptor::BoolToVariant(value));
44}
45
Chris Masone8fe2c7e2011-06-09 15:51:19 -070046void ManagerDBusAdaptor::EmitUintChanged(const string &name,
Chris Masoned0ceb8c2011-06-02 10:05:39 -070047 uint32 value) {
Chris Masone8fe2c7e2011-06-09 15:51:19 -070048 PropertyChanged(name, DBusAdaptor::Uint32ToVariant(value));
Chris Masoned0ceb8c2011-06-02 10:05:39 -070049}
50
Chris Masone8fe2c7e2011-06-09 15:51:19 -070051void ManagerDBusAdaptor::EmitIntChanged(const string &name, int value) {
52 PropertyChanged(name, DBusAdaptor::Int32ToVariant(value));
Chris Masoned0ceb8c2011-06-02 10:05:39 -070053}
54
Chris Masone8fe2c7e2011-06-09 15:51:19 -070055void ManagerDBusAdaptor::EmitStringChanged(const string &name,
56 const string &value) {
Chris Masoned0ceb8c2011-06-02 10:05:39 -070057 PropertyChanged(name, DBusAdaptor::StringToVariant(value));
58}
59
Gaurav Shah435de2c2011-11-17 19:01:07 -080060void ManagerDBusAdaptor::EmitStringsChanged(const string &name,
61 const vector<string> &value) {
62 PropertyChanged(name, DBusAdaptor::StringsToVariant(value));
63}
64
mukesh agrawal32399322011-09-01 10:53:43 -070065void ManagerDBusAdaptor::EmitRpcIdentifierArrayChanged(
66 const string &name,
67 const vector<string> &value) {
68 vector< ::DBus::Path> paths;
69 vector<string>::const_iterator it;
70 for (it = value.begin(); it != value.end(); ++it) {
71 paths.push_back(*it);
72 }
73
74 PropertyChanged(name, DBusAdaptor::PathArrayToVariant(paths));
75}
76
Chris Masone8fe2c7e2011-06-09 15:51:19 -070077void ManagerDBusAdaptor::EmitStateChanged(const string &new_state) {
Chris Masoned0ceb8c2011-06-02 10:05:39 -070078 StateChanged(new_state);
79}
80
Chris Masoned7732e42011-05-20 11:08:56 -070081map<string, ::DBus::Variant> ManagerDBusAdaptor::GetProperties(
82 ::DBus::Error &error) {
Chris Masonea8a2c252011-06-27 22:16:30 -070083 map<string, ::DBus::Variant> properties;
Chris Masone27c4aa52011-07-02 13:10:14 -070084 DBusAdaptor::GetProperties(manager_->store(), &properties, &error);
Chris Masonea8a2c252011-06-27 22:16:30 -070085 return properties;
Chris Masoned7732e42011-05-20 11:08:56 -070086}
87
Chris Masone8fe2c7e2011-06-09 15:51:19 -070088void ManagerDBusAdaptor::SetProperty(const string &name,
89 const ::DBus::Variant &value,
Chris Masoned7732e42011-05-20 11:08:56 -070090 ::DBus::Error &error) {
mukesh agrawal6bb9e7c2012-01-30 14:57:54 -080091 if (DBusAdaptor::SetProperty(manager_->mutable_store(),
92 name,
93 value,
94 &error)) {
Chris Masone3bd3c8c2011-06-13 08:20:26 -070095 PropertyChanged(name, value);
96 }
Chris Masoned7732e42011-05-20 11:08:56 -070097}
98
mukesh agrawal1830fa12011-09-26 14:31:40 -070099string ManagerDBusAdaptor::GetState(::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700100 return string();
101}
102
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700103::DBus::Path ManagerDBusAdaptor::CreateProfile(const string &name,
Paul Stewart19c871d2011-12-15 16:10:13 -0800104 ::DBus::Error &error) {
105 Error e;
106 string path;
107 manager_->CreateProfile(name, &path, &e);
108 e.ToDBusError(&error);
109 return ::DBus::Path(path);
Chris Masoned7732e42011-05-20 11:08:56 -0700110}
111
mukesh agrawal1830fa12011-09-26 14:31:40 -0700112void ManagerDBusAdaptor::RemoveProfile(const string &/*name*/,
113 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700114}
115
mukesh agrawale5929bf2011-08-29 13:47:23 -0700116::DBus::Path ManagerDBusAdaptor::PushProfile(const std::string &name,
Paul Stewart19c871d2011-12-15 16:10:13 -0800117 ::DBus::Error &error) {
118 Error e;
119 string path;
120 manager_->PushProfile(name, &path, &e);
121 e.ToDBusError(&error);
122 return ::DBus::Path(path);
Chris Masoneccc88812011-06-08 18:00:10 -0700123}
124
Paul Stewart19c871d2011-12-15 16:10:13 -0800125void ManagerDBusAdaptor::PopProfile(const std::string &name,
126 ::DBus::Error &error) {
127 Error e;
128 manager_->PopProfile(name, &e);
129 e.ToDBusError(&error);
Chris Masoneccc88812011-06-08 18:00:10 -0700130}
131
Paul Stewart19c871d2011-12-15 16:10:13 -0800132void ManagerDBusAdaptor::PopAnyProfile(::DBus::Error &error) {
133 Error e;
134 manager_->PopAnyProfile(&e);
135 e.ToDBusError(&error);
Chris Masoneccc88812011-06-08 18:00:10 -0700136}
137
mukesh agrawal32399322011-09-01 10:53:43 -0700138void ManagerDBusAdaptor::RequestScan(const string &technology,
Chris Masoned7732e42011-05-20 11:08:56 -0700139 ::DBus::Error &error) {
mukesh agrawal32399322011-09-01 10:53:43 -0700140 Error e;
141 manager_->RequestScan(technology, &e);
142 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700143}
144
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700145void ManagerDBusAdaptor::EnableTechnology(const string &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700146 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700147}
148
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700149void ManagerDBusAdaptor::DisableTechnology(const string &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700150 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700151}
152
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700153// deprecated synonym for GetWifiService
Chris Masoned7732e42011-05-20 11:08:56 -0700154::DBus::Path ManagerDBusAdaptor::GetService(
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700155 const map<string, ::DBus::Variant> &args,
Chris Masoned7732e42011-05-20 11:08:56 -0700156 ::DBus::Error &error) {
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700157 return GetWifiService(args, error);
Chris Masoned7732e42011-05-20 11:08:56 -0700158}
159
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700160// called, e.g., to get Service handle for a hidden SSID
Chris Masoned7732e42011-05-20 11:08:56 -0700161::DBus::Path ManagerDBusAdaptor::GetWifiService(
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700162 const map<string, ::DBus::Variant> &args,
Chris Masoned7732e42011-05-20 11:08:56 -0700163 ::DBus::Error &error) {
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700164 KeyValueStore args_store;
165 Error e;
166 WiFiServiceRefPtr service;
167 string ret;
168
169 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &e);
170 if (e.IsSuccess()) {
171 service = manager_->GetWifiService(args_store, &e);
172 }
173
174 if (e.ToDBusError(&error)) {
175 return "/"; // ensure return is syntactically valid
176 } else {
177 return service->GetRpcIdentifier();
178 }
Chris Masoned7732e42011-05-20 11:08:56 -0700179}
180
181void ManagerDBusAdaptor::ConfigureWifiService(
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700182 const map<string, ::DBus::Variant> &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700183 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700184}
185
Chris Masoneccc88812011-06-08 18:00:10 -0700186::DBus::Path ManagerDBusAdaptor::GetVPNService(
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700187 const map<string, ::DBus::Variant> &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700188 ::DBus::Error &/*error*/) {
Chris Masoneccc88812011-06-08 18:00:10 -0700189 return ::DBus::Path();
190}
191
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700192void ManagerDBusAdaptor::RegisterAgent(const ::DBus::Path &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700193 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700194}
195
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700196void ManagerDBusAdaptor::UnregisterAgent(const ::DBus::Path &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700197 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700198}
199
mukesh agrawal1830fa12011-09-26 14:31:40 -0700200int32_t ManagerDBusAdaptor::GetDebugLevel(::DBus::Error &/*error*/) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700201 return logging::GetMinLogLevel();
Chris Masoned7732e42011-05-20 11:08:56 -0700202}
203
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700204void ManagerDBusAdaptor::SetDebugLevel(const int32_t &level,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700205 ::DBus::Error &/*error*/) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700206 if (level < logging::LOG_NUM_SEVERITIES)
207 logging::SetMinLogLevel(level);
208 else
209 LOG(WARNING) << "Ignoring attempt to set log level to " << level;
Chris Masoned7732e42011-05-20 11:08:56 -0700210}
211
mukesh agrawal1830fa12011-09-26 14:31:40 -0700212string ManagerDBusAdaptor::GetServiceOrder(::DBus::Error &/*error*/) {
Paul Stewart22aa71b2011-09-16 12:15:11 -0700213 return manager_->GetTechnologyOrder();
Chris Masoned7732e42011-05-20 11:08:56 -0700214}
215
Paul Stewart22aa71b2011-09-16 12:15:11 -0700216void ManagerDBusAdaptor::SetServiceOrder(const string &order,
Chris Masoned7732e42011-05-20 11:08:56 -0700217 ::DBus::Error &error) {
Paul Stewart22aa71b2011-09-16 12:15:11 -0700218 Error e;
219 manager_->SetTechnologyOrder(order, &e);
220 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700221}
222
Elly Jones16227d32012-02-09 14:17:25 -0500223std::string ManagerDBusAdaptor::GetDebugTags(::DBus::Error &/*error*/) {
224 return "";
225}
226
227void ManagerDBusAdaptor::SetDebugTags(const std::string &/*tags*/,
228 ::DBus::Error &/*error*/) {
229}
230
231std::string ManagerDBusAdaptor::ListDebugTags(::DBus::Error &/*error*/) {
232 return "";
233}
234
Chris Masoned7732e42011-05-20 11:08:56 -0700235} // namespace shill