shill: Transition Cellular's state to Registered when the modem is registered.

Also, process GSM network technology types and roaming states and update the
Cellular service appropriately.

BUG=chromium-os:19676
TEST=unit tests, tested on device

Change-Id: I6606a01a07cf635cb344aef95c3145eaf2290fba
Reviewed-on: http://gerrit.chromium.org/gerrit/6768
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/cellular.h b/cellular.h
index da5d5f8..6d1fa1d 100644
--- a/cellular.h
+++ b/cellular.h
@@ -117,18 +117,6 @@
     DISALLOW_COPY_AND_ASSIGN(Network);
   };
 
-  struct CDMA {
-    CDMA();
-
-    uint32 registration_state_evdo;
-    uint32 registration_state_1x;
-    uint32 activation_state;
-
-    uint16 prl_version;
-    std::string payment_url;
-    std::string usage_url;
-  };
-
   struct SimLockStatus {
    public:
     SimLockStatus() : retries_left(0) {}
@@ -177,21 +165,44 @@
   FRIEND_TEST(CellularTest, Connect);
   FRIEND_TEST(CellularTest, GetCDMAActivationStateString);
   FRIEND_TEST(CellularTest, GetCDMAActivationErrorString);
+  FRIEND_TEST(CellularTest, GetCDMANetworkTechnologyString);
   FRIEND_TEST(CellularTest, GetCDMARegistrationState);
+  FRIEND_TEST(CellularTest, GetCDMARoamingStateString);
   FRIEND_TEST(CellularTest, GetCDMASignalQuality);
+  FRIEND_TEST(CellularTest, GetGSMNetworkTechnologyString);
+  FRIEND_TEST(CellularTest, GetGSMRoamingStateString);
   FRIEND_TEST(CellularTest, GetModemInfo);
   FRIEND_TEST(CellularTest, GetModemStatus);
-  FRIEND_TEST(CellularTest, GetNetworkTechnologyString);
-  FRIEND_TEST(CellularTest, GetRoamingStateString);
   FRIEND_TEST(CellularTest, GetStateString);
   FRIEND_TEST(CellularTest, GetTypeString);
   FRIEND_TEST(CellularTest, InitProxiesCDMA);
   FRIEND_TEST(CellularTest, InitProxiesGSM);
   FRIEND_TEST(CellularTest, StartConnected);
   FRIEND_TEST(CellularTest, StartCDMARegister);
-  FRIEND_TEST(CellularTest, StartGSM);
+  FRIEND_TEST(CellularTest, StartGSMRegister);
   FRIEND_TEST(CellularTest, StartLinked);
 
+  struct CDMA {
+    CDMA();
+
+    uint32 registration_state_evdo;
+    uint32 registration_state_1x;
+    uint32 activation_state;
+
+    uint16 prl_version;
+    std::string payment_url;
+    std::string usage_url;
+  };
+
+  struct GSM {
+    GSM();
+
+    uint32 registration_state;
+    uint32 access_technology;
+    std::string network_id;
+    std::string operator_name;
+  };
+
   static const char kPhoneNumberCDMA[];
   static const char kPhoneNumberGSM[];
 
@@ -290,6 +301,7 @@
   scoped_ptr<ModemGSMNetworkProxyInterface> gsm_network_proxy_;
 
   CDMA cdma_;
+  GSM gsm_;
 
   CellularServiceRefPtr service_;