Added another quirk for the Openmoko Freerunner

This commit is contained in:
Pierre Pronchery 2010-05-01 19:49:02 +00:00
parent 3a2c08debb
commit 6f39850241

View File

@ -50,7 +50,8 @@ typedef enum _GSMPriority
typedef enum _GSMQuirk typedef enum _GSMQuirk
{ {
GSM_QUIRK_NONE = 0, GSM_QUIRK_NONE = 0,
GSM_QUIRK_CPIN_QUOTES_NEWLINE GSM_QUIRK_CPIN_QUOTES_NEWLINE,
GSM_QUIRK_COPS_NEWLINE
} GSMQuirk; } GSMQuirk;
typedef void (*GSMCommandCallback)(GSM * gsm); typedef void (*GSMCommandCallback)(GSM * gsm);
@ -165,7 +166,8 @@ static struct
} _gsm_models[] = } _gsm_models[] =
{ {
{ "\"Neo1973 GTA02 Embedded GSM Modem\"", { "\"Neo1973 GTA02 Embedded GSM Modem\"",
GSM_QUIRK_CPIN_QUOTES_NEWLINE }, GSM_QUIRK_CPIN_QUOTES_NEWLINE
| GSM_QUIRK_COPS_NEWLINE },
{ NULL, 0 } { NULL, 0 }
}; };
@ -1186,7 +1188,7 @@ static int _gsm_modem_set_operator_format(GSM * gsm, GSMOperatorFormat format)
/* gsm_modem_set_operator_mode */ /* gsm_modem_set_operator_mode */
static int _gsm_modem_set_operator_mode(GSM * gsm, GSMOperatorMode mode) static int _gsm_modem_set_operator_mode(GSM * gsm, GSMOperatorMode mode)
{ {
char cmd[] = "AT+COPS=X"; char cmd[] = "AT+COPS=X\0";
switch(mode) switch(mode)
{ {
@ -1200,6 +1202,8 @@ static int _gsm_modem_set_operator_mode(GSM * gsm, GSMOperatorMode mode)
return 1; return 1;
} }
cmd[8] = mode + '0'; cmd[8] = mode + '0';
if(gsm->quirks & GSM_QUIRK_COPS_NEWLINE)
cmd[9] = '\n';
return (_gsm_queue(gsm, cmd) != NULL) ? 0 : 1; return (_gsm_queue(gsm, cmd) != NULL) ? 0 : 1;
} }