blob: a86367c9f2cd4f49a421de1e5c71e9f9f52079cf [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
Paul Stewartc681fa02012-03-02 19:40:04 -0800138void ManagerDBusAdaptor::RecheckPortal(::DBus::Error &error) {
139 Error e;
140 manager_->RecheckPortal(&e);
141 e.ToDBusError(&error);
142}
143
mukesh agrawal32399322011-09-01 10:53:43 -0700144void ManagerDBusAdaptor::RequestScan(const string &technology,
Chris Masoned7732e42011-05-20 11:08:56 -0700145 ::DBus::Error &error) {
mukesh agrawal32399322011-09-01 10:53:43 -0700146 Error e;
147 manager_->RequestScan(technology, &e);
148 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700149}
150
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700151void ManagerDBusAdaptor::EnableTechnology(const string &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700152 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700153}
154
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700155void ManagerDBusAdaptor::DisableTechnology(const string &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700156 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700157}
158
Darin Petkovb65c2452012-02-23 15:17:06 +0100159// Called, e.g., to get WiFiService handle for a hidden SSID.
Chris Masoned7732e42011-05-20 11:08:56 -0700160::DBus::Path ManagerDBusAdaptor::GetService(
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700161 const map<string, ::DBus::Variant> &args,
Chris Masoned7732e42011-05-20 11:08:56 -0700162 ::DBus::Error &error) {
Darin Petkovb65c2452012-02-23 15:17:06 +0100163 ServiceRefPtr service;
164 KeyValueStore args_store;
165 Error e;
166 DBusAdaptor::ArgsToKeyValueStore(args, &args_store, &e);
167 if (e.IsSuccess()) {
168 service = manager_->GetService(args_store, &e);
169 }
170 if (e.ToDBusError(&error)) {
171 return "/"; // ensure return is syntactically valid
172 }
173 return service->GetRpcIdentifier();
Chris Masoned7732e42011-05-20 11:08:56 -0700174}
175
Darin Petkovb65c2452012-02-23 15:17:06 +0100176// Obsolete, use GetService instead.
177::DBus::Path ManagerDBusAdaptor::GetVPNService(
178 const map<string, ::DBus::Variant> &args,
179 ::DBus::Error &error) {
180 return GetService(args, error);
181}
182
183// Obsolete, use GetService instead.
Chris Masoned7732e42011-05-20 11:08:56 -0700184::DBus::Path ManagerDBusAdaptor::GetWifiService(
mukesh agrawal7a4e4002011-09-06 11:26:05 -0700185 const map<string, ::DBus::Variant> &args,
Chris Masoned7732e42011-05-20 11:08:56 -0700186 ::DBus::Error &error) {
Darin Petkovb65c2452012-02-23 15:17:06 +0100187 return GetService(args, error);
Chris Masoned7732e42011-05-20 11:08:56 -0700188}
189
190void ManagerDBusAdaptor::ConfigureWifiService(
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700191 const map<string, ::DBus::Variant> &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700192 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700193}
194
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700195void ManagerDBusAdaptor::RegisterAgent(const ::DBus::Path &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700196 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700197}
198
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700199void ManagerDBusAdaptor::UnregisterAgent(const ::DBus::Path &,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700200 ::DBus::Error &/*error*/) {
Chris Masoned7732e42011-05-20 11:08:56 -0700201}
202
mukesh agrawal1830fa12011-09-26 14:31:40 -0700203int32_t ManagerDBusAdaptor::GetDebugLevel(::DBus::Error &/*error*/) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700204 return logging::GetMinLogLevel();
Chris Masoned7732e42011-05-20 11:08:56 -0700205}
206
Chris Masone8fe2c7e2011-06-09 15:51:19 -0700207void ManagerDBusAdaptor::SetDebugLevel(const int32_t &level,
mukesh agrawal1830fa12011-09-26 14:31:40 -0700208 ::DBus::Error &/*error*/) {
Chris Masone7ccc8192011-05-24 14:54:49 -0700209 if (level < logging::LOG_NUM_SEVERITIES)
210 logging::SetMinLogLevel(level);
211 else
212 LOG(WARNING) << "Ignoring attempt to set log level to " << level;
Chris Masoned7732e42011-05-20 11:08:56 -0700213}
214
mukesh agrawal1830fa12011-09-26 14:31:40 -0700215string ManagerDBusAdaptor::GetServiceOrder(::DBus::Error &/*error*/) {
Paul Stewart22aa71b2011-09-16 12:15:11 -0700216 return manager_->GetTechnologyOrder();
Chris Masoned7732e42011-05-20 11:08:56 -0700217}
218
Paul Stewart22aa71b2011-09-16 12:15:11 -0700219void ManagerDBusAdaptor::SetServiceOrder(const string &order,
Chris Masoned7732e42011-05-20 11:08:56 -0700220 ::DBus::Error &error) {
Paul Stewart22aa71b2011-09-16 12:15:11 -0700221 Error e;
222 manager_->SetTechnologyOrder(order, &e);
223 e.ToDBusError(&error);
Chris Masoned7732e42011-05-20 11:08:56 -0700224}
225
Elly Jones16227d32012-02-09 14:17:25 -0500226std::string ManagerDBusAdaptor::GetDebugTags(::DBus::Error &/*error*/) {
227 return "";
228}
229
230void ManagerDBusAdaptor::SetDebugTags(const std::string &/*tags*/,
231 ::DBus::Error &/*error*/) {
232}
233
234std::string ManagerDBusAdaptor::ListDebugTags(::DBus::Error &/*error*/) {
235 return "";
236}
237
Chris Masoned7732e42011-05-20 11:08:56 -0700238} // namespace shill