blob: b7c283b1d21313f5717ed49f4eef75babaae9808 [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
Darin Petkovb65c2452012-02-23 15:17:06 +0100153// Called, e.g., to get WiFiService handle for a hidden SSID.
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) {
Darin Petkovb65c2452012-02-23 15:17:06 +0100157 ServiceRefPtr service;
158 KeyValueStore args_store;
159 Error e;
160 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &e);
161 if (e.IsSuccess()) {
162 service = manager_->GetService(args_store, &e);
163 }
164 if (e.ToDBusError(&error)) {
165 return "/"; // ensure return is syntactically valid
166 }
167 return service->GetRpcIdentifier();
Chris Masoned7732e42011-05-20 11:08:56 -0700168}
169
Darin Petkovb65c2452012-02-23 15:17:06 +0100170// Obsolete, use GetService instead.
171::DBus::Path ManagerDBusAdaptor::GetVPNService(
172 const map<string, ::DBus::Variant> &args,
173 ::DBus::Error &error) {
174 return GetService(args, error);
175}
176
177// Obsolete, use GetService instead.
Chris Masoned7732e42011-05-20 11:08:56 -0700178::DBus::Path ManagerDBusAdaptor::GetWifiService(
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700179 const map<string, ::DBus::Variant> &args,
Chris Masoned7732e42011-05-20 11:08:56 -0700180 ::DBus::Error &error) {
Darin Petkovb65c2452012-02-23 15:17:06 +0100181 return GetService(args, error);
Chris Masoned7732e42011-05-20 11:08:56 -0700182}
183
184void ManagerDBusAdaptor::ConfigureWifiService(
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700185 const map<string, ::DBus::Variant> &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700186 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700187}
188
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700189void ManagerDBusAdaptor::RegisterAgent(const ::DBus::Path &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700190 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700191}
192
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700193void ManagerDBusAdaptor::UnregisterAgent(const ::DBus::Path &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700194 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700195}
196
mukesh agrawal1830fa12011-09-26 14:31:40 -0700197int32_t ManagerDBusAdaptor::GetDebugLevel(::DBus::Error &/*error*/) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700198 return logging::GetMinLogLevel();
Chris Masoned7732e42011-05-20 11:08:56 -0700199}
200
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700201void ManagerDBusAdaptor::SetDebugLevel(const int32_t &level,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700202 ::DBus::Error &/*error*/) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700203 if (level < logging::LOG_NUM_SEVERITIES)
204 logging::SetMinLogLevel(level);
205 else
206 LOG(WARNING) << "Ignoring attempt to set log level to " << level;
Chris Masoned7732e42011-05-20 11:08:56 -0700207}
208
mukesh agrawal1830fa12011-09-26 14:31:40 -0700209string ManagerDBusAdaptor::GetServiceOrder(::DBus::Error &/*error*/) {
Paul Stewart22aa71b2011-09-16 12:15:11 -0700210 return manager_->GetTechnologyOrder();
Chris Masoned7732e42011-05-20 11:08:56 -0700211}
212
Paul Stewart22aa71b2011-09-16 12:15:11 -0700213void ManagerDBusAdaptor::SetServiceOrder(const string &order,
Chris Masoned7732e42011-05-20 11:08:56 -0700214 ::DBus::Error &error) {
Paul Stewart22aa71b2011-09-16 12:15:11 -0700215 Error e;
216 manager_->SetTechnologyOrder(order, &e);
217 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700218}
219
Elly Jones16227d32012-02-09 14:17:25 -0500220std::string ManagerDBusAdaptor::GetDebugTags(::DBus::Error &/*error*/) {
221 return "";
222}
223
224void ManagerDBusAdaptor::SetDebugTags(const std::string &/*tags*/,
225 ::DBus::Error &/*error*/) {
226}
227
228std::string ManagerDBusAdaptor::ListDebugTags(::DBus::Error &/*error*/) {
229 return "";
230}
231
Chris Masoned7732e42011-05-20 11:08:56 -0700232} // namespace shill