Working some more on GPRS support

This commit is contained in:
Pierre Pronchery 2011-01-04 17:57:56 +00:00
parent fbcb1b9d0b
commit 3511d5e805
7 changed files with 53 additions and 26 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Phone 0.0.0\n" "Project-Id-Version: Phone 0.0.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-04 18:33+0100\n" "POT-Creation-Date: 2011-01-04 18:53+0100\n"
"PO-Revision-Date: 2010-04-24 02:07+0200\n" "PO-Revision-Date: 2010-04-24 02:07+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n" "Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: French\n" "Language-Team: French\n"
@ -112,8 +112,8 @@ msgstr "Délai d'attente du réseau dépassé"
msgid "Network not allowed - emergency calls only" msgid "Network not allowed - emergency calls only"
msgstr "Réseau non autorisé - appels d'urgence uniquement" msgstr "Réseau non autorisé - appels d'urgence uniquement"
#: ../src/gsm.c:172 ../src/gsm.c:1270 ../src/gsm.c:1494 ../src/gsm.c:1554 #: ../src/gsm.c:172 ../src/gsm.c:1273 ../src/gsm.c:1524 ../src/gsm.c:1584
#: ../src/gsm.c:2096 #: ../src/gsm.c:2126
msgid "Unknown error" msgid "Unknown error"
msgstr "Erreur inconnue" msgstr "Erreur inconnue"
@ -189,11 +189,11 @@ msgstr "Vitesse minimum pour les fax"
msgid "Conflict with command details" msgid "Conflict with command details"
msgstr "Conflit dans la syntaxe de commande" msgstr "Conflit dans la syntaxe de commande"
#: ../src/gsm.c:392 #: ../src/gsm.c:394
msgid ": Unknown baudrate, assuming 115200" msgid ": Unknown baudrate, assuming 115200"
msgstr ": Débit inconnu, tente 115200" msgstr ": Débit inconnu, tente 115200"
#: ../src/gsm.c:1109 #: ../src/gsm.c:1112
msgid "Event not handled" msgid "Event not handled"
msgstr "Événement non géré" msgstr "Événement non géré"
@ -472,35 +472,35 @@ msgstr "Le nom ne peut être vide"
msgid "The number cannot be empty" msgid "The number cannot be empty"
msgstr "Le numéro ne peut être vide" msgstr "Le numéro ne peut être vide"
#: ../src/phone.c:3153 #: ../src/phone.c:3155
msgid "New message received" msgid "New message received"
msgstr "Nouveau message reçu" msgstr "Nouveau message reçu"
#: ../src/phone.c:3169 #: ../src/phone.c:3171
msgid "Message sent" msgid "Message sent"
msgstr "Message envoyé" msgstr "Message envoyé"
#: ../src/phone.c:3202 #: ../src/phone.c:3204
msgid "SIM PIN is valid" msgid "SIM PIN is valid"
msgstr "Code SIM PIN valide" msgstr "Code SIM PIN valide"
#: ../src/phone.c:3254 #: ../src/phone.c:3256
msgid "Could not request new message indications" msgid "Could not request new message indications"
msgstr "Impossible d'obtenir des notifications de nouveaux messages" msgstr "Impossible d'obtenir des notifications de nouveaux messages"
#: ../src/phone.c:3265 #: ../src/phone.c:3267
msgid "Could not send message" msgid "Could not send message"
msgstr "Le message n'a pas pu être envoyé" msgstr "Le message n'a pas pu être envoyé"
#: ../src/phone.c:3273 #: ../src/phone.c:3275
msgid "Wrong SIM PIN code" msgid "Wrong SIM PIN code"
msgstr "Code SIM PIN erroné" msgstr "Code SIM PIN erroné"
#: ../src/phone.c:3309 #: ../src/phone.c:3311
msgid "Raw data (not shown)" msgid "Raw data (not shown)"
msgstr "Données brutes (non affichées)" msgstr "Données brutes (non affichées)"
#: ../src/phone.c:3324 #: ../src/phone.c:3326
msgid "Message deleted" msgid "Message deleted"
msgstr "Message supprimé" msgstr "Message supprimé"

View File

@ -265,6 +265,7 @@ static int _gsm_trigger_ccwa(GSM * gsm, char const * result);
static int _gsm_trigger_cfun(GSM * gsm, char const * result); static int _gsm_trigger_cfun(GSM * gsm, char const * result);
static int _gsm_trigger_cgatt(GSM * gsm, char const * result); static int _gsm_trigger_cgatt(GSM * gsm, char const * result);
static int _gsm_trigger_cgmm(GSM * gsm, char const * result); static int _gsm_trigger_cgmm(GSM * gsm, char const * result);
static int _gsm_trigger_cgreg(GSM * gsm, char const * result);
static int _gsm_trigger_clip(GSM * gsm, char const * result); static int _gsm_trigger_clip(GSM * gsm, char const * result);
static int _gsm_trigger_cme_error(GSM * gsm, char const * result, static int _gsm_trigger_cme_error(GSM * gsm, char const * result,
gboolean * answered); gboolean * answered);
@ -306,6 +307,7 @@ static GSMTrigger _gsm_triggers[] =
GSM_TRIGGER("+CFUN: ", cfun), GSM_TRIGGER("+CFUN: ", cfun),
GSM_TRIGGER("+CGATT: ", cgatt), GSM_TRIGGER("+CGATT: ", cgatt),
GSM_TRIGGER("+CGMM: ", cgmm), GSM_TRIGGER("+CGMM: ", cgmm),
GSM_TRIGGER("+CGREG: ", cgreg),
GSM_TRIGGER("+CLIP: ", clip), GSM_TRIGGER("+CLIP: ", clip),
GSM_TRIGGER("+CME ERROR: ", cme_error), GSM_TRIGGER("+CME ERROR: ", cme_error),
GSM_TRIGGER("+CMS ERROR: ", cms_error), GSM_TRIGGER("+CMS ERROR: ", cms_error),
@ -750,6 +752,7 @@ int gsm_event(GSM * gsm, GSMEventType type, ...)
GSMPhoneActivity); GSMPhoneActivity);
break; break;
case GSM_EVENT_TYPE_REGISTRATION: case GSM_EVENT_TYPE_REGISTRATION:
case GSM_EVENT_TYPE_GPRS_REGISTRATION:
event->registration.n = va_arg(ap, unsigned int); event->registration.n = va_arg(ap, unsigned int);
event->registration.stat = va_arg(ap, unsigned int); event->registration.stat = va_arg(ap, unsigned int);
event->registration.area = va_arg(ap, unsigned int); event->registration.area = va_arg(ap, unsigned int);
@ -1460,6 +1463,33 @@ static int _gsm_trigger_cgmm(GSM * gsm, char const * result)
} }
/* gsm_trigger_cgreg */
static int _gsm_trigger_cgreg(GSM * gsm, char const * result)
{
int ret;
int res;
#ifdef DEBUG
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, result);
#endif
if((res = sscanf(result, "%u,%u,%X,%X", &gsm->event.gprs_registration.n,
&gsm->event.gprs_registration.stat,
&gsm->event.gprs_registration.area,
&gsm->event.gprs_registration.cell))
== 4)
ret = _gsm_event_send(gsm, GSM_EVENT_TYPE_GPRS_REGISTRATION);
else if(res == 2)
{
gsm->event.gprs_registration.area = 0;
gsm->event.gprs_registration.cell = 0;
ret = _gsm_event_send(gsm, GSM_EVENT_TYPE_GPRS_REGISTRATION);
}
else
return 1;
return ret;
}
/* gsm_trigger_clip */ /* gsm_trigger_clip */
static int _gsm_trigger_clip(GSM * gsm, char const * result) static int _gsm_trigger_clip(GSM * gsm, char const * result)
{ {

View File

@ -91,6 +91,7 @@ typedef enum _GSMEventType
GSM_EVENT_TYPE_CONTACT_LIST, GSM_EVENT_TYPE_CONTACT_LIST,
GSM_EVENT_TYPE_FUNCTIONAL, GSM_EVENT_TYPE_FUNCTIONAL,
GSM_EVENT_TYPE_GPRS_ATTACHMENT, GSM_EVENT_TYPE_GPRS_ATTACHMENT,
GSM_EVENT_TYPE_GPRS_REGISTRATION,
GSM_EVENT_TYPE_INCOMING_CALL, GSM_EVENT_TYPE_INCOMING_CALL,
GSM_EVENT_TYPE_INCOMING_MESSAGE, GSM_EVENT_TYPE_INCOMING_MESSAGE,
GSM_EVENT_TYPE_MESSAGE, GSM_EVENT_TYPE_MESSAGE,
@ -111,13 +112,6 @@ typedef enum _GSMEventType
GSM_EVENT_TYPE_UNKNOWN GSM_EVENT_TYPE_UNKNOWN
} GSMEventType; } GSMEventType;
typedef enum _GSMGPRSRegistrationReport
{
GSM_GPRS_REGISTRATION_REPORT_DISABLE = 0,
GSM_GPRS_REGISTRATION_REPORT_ENABLE = 1,
GSM_GPRS_REGISTRATION_REPORT_ENABLE_WITH_LOCATION = 2
} GSMGPRSRegistrationReport;
typedef enum _GSMMessageFormat typedef enum _GSMMessageFormat
{ {
GSM_MESSAGE_FORMAT_PDU = 0, GSM_MESSAGE_FORMAT_PDU = 0,
@ -344,7 +338,7 @@ typedef union _GSMEvent
GSMRegistrationStatus stat; GSMRegistrationStatus stat;
unsigned int cell; unsigned int cell;
unsigned int area; unsigned int area;
} registration; } registration, gprs_registration;
/* GSM_EVENT_TYPE_SIGNAL_LEVEL */ /* GSM_EVENT_TYPE_SIGNAL_LEVEL */
struct struct

View File

@ -818,15 +818,15 @@ int gsm_modem_set_gprs_attachment(GSMModem * gsmm, gboolean set)
/* gsm_modem_set_gprs_registration_report */ /* gsm_modem_set_gprs_registration_report */
int gsm_modem_set_gprs_registration_report(GSMModem * gsmm, int gsm_modem_set_gprs_registration_report(GSMModem * gsmm,
GSMGPRSRegistrationReport report) GSMRegistrationReport report)
{ {
char cmd[] = "AT+CGREG=X"; char cmd[] = "AT+CGREG=X";
switch(report) switch(report)
{ {
case GSM_GPRS_REGISTRATION_REPORT_DISABLE: case GSM_REGISTRATION_REPORT_DISABLE:
case GSM_GPRS_REGISTRATION_REPORT_ENABLE: case GSM_REGISTRATION_REPORT_ENABLE:
case GSM_GPRS_REGISTRATION_REPORT_ENABLE_WITH_LOCATION: case GSM_REGISTRATION_REPORT_ENABLE_WITH_LOCATION:
break; break;
default: default:
return 1; return 1;

View File

@ -99,7 +99,7 @@ int gsm_modem_set_line_presentation(GSMModem * gsmm, gboolean set);
int gsm_modem_set_functional(GSMModem * gsmm, gboolean functional); int gsm_modem_set_functional(GSMModem * gsmm, gboolean functional);
int gsm_modem_set_gprs_attachment(GSMModem * gsmm, gboolean set); int gsm_modem_set_gprs_attachment(GSMModem * gsmm, gboolean set);
int gsm_modem_set_gprs_registration_report(GSMModem * gsmm, int gsm_modem_set_gprs_registration_report(GSMModem * gsmm,
GSMGPRSRegistrationReport report); GSMRegistrationReport report);
int gsm_modem_set_message_format(GSMModem * gsmm, GSMMessageFormat format); int gsm_modem_set_message_format(GSMModem * gsmm, GSMMessageFormat format);
int gsm_modem_set_message_indications(GSMModem * gsmm, GSMMessageMode mode, int gsm_modem_set_message_indications(GSMModem * gsmm, GSMMessageMode mode,
gboolean unsollicited); gboolean unsollicited);

View File

@ -3143,6 +3143,8 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
event->gprs_attachment.attached ? TRUE event->gprs_attachment.attached ? TRUE
: FALSE); : FALSE);
return 0; return 0;
case GSM_EVENT_TYPE_GPRS_REGISTRATION:
return 0; /* XXX not used at the moment */
case GSM_EVENT_TYPE_INCOMING_CALL: case GSM_EVENT_TYPE_INCOMING_CALL:
phone_show_call(phone, TRUE, PHONE_CALL_INCOMING, "", phone_show_call(phone, TRUE, PHONE_CALL_INCOMING, "",
""); "");

View File

@ -79,6 +79,7 @@ static struct
{ PHONE_EVENT_CALL_TERMINATED, "PHONE_EVENT_CALL_TERMINATED" }, { PHONE_EVENT_CALL_TERMINATED, "PHONE_EVENT_CALL_TERMINATED" },
{ PHONE_EVENT_CALLING, "PHONE_EVENT_CALLING" }, { PHONE_EVENT_CALLING, "PHONE_EVENT_CALLING" },
{ PHONE_EVENT_FUNCTIONAL, "PHONE_EVENT_FUNCTIONAL" }, { PHONE_EVENT_FUNCTIONAL, "PHONE_EVENT_FUNCTIONAL" },
{ PHONE_EVENT_GPRS_ATTACHMENT, "PHONE_EVENT_GPRS_ATTACHMENT" },
{ PHONE_EVENT_KEY_TONE, "PHONE_EVENT_KEY_TONE" }, { PHONE_EVENT_KEY_TONE, "PHONE_EVENT_KEY_TONE" },
{ PHONE_EVENT_OFFLINE, "PHONE_EVENT_OFFLINE" }, { PHONE_EVENT_OFFLINE, "PHONE_EVENT_OFFLINE" },
{ PHONE_EVENT_ONLINE, "PHONE_EVENT_ONLINE" }, { PHONE_EVENT_ONLINE, "PHONE_EVENT_ONLINE" },