shill: wimax: Listen to WiMaxManager.Device.StatusChanged signal.

Use the status signal to update the connection state of the WiMax
service appropriately. Also, make sure that WiMaxService is
disassociated from the carrier device if a connection can't be
initiated or if it's dropped.

BUG=chrome-os-partner:10010
TEST=unit tests
CQ-DEPEND=I29dcfe4915e6f2559d022c60353aa12358ef5966
CQ-DEPEND=I223eaf61894f74905c591e38590e5e0620d07be0

Change-Id: I5fe48f0cc84c066eb6a63dc5d347ac5f265b86b1
Reviewed-on: https://gerrit.chromium.org/gerrit/23879
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Ben Chan <benchan@chromium.org>
diff --git a/wimax_device_proxy.h b/wimax_device_proxy.h
index d61736d..04ce1eb 100644
--- a/wimax_device_proxy.h
+++ b/wimax_device_proxy.h
@@ -39,6 +39,8 @@
                           int timeout);
   virtual void set_networks_changed_callback(
       const NetworksChangedCallback &callback);
+  virtual void set_status_changed_callback(
+      const StatusChangedCallback &callback);
   virtual uint8 Index(Error *error);
   virtual std::string Name(Error *error);
 
@@ -50,10 +52,12 @@
     virtual ~Proxy();
 
     void set_networks_changed_callback(const NetworksChangedCallback &callback);
+    void set_status_changed_callback(const StatusChangedCallback &callback);
 
    private:
     // Signal callbacks inherited from WiMaxManager::Device_proxy.
     virtual void NetworksChanged(const std::vector<DBus::Path> &networks);
+    virtual void StatusChanged(const int32 &status);
 
     // Method callbacks inherited from WiMaxManager::Device_proxy.
     virtual void EnableCallback(const DBus::Error &error, void *data);
@@ -65,6 +69,7 @@
     static void HandleCallback(const DBus::Error &error, void *data);
 
     NetworksChangedCallback networks_changed_callback_;
+    StatusChangedCallback status_changed_callback_;
 
     DISALLOW_COPY_AND_ASSIGN(Proxy);
   };