shill: Complete interaction between DeviceInfo and WiMaxProvider.

WiMaxProvider now creates/registers and destroys/deregisters devices
based on DeviceInfo and RPC callbacks. Also, add missing DeviceInfo
WiMax unit tests, and implement WiMaxService's GetDeviceRpcIdentifier
and GetStorageIdentifier.

BUG=chrome-os-partner:9735
TEST=unit tests

Change-Id: I9dbf8f785ef824ca5628b96a2e22ec0ef6336b97
Reviewed-on: https://gerrit.chromium.org/gerrit/22807
Commit-Ready: Ben Chan <benchan@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
diff --git a/wimax_service.cc b/wimax_service.cc
index b6524ef..3d08b65 100644
--- a/wimax_service.cc
+++ b/wimax_service.cc
@@ -4,6 +4,9 @@
 
 #include "shill/wimax_service.h"
 
+#include <base/string_util.h>
+#include <chromeos/dbus/service_constants.h>
+
 #include "shill/technology.h"
 #include "shill/wimax.h"
 
@@ -17,8 +20,11 @@
                            Manager *manager,
                            const WiMaxRefPtr &wimax)
     : Service(control, dispatcher, metrics, manager, Technology::kWiMax),
-      wimax_(wimax) {
-}
+      wimax_(wimax),
+      storage_id_(
+          StringToLowerASCII(string(flimflam::kTypeWimax) +
+                             "_" +
+                             wimax_->address())) {}
 
 WiMaxService::~WiMaxService() {}
 
@@ -37,13 +43,11 @@
 }
 
 string WiMaxService::GetStorageIdentifier() const {
-  // TODO(benchan,petkov): Generate a proper storage identifier.
-  return "";
+  return storage_id_;
 }
 
 string WiMaxService::GetDeviceRpcId(Error *error) {
-  // TODO(benchan,petkov): Is this need?
-  return "";
+  return wimax_->GetRpcIdentifier();
 }
 
 }  // namespace shill