shill: Register the modem, create service and obtain signal strength.
Also, listen for registration info and signal quality change notifications.
BUG=chromium-os:18315
TEST=unit tests, tested on device
Change-Id: I19e5e97257bc53f2004d6b7f0606da2553be4b5d
Reviewed-on: http://gerrit.chromium.org/gerrit/5328
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/modem_cdma_proxy.cc b/modem_cdma_proxy.cc
index aab7c4a..4380c2d 100644
--- a/modem_cdma_proxy.cc
+++ b/modem_cdma_proxy.cc
@@ -10,10 +10,11 @@
namespace shill {
-ModemCDMAProxy::ModemCDMAProxy(DBus::Connection *connection,
+ModemCDMAProxy::ModemCDMAProxy(ModemCDMAProxyListener *listener,
+ DBus::Connection *connection,
const string &path,
const string &service)
- : proxy_(connection, path, service) {}
+ : proxy_(listener, connection, path, service) {}
ModemCDMAProxy::~ModemCDMAProxy() {}
@@ -22,10 +23,16 @@
proxy_.GetRegistrationState(*cdma_1x_state, *evdo_state);
}
-ModemCDMAProxy::Proxy::Proxy(DBus::Connection *connection,
+uint32 ModemCDMAProxy::GetSignalQuality() {
+ return proxy_.GetSignalQuality();
+}
+
+ModemCDMAProxy::Proxy::Proxy(ModemCDMAProxyListener *listener,
+ DBus::Connection *connection,
const string &path,
const string &service)
- : DBus::ObjectProxy(*connection, path, service.c_str()) {}
+ : DBus::ObjectProxy(*connection, path, service.c_str()),
+ listener_(listener) {}
ModemCDMAProxy::Proxy::~Proxy() {}
@@ -39,17 +46,15 @@
}
void ModemCDMAProxy::Proxy::SignalQuality(const uint32 &quality) {
- VLOG(2) << __func__;
- // TODO(petkov): Implement this.
- NOTIMPLEMENTED();
+ VLOG(2) << __func__ << "(" << quality << ")";
+ listener_->OnCDMASignalQualityChanged(quality);
}
void ModemCDMAProxy::Proxy::RegistrationStateChanged(
- const uint32_t &cdma_1x_state,
- const uint32_t &evdo_state) {
- VLOG(2) << __func__;
- // TODO(petkov): Implement this.
- NOTIMPLEMENTED();
+ const uint32 &cdma_1x_state,
+ const uint32 &evdo_state) {
+ VLOG(2) << __func__ << "(" << cdma_1x_state << ", " << evdo_state << ")";
+ listener_->OnCDMARegistrationStateChanged(cdma_1x_state, evdo_state);
}
} // namespace shill