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_interface.h b/wimax_device_proxy_interface.h
index 7e97a8f..9a32253 100644
--- a/wimax_device_proxy_interface.h
+++ b/wimax_device_proxy_interface.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include <base/basictypes.h>
+#include <chromeos/dbus/service_constants.h>
 
 #include "shill/callbacks.h"
 
@@ -21,6 +22,8 @@
 class WiMaxDeviceProxyInterface {
  public:
   typedef base::Callback<void(const RpcIdentifiers &)> NetworksChangedCallback;
+  typedef base::Callback<void(
+      wimax_manager::DeviceStatus)> StatusChangedCallback;
 
   virtual ~WiMaxDeviceProxyInterface() {}
 
@@ -44,6 +47,8 @@
 
   virtual void set_networks_changed_callback(
       const NetworksChangedCallback &callback) = 0;
+  virtual void set_status_changed_callback(
+      const StatusChangedCallback &callback) = 0;
 
   // Properties.
   virtual uint8 Index(Error *error) = 0;