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':