blob: ba20d94d54fb0023ce75dd4c7fb9b903f7fbec2a [file] [log] [blame]
Darin Petkovdaf43862011-10-27 11:37:28 +02001// Copyright (c) 2011 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/cellular_capability_cdma.h"
6
7#include <base/logging.h>
Darin Petkov20c13ec2011-11-09 15:07:15 +01008#include <chromeos/dbus/service_constants.h>
9#include <mm/mm-modem.h>
Darin Petkovdaf43862011-10-27 11:37:28 +020010
11#include "shill/cellular.h"
12#include "shill/proxy_factory.h"
13
Darin Petkov20c13ec2011-11-09 15:07:15 +010014using std::string;
15
Darin Petkovdaf43862011-10-27 11:37:28 +020016namespace shill {
17
18CellularCapabilityCDMA::CellularCapabilityCDMA(Cellular *cellular)
19 : CellularCapability(cellular) {}
20
21void CellularCapabilityCDMA::InitProxies() {
22 VLOG(2) << __func__;
23 // TODO(petkov): Move CDMA-specific proxy ownership from Cellular to this.
24 cellular()->set_modem_cdma_proxy(
25 proxy_factory()->CreateModemCDMAProxy(cellular(),
26 cellular()->dbus_path(),
27 cellular()->dbus_owner()));
28}
29
Darin Petkovcb547732011-11-09 13:55:26 +010030void CellularCapabilityCDMA::GetIdentifiers() {
31 VLOG(2) << __func__;
32 if (cellular()->meid().empty()) {
33 // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
34 cellular()->set_meid(cellular()->modem_cdma_proxy()->MEID());
35 VLOG(2) << "MEID: " << cellular()->imei();
36 }
37}
38
Darin Petkov20c13ec2011-11-09 15:07:15 +010039string CellularCapabilityCDMA::GetNetworkTechnologyString() const {
40 if (cellular()->cdma_registration_state_evdo() !=
41 MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
42 return flimflam::kNetworkTechnologyEvdo;
43 }
44 if (cellular()->cdma_registration_state_1x() !=
45 MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
46 return flimflam::kNetworkTechnology1Xrtt;
47 }
48 return "";
49}
50
51string CellularCapabilityCDMA::GetRoamingStateString() const {
52 uint32 state = cellular()->cdma_registration_state_evdo();
53 if (state == MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
54 state = cellular()->cdma_registration_state_1x();
55 }
56 switch (state) {
57 case MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN:
58 case MM_MODEM_CDMA_REGISTRATION_STATE_REGISTERED:
59 break;
60 case MM_MODEM_CDMA_REGISTRATION_STATE_HOME:
61 return flimflam::kRoamingStateHome;
62 case MM_MODEM_CDMA_REGISTRATION_STATE_ROAMING:
63 return flimflam::kRoamingStateRoaming;
64 default:
65 NOTREACHED();
66 }
67 return flimflam::kRoamingStateUnknown;
68}
69
Darin Petkov3e509242011-11-10 14:46:44 +010070void CellularCapabilityCDMA::GetSignalQuality() {
71 VLOG(2) << __func__;
72 // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
73 uint32 strength = cellular()->modem_cdma_proxy()->GetSignalQuality();
74 cellular()->HandleNewSignalQuality(strength);
75}
76
Darin Petkovdaf43862011-10-27 11:37:28 +020077} // namespace shill