blob: c7eb5979a2400bc3a3ddc34e5da806cb513d3ca9 [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 {
30 proxy_.Activate(carrier, cb.get(), timeout);
31 cb.release();
32 } catch (DBus::Error e) {
33 if (error)
34 CellularError::FromDBusError(e, error);
35 }
Darin Petkovc408e692011-08-17 13:47:15 -070036}
37
Eric Shienbrood9a245532012-03-07 14:20:39 -050038void ModemCDMAProxy::GetRegistrationState(
39 Error *error,
40 const RegistrationStateCallback &callback,
41 int timeout) {
42 scoped_ptr<RegistrationStateCallback>
43 cb(new RegistrationStateCallback(callback));
44 try {
45 proxy_.GetRegistrationState(cb.get(), timeout);
46 cb.release();
47 } catch (DBus::Error e) {
48 if (error)
49 CellularError::FromDBusError(e, error);
50 }
Darin Petkovbec79a22011-08-01 14:47:17 -070051}
52
Eric Shienbrood9a245532012-03-07 14:20:39 -050053void ModemCDMAProxy::GetSignalQuality(Error *error,
54 const SignalQualityCallback &callback,
55 int timeout) {
56 scoped_ptr<SignalQualityCallback> cb(new SignalQualityCallback(callback));
57 try {
58 proxy_.GetSignalQuality(cb.get(), timeout);
59 cb.release();
60 } catch (DBus::Error e) {
61 if (error)
62 CellularError::FromDBusError(e, error);
63 }
Darin Petkovd9661952011-08-03 16:25:42 -070064}
65
Darin Petkov975b5e72011-08-30 11:48:08 -070066const string ModemCDMAProxy::MEID() {
Eric Shienbrood5de44ab2011-12-05 10:46:27 -050067 LOG(INFO) << "ModemCDMAProxy::" << __func__;
Darin Petkov975b5e72011-08-30 11:48:08 -070068 return proxy_.Meid();
69}
70
Eric Shienbrood9a245532012-03-07 14:20:39 -050071void ModemCDMAProxy::set_activation_state_callback(
72 const ActivationStateSignalCallback &callback) {
73 proxy_.set_activation_state_callback(callback);
74}
75
76void ModemCDMAProxy::set_signal_quality_callback(
77 const SignalQualitySignalCallback &callback) {
78 proxy_.set_signal_quality_callback(callback);
79}
80
81void ModemCDMAProxy::set_registration_state_callback(
82 const RegistrationStateSignalCallback &callback) {
83 proxy_.set_registration_state_callback(callback);
84}
85
86ModemCDMAProxy::Proxy::Proxy(DBus::Connection *connection,
Darin Petkovbec79a22011-08-01 14:47:17 -070087 const string &path,
88 const string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050089 : DBus::ObjectProxy(*connection, path, service.c_str()) {}
Darin Petkovbec79a22011-08-01 14:47:17 -070090
91ModemCDMAProxy::Proxy::~Proxy() {}
92
Eric Shienbrood9a245532012-03-07 14:20:39 -050093void ModemCDMAProxy::Proxy::set_activation_state_callback(
94 const ActivationStateSignalCallback &callback) {
95 activation_state_callback_ = callback;
96}
97
98void ModemCDMAProxy::Proxy::set_signal_quality_callback(
99 const SignalQualitySignalCallback &callback) {
100 signal_quality_callback_ = callback;
101}
102
103void ModemCDMAProxy::Proxy::set_registration_state_callback(
104 const RegistrationStateSignalCallback &callback) {
105 registration_state_callback_ = callback;
106}
107
Darin Petkovbec79a22011-08-01 14:47:17 -0700108void ModemCDMAProxy::Proxy::ActivationStateChanged(
109 const uint32 &activation_state,
110 const uint32 &activation_error,
111 const DBusPropertiesMap &status_changes) {
Ben Chanfad4a0b2012-04-18 15:49:59 -0700112 SLOG(Modem, 2) << __func__ << "(" << activation_state << ", "
113 << activation_error << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500114 activation_state_callback_.Run(activation_state,
115 activation_error,
116 status_changes);
Darin Petkovbec79a22011-08-01 14:47:17 -0700117}
118
119void ModemCDMAProxy::Proxy::SignalQuality(const uint32 &quality) {
Ben Chanfad4a0b2012-04-18 15:49:59 -0700120 SLOG(Modem, 2) << __func__ << "(" << quality << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500121 signal_quality_callback_.Run(quality);
Darin Petkovbec79a22011-08-01 14:47:17 -0700122}
123
124void ModemCDMAProxy::Proxy::RegistrationStateChanged(
Darin Petkovd9661952011-08-03 16:25:42 -0700125 const uint32 &cdma_1x_state,
126 const uint32 &evdo_state) {
Ben Chanfad4a0b2012-04-18 15:49:59 -0700127 SLOG(Modem, 2) << __func__ << "(" << cdma_1x_state << ", "
128 << evdo_state << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500129 registration_state_callback_.Run(cdma_1x_state, evdo_state);
Darin Petkovbec79a22011-08-01 14:47:17 -0700130}
131
Eric Shienbrood9a245532012-03-07 14:20:39 -0500132void ModemCDMAProxy::Proxy::ActivateCallback(const uint32_t &status,
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500133 const DBus::Error &dberror,
134 void *data) {
Ben Chanfad4a0b2012-04-18 15:49:59 -0700135 SLOG(Modem, 2) << __func__ << "(" << status << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500136 scoped_ptr<ActivationResultCallback> callback(
137 reinterpret_cast<ActivationResultCallback *>(data));
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500138 Error error;
Eric Shienbrood9a245532012-03-07 14:20:39 -0500139 CellularError::FromDBusError(dberror, &error);
140 callback->Run(status, error);
141}
142
143void ModemCDMAProxy::Proxy::GetRegistrationStateCallback(
144 const uint32 &state_1x, const uint32 &state_evdo,
145 const DBus::Error &dberror, void *data) {
Ben Chanfad4a0b2012-04-18 15:49:59 -0700146 SLOG(Modem, 2) << __func__ << "(" << state_1x << ", " << state_evdo << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500147 scoped_ptr<RegistrationStateCallback> callback(
148 reinterpret_cast<RegistrationStateCallback *>(data));
149 Error error;
150 CellularError::FromDBusError(dberror, &error);
151 callback->Run(state_1x, state_evdo, error);
152}
153
154
155void ModemCDMAProxy::Proxy::GetSignalQualityCallback(const uint32 &quality,
156 const DBus::Error &dberror,
157 void *data) {
Ben Chanfad4a0b2012-04-18 15:49:59 -0700158 SLOG(Modem, 2) << __func__ << "(" << quality << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -0500159 scoped_ptr<SignalQualityCallback> callback(
160 reinterpret_cast<SignalQualityCallback *>(data));
161 Error error;
162 CellularError::FromDBusError(dberror, &error);
163 callback->Run(quality, error);
Eric Shienbrood5de44ab2011-12-05 10:46:27 -0500164}
165
Darin Petkovbec79a22011-08-01 14:47:17 -0700166} // namespace shill