blob: 4395eb0847322f5d348d8afe4b4110b8563f8868 [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
7#include <base/logging.h>
8
Eric Shienbrood9a245532012-03-07 14:20:39 -05009#include "shill/cellular_error.h"
Ben Chanfad4a0b2012-04-18 15:49:59 -070010#include "shill/scope_logger.h"
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050011
Darin Petkovbec79a22011-08-01 14:47:17 -070012using std::string;
13
14namespace shill {
15
Eric Shienbrood9a245532012-03-07 14:20:39 -050016ModemCDMAProxy::ModemCDMAProxy(
Darin Petkovd9661952011-08-03 16:25:42 -070017 DBus::Connection *connection,
Darin Petkovbec79a22011-08-01 14:47:17 -070018 const string &path,
19 const string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050020 : proxy_(connection, path, service) {}
Darin Petkovbec79a22011-08-01 14:47:17 -070021
22ModemCDMAProxy::~ModemCDMAProxy() {}
23
Eric Shienbrood9a245532012-03-07 14:20:39 -050024void ModemCDMAProxy::Activate(const string &carrier, Error *error,
25 const ActivationResultCallback &callback,
26 int timeout) {
27 scoped_ptr<ActivationResultCallback>
28 cb(new ActivationResultCallback(callback));
29 try {
mukesh agrawal06175d72012-04-23 16:46:01 -070030 SLOG(DBus, 2) << __func__;
Eric Shienbrood9a245532012-03-07 14:20:39 -050031 proxy_.Activate(carrier, cb.get(), timeout);
32 cb.release();
Ben Chan80326f32012-05-04 17:51:32 -070033 } catch (const DBus::Error &e) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050034 if (error)
35 CellularError::FromDBusError(e, error);
36 }
Darin Petkovc408e692011-08-17 13:47:15 -070037}
38
Eric Shienbrood9a245532012-03-07 14:20:39 -050039void ModemCDMAProxy::GetRegistrationState(
40 Error *error,
41 const RegistrationStateCallback &callback,
42 int timeout) {
43 scoped_ptr<RegistrationStateCallback>
44 cb(new RegistrationStateCallback(callback));
45 try {
mukesh agrawal06175d72012-04-23 16:46:01 -070046 SLOG(DBus, 2) << __func__;
Eric Shienbrood9a245532012-03-07 14:20:39 -050047 proxy_.GetRegistrationState(cb.get(), timeout);
48 cb.release();
Ben Chan80326f32012-05-04 17:51:32 -070049 } catch (const DBus::Error &e) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050050 if (error)
51 CellularError::FromDBusError(e, error);
52 }
Darin Petkovbec79a22011-08-01 14:47:17 -070053}
54
Eric Shienbrood9a245532012-03-07 14:20:39 -050055void ModemCDMAProxy::GetSignalQuality(Error *error,
56 const SignalQualityCallback &callback,
57 int timeout) {
58 scoped_ptr<SignalQualityCallback> cb(new SignalQualityCallback(callback));
59 try {
mukesh agrawal06175d72012-04-23 16:46:01 -070060 SLOG(DBus, 2) << __func__;
Eric Shienbrood9a245532012-03-07 14:20:39 -050061 proxy_.GetSignalQuality(cb.get(), timeout);
62 cb.release();
Ben Chan80326f32012-05-04 17:51:32 -070063 } catch (const DBus::Error &e) {
Eric Shienbrood9a245532012-03-07 14:20:39 -050064 if (error)
65 CellularError::FromDBusError(e, error);
66 }
Darin Petkovd9661952011-08-03 16:25:42 -070067}
68
Darin Petkov975b5e72011-08-30 11:48:08 -070069const string ModemCDMAProxy::MEID() {
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050070 LOG(INFO) << "ModemCDMAProxy::" << __func__;
mukesh agrawal06175d72012-04-23 16:46:01 -070071 SLOG(DBus, 2) << __func__;
Gary Morain610977f2012-05-04 16:03:52 -070072 try {
73 return proxy_.Meid();
74 } catch (const DBus::Error &e) {
75 LOG(FATAL) << "DBus exception: " << e.name() << ": " << e.what();
76 return string(); // Make the compiler happy.
77 }
Darin Petkov975b5e72011-08-30 11:48:08 -070078}
79
Eric Shienbrood9a245532012-03-07 14:20:39 -050080void ModemCDMAProxy::set_activation_state_callback(
81 const ActivationStateSignalCallback &callback) {
82 proxy_.set_activation_state_callback(callback);
83}
84
85void ModemCDMAProxy::set_signal_quality_callback(
86 const SignalQualitySignalCallback &callback) {
87 proxy_.set_signal_quality_callback(callback);
88}
89
90void ModemCDMAProxy::set_registration_state_callback(
91 const RegistrationStateSignalCallback &callback) {
92 proxy_.set_registration_state_callback(callback);
93}
94
95ModemCDMAProxy::Proxy::Proxy(DBus::Connection *connection,
Darin Petkovbec79a22011-08-01 14:47:17 -070096 const string &path,
97 const string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050098 : DBus::ObjectProxy(*connection, path, service.c_str()) {}
Darin Petkovbec79a22011-08-01 14:47:17 -070099
100ModemCDMAProxy::Proxy::~Proxy() {}
101
Eric Shienbrood9a245532012-03-07 14:20:39 -0500102void ModemCDMAProxy::Proxy::set_activation_state_callback(
103 const ActivationStateSignalCallback &callback) {
104 activation_state_callback_ = callback;
105}
106
107void ModemCDMAProxy::Proxy::set_signal_quality_callback(
108 const SignalQualitySignalCallback &callback) {
109 signal_quality_callback_ = callback;
110}
111
112void ModemCDMAProxy::Proxy::set_registration_state_callback(
113 const RegistrationStateSignalCallback &callback) {
114 registration_state_callback_ = callback;
115}
116
Darin Petkovbec79a22011-08-01 14:47:17 -0700117void ModemCDMAProxy::Proxy::ActivationStateChanged(
118 const uint32 &activation_state,
119 const uint32 &activation_error,
120 const DBusPropertiesMap &status_changes) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700121 SLOG(DBus, 2) << __func__ << "(" << activation_state << ", "
122 << activation_error << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500123 activation_state_callback_.Run(activation_state,
124 activation_error,
125 status_changes);
Darin Petkovbec79a22011-08-01 14:47:17 -0700126}
127
128void ModemCDMAProxy::Proxy::SignalQuality(const uint32 &quality) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700129 SLOG(DBus, 2) << __func__ << "(" << quality << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500130 signal_quality_callback_.Run(quality);
Darin Petkovbec79a22011-08-01 14:47:17 -0700131}
132
133void ModemCDMAProxy::Proxy::RegistrationStateChanged(
Darin Petkovd9661952011-08-03 16:25:42 -0700134 const uint32 &cdma_1x_state,
135 const uint32 &evdo_state) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700136 SLOG(DBus, 2) << __func__ << "(" << cdma_1x_state << ", "
137 << evdo_state << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500138 registration_state_callback_.Run(cdma_1x_state, evdo_state);
Darin Petkovbec79a22011-08-01 14:47:17 -0700139}
140
Eric Shienbrood9a245532012-03-07 14:20:39 -0500141void ModemCDMAProxy::Proxy::ActivateCallback(const uint32_t &status,
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500142 const DBus::Error &dberror,
143 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700144 SLOG(DBus, 2) << __func__ << "(" << status << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500145 scoped_ptr<ActivationResultCallback> callback(
146 reinterpret_cast<ActivationResultCallback *>(data));
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500147 Error error;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500148 CellularError::FromDBusError(dberror, &error);
149 callback->Run(status, error);
150}
151
152void ModemCDMAProxy::Proxy::GetRegistrationStateCallback(
153 const uint32 &state_1x, const uint32 &state_evdo,
154 const DBus::Error &dberror, void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700155 SLOG(DBus, 2) << __func__ << "(" << state_1x << ", " << state_evdo << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500156 scoped_ptr<RegistrationStateCallback> callback(
157 reinterpret_cast<RegistrationStateCallback *>(data));
158 Error error;
159 CellularError::FromDBusError(dberror, &error);
160 callback->Run(state_1x, state_evdo, error);
161}
162
163
164void ModemCDMAProxy::Proxy::GetSignalQualityCallback(const uint32 &quality,
165 const DBus::Error &dberror,
166 void *data) {
mukesh agrawal06175d72012-04-23 16:46:01 -0700167 SLOG(DBus, 2) << __func__ << "(" << quality << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500168 scoped_ptr<SignalQualityCallback> callback(
169 reinterpret_cast<SignalQualityCallback *>(data));
170 Error error;
171 CellularError::FromDBusError(dberror, &error);
172 callback->Run(quality, error);
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500173}
174
Darin Petkovbec79a22011-08-01 14:47:17 -0700175} // namespace shill