AI 146565: am: CL 146315 am: CL 146314 modify GSM emulation to accomodate 1.0 and 1.1 system images.
  without this, networking doesn't work well when using the 1.1 add-on with
  the cupcake sdk
  Original author: digit
  Merged from: //branches/cupcake/...
  Original author: android-build

Automated import of CL 146565
diff --git a/telephony/android_modem.c b/telephony/android_modem.c
index 79e93b2..6e73411 100644
--- a/telephony/android_modem.c
+++ b/telephony/android_modem.c
@@ -190,6 +190,9 @@
 
 typedef struct AModemRec_
 {
+    /* Legacy support */
+    char          supportsNetworkDataType;
+
     /* Radio state */
     ARadioState   radio_state;
     int           area_code;
@@ -349,6 +352,7 @@
     AModem  modem = _android_modem;
 
     amodem_reset( modem );
+    modem->supportsNetworkDataType = 1;
     modem->base_port    = base_port;
     modem->unsol_func   = unsol_func;
     modem->unsol_opaque = unsol_opaque;
@@ -359,6 +363,12 @@
 }
 
 void
+amodem_set_legacy( AModem  modem )
+{
+    modem->supportsNetworkDataType = 0;
+}
+
+void
 amodem_destroy( AModem  modem )
 {
     asimcard_destroy( modem->sim );
@@ -444,10 +454,15 @@
             break;
 
         case A_REGISTRATION_UNSOL_ENABLED_FULL:
-            amodem_unsol( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\",\"%04x\"\r",
-                          modem->data_mode, modem->data_state,
-                          modem->area_code, modem->cell_id,
-                          modem->data_network );
+            if (modem->supportsNetworkDataType)
+                amodem_unsol( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\",\"%04x\"\r",
+                            modem->data_mode, modem->data_state,
+                            modem->area_code, modem->cell_id,
+                            modem->data_network );
+            else
+                amodem_unsol( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\"\r",
+                            modem->data_mode, modem->data_state,
+                            modem->area_code, modem->cell_id );
             break;
 
         default:
@@ -794,11 +809,16 @@
         }
     } else if ( !memcmp( cmd, "+CGREG", 6 ) ) {
         cmd += 6;
-        if (cmd[0] == '?') {\
-            return amodem_printf( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\",\"%04x\"",
-                                  modem->data_mode, modem->data_state,
-                                  modem->area_code, modem->cell_id,
-                                  modem->data_network );
+        if (cmd[0] == '?') {
+            if (modem->supportsNetworkDataType)
+                return amodem_printf( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\",\"%04x\"",
+                                    modem->data_mode, modem->data_state,
+                                    modem->area_code, modem->cell_id,
+                                    modem->data_network );
+            else
+                return amodem_printf( modem, "+CGREG: %d,%d,\"%04x\",\"%04x\"",
+                                    modem->data_mode, modem->data_state,
+                                    modem->area_code, modem->cell_id );
         } else if (cmd[0] == '=') {
             switch (cmd[1]) {
                 case '0':