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.h b/modem_cdma_proxy.h
index b1ef84f..33d021f 100644
--- a/modem_cdma_proxy.h
+++ b/modem_cdma_proxy.h
@@ -13,19 +13,24 @@
 
 class ModemCDMAProxy : public ModemCDMAProxyInterface {
  public:
-  ModemCDMAProxy(DBus::Connection *connection,
+  // Constructs a ModemManager.Modem.CDMA DBus object proxy at |path| owned by
+  // |service|. Caught signals will be dispatched to |listener|.
+  ModemCDMAProxy(ModemCDMAProxyListener *listener,
+                 DBus::Connection *connection,
                  const std::string &path,
                  const std::string &service);
   virtual ~ModemCDMAProxy();
 
   // Inherited from ModemCDMAProxyInterface.
   virtual void GetRegistrationState(uint32 *cdma_1x_state, uint32 *evdo_state);
+  virtual uint32 GetSignalQuality();
 
  private:
   class Proxy : public org::freedesktop::ModemManager::Modem::Cdma_proxy,
                 public DBus::ObjectProxy {
    public:
-    Proxy(DBus::Connection *connection,
+    Proxy(ModemCDMAProxyListener *listener,
+          DBus::Connection *connection,
           const std::string &path,
           const std::string &service);
     virtual ~Proxy();
@@ -37,8 +42,10 @@
         const uint32 &activation_error,
         const DBusPropertiesMap &status_changes);
     virtual void SignalQuality(const uint32 &quality);
-    virtual void RegistrationStateChanged(const uint32_t &cdma_1x_state,
-                                          const uint32_t &evdo_state);
+    virtual void RegistrationStateChanged(const uint32 &cdma_1x_state,
+                                          const uint32 &evdo_state);
+
+    ModemCDMAProxyListener *listener_;
 
     DISALLOW_COPY_AND_ASSIGN(Proxy);
   };