blob: dd7eae9f40e9ae9c4e3fdfba69229318e2f5cad9 [file] [log] [blame]
Jason Glasgow74f5ef22012-03-29 16:15:04 -04001// 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#include "shill/mm1_sim_proxy.h"
6
Ben Chanfad4a0b2012-04-18 15:49:59 -07007#include "shill/cellular_error.h"
mukesh agrawal0e9e9d12014-04-18 16:09:58 -07008#include "shill/dbus_async_call_helper.h"
Christopher Wileyb691efd2012-08-09 13:51:51 -07009#include "shill/logging.h"
Jason Glasgow74f5ef22012-03-29 16:15:04 -040010
11using std::string;
12
13namespace shill {
14namespace mm1 {
15
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070016template<typename TraceMsgT, typename CallT, typename CallbackT,
17 typename... ArgTypes>
18void SimProxy::BeginCall(
19 const TraceMsgT &trace_msg, const CallT &call, CallbackT &callback,
20 Error *error, int timeout, ArgTypes... rest) {
21 BeginAsyncDBusCall(trace_msg, proxy_, call, callback, error,
22 &CellularError::FromMM1DBusError, timeout, rest...);
23}
24
Jason Glasgow74f5ef22012-03-29 16:15:04 -040025SimProxy::SimProxy(DBus::Connection *connection,
26 const string &path,
27 const string &service)
28 : proxy_(connection, path, service) {}
29
30SimProxy::~SimProxy() {}
31
32
33void SimProxy::SendPin(const string &pin,
34 Error *error,
35 const ResultCallback &callback,
36 int timeout) {
37 // pin is intentionally not logged.
Ben Chanfad4a0b2012-04-18 15:49:59 -070038 SLOG(Modem, 2) << __func__ << "( XXX, " << timeout << ")";
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070039 BeginCall(__func__, &Proxy::SendPinAsync, callback, error, timeout,
40 pin);
Jason Glasgow74f5ef22012-03-29 16:15:04 -040041}
42
43void SimProxy::SendPuk(const string &puk,
44 const string &pin,
45 Error *error,
46 const ResultCallback &callback,
47 int timeout) {
48 // pin and puk are intentionally not logged.
Ben Chanfad4a0b2012-04-18 15:49:59 -070049 SLOG(Modem, 2) << __func__ << "( XXX, XXX, " << timeout << ")";
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070050 BeginCall(__func__, &Proxy::SendPukAsync, callback, error, timeout,
51 puk, pin);
Jason Glasgow74f5ef22012-03-29 16:15:04 -040052}
53
54void SimProxy::EnablePin(const string &pin,
55 const bool enabled,
56 Error *error,
57 const ResultCallback &callback,
58 int timeout) {
59 // pin is intentionally not logged.
Ben Chanfad4a0b2012-04-18 15:49:59 -070060 SLOG(Modem, 2) << __func__ << "( XXX, " << enabled << ", " << timeout << ")";
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070061 BeginCall(__func__, &Proxy::EnablePinAsync, callback, error, timeout,
62 pin, enabled);
Jason Glasgow74f5ef22012-03-29 16:15:04 -040063}
64
65void SimProxy::ChangePin(const string &old_pin,
66 const string &new_pin,
67 Error *error,
68 const ResultCallback &callback,
69 int timeout) {
70 // old_pin and new_pin are intentionally not logged.
Ben Chanfad4a0b2012-04-18 15:49:59 -070071 SLOG(Modem, 2) << __func__ << "( XXX, XXX, " << timeout << ")";
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070072 BeginCall(__func__, &Proxy::ChangePinAsync, callback, error, timeout,
73 old_pin, new_pin);
Jason Glasgow74f5ef22012-03-29 16:15:04 -040074}
75
Jason Glasgow74f5ef22012-03-29 16:15:04 -040076SimProxy::Proxy::Proxy(DBus::Connection *connection,
77 const string &path,
78 const string &service)
79 : DBus::ObjectProxy(*connection, path, service.c_str()) {}
80
81SimProxy::Proxy::~Proxy() {}
82
83
84// Method callbacks inherited from
85// org::freedesktop::ModemManager1::SimProxy
86void SimProxy::Proxy::SendPinCallback(const ::DBus::Error &dberror,
87 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -070088 SLOG(DBus, 2) << __func__;
Jason Glasgow74f5ef22012-03-29 16:15:04 -040089 scoped_ptr<ResultCallback> callback(reinterpret_cast<ResultCallback *>(data));
90 Error error;
Arman Uguray763df862013-07-02 12:49:10 -070091 CellularError::FromMM1DBusError(dberror, &error);
Jason Glasgow74f5ef22012-03-29 16:15:04 -040092 callback->Run(error);
93}
94
95void SimProxy::Proxy::SendPukCallback(const ::DBus::Error &dberror,
mukesh agrawal06175d72012-04-23 16:46:01 -070096 void *data) {
97 SLOG(DBus, 2) << __func__;
Jason Glasgow74f5ef22012-03-29 16:15:04 -040098 scoped_ptr<ResultCallback> callback(reinterpret_cast<ResultCallback *>(data));
99 Error error;
Arman Uguray763df862013-07-02 12:49:10 -0700100 CellularError::FromMM1DBusError(dberror, &error);
Jason Glasgow74f5ef22012-03-29 16:15:04 -0400101 callback->Run(error);
102}
103
Gary Morainabb30da2012-05-08 16:59:59 -0700104void SimProxy::Proxy::EnablePinCallback(const ::DBus::Error &dberror,
105 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700106 SLOG(DBus, 2) << __func__;
Jason Glasgow74f5ef22012-03-29 16:15:04 -0400107 scoped_ptr<ResultCallback> callback(reinterpret_cast<ResultCallback *>(data));
108 Error error;
Arman Uguray763df862013-07-02 12:49:10 -0700109 CellularError::FromMM1DBusError(dberror, &error);
Jason Glasgow74f5ef22012-03-29 16:15:04 -0400110 callback->Run(error);
111}
112
Gary Morainabb30da2012-05-08 16:59:59 -0700113void SimProxy::Proxy::ChangePinCallback(const ::DBus::Error &dberror,
114 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700115 SLOG(DBus, 2) << __func__;
Jason Glasgow74f5ef22012-03-29 16:15:04 -0400116 scoped_ptr<ResultCallback> callback(reinterpret_cast<ResultCallback *>(data));
117 Error error;
Arman Uguray763df862013-07-02 12:49:10 -0700118 CellularError::FromMM1DBusError(dberror, &error);
Jason Glasgow74f5ef22012-03-29 16:15:04 -0400119 callback->Run(error);
120}
121
122} // namespace mm1
123} // namespace shill