blob: 4222c3cc0d241b7214fd48801ee3d264a3318244 [file] [log] [blame]
Eric Shienbrood5de44ab2011-12-05 10:46:27 -05001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkovbec79a22011-08-01 14:47:17 -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/modem_cdma_proxy.h"
6
Eric Shienbrood9a245532012-03-07 14:20:39 -05007#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"
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050010
Darin Petkovbec79a22011-08-01 14:47:17 -070011using std::string;
12
13namespace shill {
14
Eric Shienbrood9a245532012-03-07 14:20:39 -050015ModemCDMAProxy::ModemCDMAProxy(
Darin Petkovd9661952011-08-03 16:25:42 -070016 DBus::Connection *connection,
Darin Petkovbec79a22011-08-01 14:47:17 -070017 const string &path,
18 const string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050019 : proxy_(connection, path, service) {}
Darin Petkovbec79a22011-08-01 14:47:17 -070020
21ModemCDMAProxy::~ModemCDMAProxy() {}
22
Eric Shienbrood9a245532012-03-07 14:20:39 -050023void ModemCDMAProxy::Activate(const string &carrier, Error *error,
24 const ActivationResultCallback &callback,
25 int timeout) {
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070026 BeginAsyncDBusCall(__func__, proxy_, &Proxy::ActivateAsync, callback,
27 error, &CellularError::FromDBusError, timeout,
28 carrier);
Darin Petkovc408e692011-08-17 13:47:15 -070029}
30
Eric Shienbrood9a245532012-03-07 14:20:39 -050031void ModemCDMAProxy::GetRegistrationState(
32 Error *error,
33 const RegistrationStateCallback &callback,
34 int timeout) {
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070035 BeginAsyncDBusCall(__func__, proxy_, &Proxy::GetRegistrationStateAsync,
36 callback, error, &CellularError::FromDBusError, timeout);
Darin Petkovbec79a22011-08-01 14:47:17 -070037}
38
Eric Shienbrood9a245532012-03-07 14:20:39 -050039void ModemCDMAProxy::GetSignalQuality(Error *error,
40 const SignalQualityCallback &callback,
41 int timeout) {
mukesh agrawal0e9e9d12014-04-18 16:09:58 -070042 BeginAsyncDBusCall(__func__, proxy_, &Proxy::GetSignalQualityAsync, callback,
43 error, &CellularError::FromDBusError, timeout);
Darin Petkovd9661952011-08-03 16:25:42 -070044}
45
Darin Petkov975b5e72011-08-30 11:48:08 -070046const string ModemCDMAProxy::MEID() {
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050047 LOG(INFO) << "ModemCDMAProxy::" << __func__;
mukesh agrawal06175d72012-04-23 16:46:01 -070048 SLOG(DBus, 2) << __func__;
Gary Morain610977f2012-05-04 16:03:52 -070049 try {
50 return proxy_.Meid();
51 } catch (const DBus::Error &e) {
52 LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what();
53 return string(); // Make the compiler happy.
54 }
Darin Petkov975b5e72011-08-30 11:48:08 -070055}
56
Eric Shienbrood9a245532012-03-07 14:20:39 -050057void ModemCDMAProxy::set_activation_state_callback(
58 const ActivationStateSignalCallback &callback) {
59 proxy_.set_activation_state_callback(callback);
60}
61
62void ModemCDMAProxy::set_signal_quality_callback(
63 const SignalQualitySignalCallback &callback) {
64 proxy_.set_signal_quality_callback(callback);
65}
66
67void ModemCDMAProxy::set_registration_state_callback(
68 const RegistrationStateSignalCallback &callback) {
69 proxy_.set_registration_state_callback(callback);
70}
71
72ModemCDMAProxy::Proxy::Proxy(DBus::Connection *connection,
Darin Petkovbec79a22011-08-01 14:47:17 -070073 const string &path,
74 const string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050075 : DBus::ObjectProxy(*connection, path, service.c_str()) {}
Darin Petkovbec79a22011-08-01 14:47:17 -070076
77ModemCDMAProxy::Proxy::~Proxy() {}
78
Eric Shienbrood9a245532012-03-07 14:20:39 -050079void ModemCDMAProxy::Proxy::set_activation_state_callback(
80 const ActivationStateSignalCallback &callback) {
81 activation_state_callback_ = callback;
82}
83
84void ModemCDMAProxy::Proxy::set_signal_quality_callback(
85 const SignalQualitySignalCallback &callback) {
86 signal_quality_callback_ = callback;
87}
88
89void ModemCDMAProxy::Proxy::set_registration_state_callback(
90 const RegistrationStateSignalCallback &callback) {
91 registration_state_callback_ = callback;
92}
93
Darin Petkovbec79a22011-08-01 14:47:17 -070094void ModemCDMAProxy::Proxy::ActivationStateChanged(
Ben Chan7fab8972014-08-10 17:14:46 -070095 const uint32_t &activation_state,
96 const uint32_t &activation_error,
Darin Petkovbec79a22011-08-01 14:47:17 -070097 const DBusPropertiesMap &status_changes) {
mukesh agrawal06175d72012-04-23 16:46:01 -070098 SLOG(DBus, 2) << __func__ << "(" << activation_state << ", "
99 << activation_error << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500100 activation_state_callback_.Run(activation_state,
101 activation_error,
102 status_changes);
Darin Petkovbec79a22011-08-01 14:47:17 -0700103}
104
Ben Chan7fab8972014-08-10 17:14:46 -0700105void ModemCDMAProxy::Proxy::SignalQuality(const uint32_t &quality) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700106 SLOG(DBus, 2) << __func__ << "(" << quality << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500107 signal_quality_callback_.Run(quality);
Darin Petkovbec79a22011-08-01 14:47:17 -0700108}
109
110void ModemCDMAProxy::Proxy::RegistrationStateChanged(
Ben Chan7fab8972014-08-10 17:14:46 -0700111 const uint32_t &cdma_1x_state,
112 const uint32_t &evdo_state) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700113 SLOG(DBus, 2) << __func__ << "(" << cdma_1x_state << ", "
114 << evdo_state << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500115 registration_state_callback_.Run(cdma_1x_state, evdo_state);
Darin Petkovbec79a22011-08-01 14:47:17 -0700116}
117
Eric Shienbrood9a245532012-03-07 14:20:39 -0500118void ModemCDMAProxy::Proxy::ActivateCallback(const uint32_t &status,
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500119 const DBus::Error &dberror,
120 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700121 SLOG(DBus, 2) << __func__ << "(" << status << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500122 scoped_ptr<ActivationResultCallback> callback(
123 reinterpret_cast<ActivationResultCallback *>(data));
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500124 Error error;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500125 CellularError::FromDBusError(dberror, &error);
126 callback->Run(status, error);
127}
128
129void ModemCDMAProxy::Proxy::GetRegistrationStateCallback(
Ben Chan7fab8972014-08-10 17:14:46 -0700130 const uint32_t &state_1x, const uint32_t &state_evdo,
Eric Shienbrood9a245532012-03-07 14:20:39 -0500131 const DBus::Error &dberror, void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700132 SLOG(DBus, 2) << __func__ << "(" << state_1x << ", " << state_evdo << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500133 scoped_ptr<RegistrationStateCallback> callback(
134 reinterpret_cast<RegistrationStateCallback *>(data));
135 Error error;
136 CellularError::FromDBusError(dberror, &error);
137 callback->Run(state_1x, state_evdo, error);
138}
139
140
Ben Chan7fab8972014-08-10 17:14:46 -0700141void ModemCDMAProxy::Proxy::GetSignalQualityCallback(const uint32_t &quality,
Eric Shienbrood9a245532012-03-07 14:20:39 -0500142 const DBus::Error &dberror,
143 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700144 SLOG(DBus, 2) << __func__ << "(" << quality << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500145 scoped_ptr<SignalQualityCallback> callback(
146 reinterpret_cast<SignalQualityCallback *>(data));
147 Error error;
148 CellularError::FromDBusError(dberror, &error);
149 callback->Run(quality, error);
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500150}
151
Darin Petkovbec79a22011-08-01 14:47:17 -0700152} // namespace shill