shill: Decouple Cellular's IsRegistered from the network technology string.
Also, broadcast changes in the cellular service network technology and roaming
state properties.
BUG=chromium-os:23327
TEST=unit tests, tested on device
Change-Id: Ia4c297586dbc9b8a32d297c126c4d791310b5abd
Reviewed-on: https://gerrit.chromium.org/gerrit/12028
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Eric Shienbrood <ers@chromium.org>
diff --git a/cellular_capability_gsm.cc b/cellular_capability_gsm.cc
index c33cf14..ac8c1a9 100644
--- a/cellular_capability_gsm.cc
+++ b/cellular_capability_gsm.cc
@@ -135,9 +135,13 @@
}
}
if (cellular()->mdn().empty()) {
- // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
- cellular()->set_mdn(card_proxy_->GetMSISDN());
- VLOG(2) << "MSISDN/MDN: " << cellular()->mdn();
+ try {
+ // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
+ cellular()->set_mdn(card_proxy_->GetMSISDN());
+ VLOG(2) << "MSISDN/MDN: " << cellular()->mdn();
+ } catch (const DBus::Error e) {
+ LOG(WARNING) << "Unable to obtain MSISDN/MDN: " << e.what();
+ }
}
SetHomeProvider();
}
@@ -300,6 +304,11 @@
network_id));
}
+bool CellularCapabilityGSM::IsRegistered() {
+ return (registration_state_ == MM_MODEM_GSM_NETWORK_REG_STATUS_HOME ||
+ registration_state_ == MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING);
+}
+
void CellularCapabilityGSM::RegisterOnNetworkTask(const string &network_id) {
LOG(INFO) << __func__ << "(" << network_id << ")";
// TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
@@ -463,32 +472,29 @@
void CellularCapabilityGSM::SetAccessTechnology(uint32 access_technology) {
access_technology_ = access_technology;
if (cellular()->service().get()) {
- cellular()->service()->set_network_tech(GetNetworkTechnologyString());
+ cellular()->service()->SetNetworkTechnology(GetNetworkTechnologyString());
}
}
string CellularCapabilityGSM::GetNetworkTechnologyString() const {
- if (registration_state_ == MM_MODEM_GSM_NETWORK_REG_STATUS_HOME ||
- registration_state_ == MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING) {
- switch (access_technology_) {
- case MM_MODEM_GSM_ACCESS_TECH_GSM:
- case MM_MODEM_GSM_ACCESS_TECH_GSM_COMPACT:
- return flimflam::kNetworkTechnologyGsm;
- case MM_MODEM_GSM_ACCESS_TECH_GPRS:
- return flimflam::kNetworkTechnologyGprs;
- case MM_MODEM_GSM_ACCESS_TECH_EDGE:
- return flimflam::kNetworkTechnologyEdge;
- case MM_MODEM_GSM_ACCESS_TECH_UMTS:
- return flimflam::kNetworkTechnologyUmts;
- case MM_MODEM_GSM_ACCESS_TECH_HSDPA:
- case MM_MODEM_GSM_ACCESS_TECH_HSUPA:
- case MM_MODEM_GSM_ACCESS_TECH_HSPA:
- return flimflam::kNetworkTechnologyHspa;
- case MM_MODEM_GSM_ACCESS_TECH_HSPA_PLUS:
- return flimflam::kNetworkTechnologyHspaPlus;
- default:
- NOTREACHED();
- }
+ switch (access_technology_) {
+ case MM_MODEM_GSM_ACCESS_TECH_GSM:
+ case MM_MODEM_GSM_ACCESS_TECH_GSM_COMPACT:
+ return flimflam::kNetworkTechnologyGsm;
+ case MM_MODEM_GSM_ACCESS_TECH_GPRS:
+ return flimflam::kNetworkTechnologyGprs;
+ case MM_MODEM_GSM_ACCESS_TECH_EDGE:
+ return flimflam::kNetworkTechnologyEdge;
+ case MM_MODEM_GSM_ACCESS_TECH_UMTS:
+ return flimflam::kNetworkTechnologyUmts;
+ case MM_MODEM_GSM_ACCESS_TECH_HSDPA:
+ case MM_MODEM_GSM_ACCESS_TECH_HSUPA:
+ case MM_MODEM_GSM_ACCESS_TECH_HSPA:
+ return flimflam::kNetworkTechnologyHspa;
+ case MM_MODEM_GSM_ACCESS_TECH_HSPA_PLUS:
+ return flimflam::kNetworkTechnologyHspaPlus;
+ default:
+ break;
}
return "";
}