shill: Move cellular network registration to capability delegates.
Refactor only, no functional changes. This change also allowed transferring
ownership of the remaining technology-specific proxies (Gsm.Network and Cdma) to
the respective capability delegates.
BUG=chromium-os:18735
TEST=unit tests
Change-Id: I8851cb29b0411168be55d13a2fdc2a2825ce8567
Reviewed-on: https://gerrit.chromium.org/gerrit/11696
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Commit-Ready: Darin Petkov <petkov@chromium.org>
diff --git a/cellular_capability_cdma.cc b/cellular_capability_cdma.cc
index 4cef643..5ff5a02 100644
--- a/cellular_capability_cdma.cc
+++ b/cellular_capability_cdma.cc
@@ -9,6 +9,7 @@
#include <mm/mm-modem.h>
#include "shill/cellular.h"
+#include "shill/cellular_service.h"
#include "shill/proxy_factory.h"
using std::string;
@@ -17,15 +18,14 @@
CellularCapabilityCDMA::CellularCapabilityCDMA(Cellular *cellular)
: CellularCapability(cellular),
- task_factory_(this) {}
+ task_factory_(this),
+ registration_state_evdo_(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN),
+ registration_state_1x_(MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {}
void CellularCapabilityCDMA::InitProxies() {
VLOG(2) << __func__;
- // TODO(petkov): Move CDMA-specific proxy ownership from Cellular to this.
- cellular()->set_modem_cdma_proxy(
- proxy_factory()->CreateModemCDMAProxy(cellular(),
- cellular()->dbus_path(),
- cellular()->dbus_owner()));
+ proxy_.reset(proxy_factory()->CreateModemCDMAProxy(
+ this, cellular()->dbus_path(), cellular()->dbus_owner()));
}
void CellularCapabilityCDMA::Activate(const string &carrier, Error *error) {
@@ -52,7 +52,7 @@
return;
}
// TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
- uint32 status = cellular()->modem_cdma_proxy()->Activate(carrier);
+ uint32 status = proxy_->Activate(carrier);
if (status == MM_MODEM_CDMA_ACTIVATION_ERROR_NO_ERROR) {
cellular()->set_cdma_activation_state(
MM_MODEM_CDMA_ACTIVATION_STATE_ACTIVATING);
@@ -64,27 +64,30 @@
VLOG(2) << __func__;
if (cellular()->meid().empty()) {
// TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
- cellular()->set_meid(cellular()->modem_cdma_proxy()->MEID());
+ cellular()->set_meid(proxy_->MEID());
VLOG(2) << "MEID: " << cellular()->imei();
}
}
+void CellularCapabilityCDMA::GetProperties() {
+ VLOG(2) << __func__;
+ // No properties.
+}
+
string CellularCapabilityCDMA::GetNetworkTechnologyString() const {
- if (cellular()->cdma_registration_state_evdo() !=
- MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
+ if (registration_state_evdo_ != MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
return flimflam::kNetworkTechnologyEvdo;
}
- if (cellular()->cdma_registration_state_1x() !=
- MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
+ if (registration_state_1x_ != MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
return flimflam::kNetworkTechnology1Xrtt;
}
return "";
}
string CellularCapabilityCDMA::GetRoamingStateString() const {
- uint32 state = cellular()->cdma_registration_state_evdo();
+ uint32 state = registration_state_evdo_;
if (state == MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN) {
- state = cellular()->cdma_registration_state_1x();
+ state = registration_state_1x_;
}
switch (state) {
case MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN:
@@ -103,7 +106,53 @@
void CellularCapabilityCDMA::GetSignalQuality() {
VLOG(2) << __func__;
// TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
- uint32 strength = cellular()->modem_cdma_proxy()->GetSignalQuality();
+ uint32 strength = proxy_->GetSignalQuality();
+ cellular()->HandleNewSignalQuality(strength);
+}
+
+void CellularCapabilityCDMA::GetRegistrationState() {
+ VLOG(2) << __func__;
+ // TODO(petkov): Switch to asynchronous calls (crosbug.com/17583).
+ proxy_->GetRegistrationState(
+ ®istration_state_1x_, ®istration_state_evdo_);
+ VLOG(2) << "CDMA Registration: 1x(" << registration_state_1x_
+ << ") EVDO(" << registration_state_evdo_ << ")";
+ cellular()->HandleNewRegistrationState();
+}
+
+void CellularCapabilityCDMA::OnCDMAActivationStateChanged(
+ uint32 activation_state,
+ uint32 activation_error,
+ const DBusPropertiesMap &status_changes) {
+ VLOG(2) << __func__;
+ string mdn;
+ if (DBusProperties::GetString(status_changes, "mdn", &mdn)) {
+ cellular()->set_mdn(mdn);
+ }
+ string min;
+ if (DBusProperties::GetString(status_changes, "min", &min)) {
+ cellular()->set_min(min);
+ }
+ string payment_url;
+ if (DBusProperties::GetString(status_changes, "payment_url", &payment_url)) {
+ cellular()->set_cdma_payment_url(payment_url);
+ if (cellular()->service().get()) {
+ cellular()->service()->set_payment_url(payment_url);
+ }
+ }
+ cellular()->set_cdma_activation_state(activation_state);
+ cellular()->HandleNewCDMAActivationState(activation_error);
+}
+
+void CellularCapabilityCDMA::OnCDMARegistrationStateChanged(
+ uint32 state_1x, uint32 state_evdo) {
+ VLOG(2) << __func__;
+ registration_state_1x_ = state_1x;
+ registration_state_evdo_ = state_evdo;
+ cellular()->HandleNewRegistrationState();
+}
+
+void CellularCapabilityCDMA::OnCDMASignalQualityChanged(uint32 strength) {
cellular()->HandleNewSignalQuality(strength);
}