aboutsummaryrefslogtreecommitdiffstats
path: root/telephony/android_modem.c
diff options
context:
space:
mode:
authorDavid Turner <>2009-04-18 20:50:40 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-04-18 20:50:40 -0700
commit6f290f2b9d23e763d78a0e0f2c203c3b28f095e7 (patch)
tree607c852be25de73bc0a7e65e3b7455984d319cca /telephony/android_modem.c
parent94088e208d1cf4bb62e63ec64bf562c07847ef75 (diff)
downloadexternal_qemu-6f290f2b9d23e763d78a0e0f2c203c3b28f095e7.zip
external_qemu-6f290f2b9d23e763d78a0e0f2c203c3b28f095e7.tar.gz
external_qemu-6f290f2b9d23e763d78a0e0f2c203c3b28f095e7.tar.bz2
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
Diffstat (limited to 'telephony/android_modem.c')
-rw-r--r--telephony/android_modem.c38
1 files changed, 29 insertions, 9 deletions
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 {
typedef struct AModemRec_
{
+ /* Legacy support */
+ char supportsNetworkDataType;
+
/* Radio state */
ARadioState radio_state;
int area_code;
@@ -349,6 +352,7 @@ amodem_create( int base_port, AModemUnsolFunc unsol_func, void* unsol_opaque
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 @@ amodem_create( int base_port, AModemUnsolFunc unsol_func, void* unsol_opaque
}
void
+amodem_set_legacy( AModem modem )
+{
+ modem->supportsNetworkDataType = 0;
+}
+
+void
amodem_destroy( AModem modem )
{
asimcard_destroy( modem->sim );
@@ -444,10 +454,15 @@ amodem_set_data_registration( AModem modem, ARegistrationState state )
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 @@ handleNetworkRegistration( const char* cmd, AModem modem )
}
} 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':