Now also able to disconnect from the GPRS network

This commit is contained in:
Pierre Pronchery 2011-02-02 04:19:40 +00:00
parent 9c6b35783f
commit 7303a3802d
2 changed files with 74 additions and 47 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-02-01 23:22+0100\n" "POT-Creation-Date: 2011-02-02 05:19+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"
@ -16,184 +16,184 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../src/gsm.c:148 #: ../src/gsm.c:152
msgid "Phone failure" msgid "Phone failure"
msgstr "Défaillance du téléphone" msgstr "Défaillance du téléphone"
#: ../src/gsm.c:149 #: ../src/gsm.c:153
msgid "No connection to phone" msgid "No connection to phone"
msgstr "Pas de connexion au téléphone" msgstr "Pas de connexion au téléphone"
#: ../src/gsm.c:150 ../src/gsm.c:185 #: ../src/gsm.c:154 ../src/gsm.c:189
msgid "Operation not allowed" msgid "Operation not allowed"
msgstr "Opération non autorisée" msgstr "Opération non autorisée"
#: ../src/gsm.c:151 ../src/gsm.c:186 #: ../src/gsm.c:155 ../src/gsm.c:190
msgid "Operation not supported" msgid "Operation not supported"
msgstr "Opération non supportée" msgstr "Opération non supportée"
#: ../src/gsm.c:152 ../src/gsm.c:188 #: ../src/gsm.c:156 ../src/gsm.c:192
msgid "SIM not inserted" msgid "SIM not inserted"
msgstr "SIM non insérée" msgstr "SIM non insérée"
#: ../src/gsm.c:153 ../src/gsm.c:189 #: ../src/gsm.c:157 ../src/gsm.c:193
msgid "SIM PIN required" msgid "SIM PIN required"
msgstr "Code SIM PIN requis" msgstr "Code SIM PIN requis"
#: ../src/gsm.c:154 #: ../src/gsm.c:158
msgid "SIM PUK required" msgid "SIM PUK required"
msgstr "Code PUK requis" msgstr "Code PUK requis"
#: ../src/gsm.c:155 #: ../src/gsm.c:159
msgid "SIM failure" msgid "SIM failure"
msgstr "Défaillance SIM" msgstr "Défaillance SIM"
#: ../src/gsm.c:156 #: ../src/gsm.c:160
msgid "SIM busy" msgid "SIM busy"
msgstr "SIM occupée" msgstr "SIM occupée"
#: ../src/gsm.c:157 #: ../src/gsm.c:161
msgid "SIM wrong" msgid "SIM wrong"
msgstr "SIM erronée" msgstr "SIM erronée"
#: ../src/gsm.c:158 #: ../src/gsm.c:162
msgid "Incorrect password" msgid "Incorrect password"
msgstr "Mot de passe incorrect" msgstr "Mot de passe incorrect"
#: ../src/gsm.c:159 #: ../src/gsm.c:163
msgid "SIM PIN2 required" msgid "SIM PIN2 required"
msgstr "Code SIM PIN2 requis" msgstr "Code SIM PIN2 requis"
#: ../src/gsm.c:160 #: ../src/gsm.c:164
msgid "SIM PUK2 required" msgid "SIM PUK2 required"
msgstr "Code SIM PUK2 requis" msgstr "Code SIM PUK2 requis"
#: ../src/gsm.c:161 ../src/gsm.c:192 #: ../src/gsm.c:165 ../src/gsm.c:196
msgid "Memory full" msgid "Memory full"
msgstr "Mémoire pleine" msgstr "Mémoire pleine"
#: ../src/gsm.c:162 ../src/gsm.c:203 #: ../src/gsm.c:166 ../src/gsm.c:207
msgid "Invalid index" msgid "Invalid index"
msgstr "Index invalide" msgstr "Index invalide"
#: ../src/gsm.c:163 #: ../src/gsm.c:167
msgid "Not found" msgid "Not found"
msgstr "Non trouvé" msgstr "Non trouvé"
#: ../src/gsm.c:164 ../src/gsm.c:190 #: ../src/gsm.c:168 ../src/gsm.c:194
msgid "Memory failure" msgid "Memory failure"
msgstr "Défaillance mémoire" msgstr "Défaillance mémoire"
#: ../src/gsm.c:165 #: ../src/gsm.c:169
msgid "Text string too long" msgid "Text string too long"
msgstr "Texte trop long" msgstr "Texte trop long"
#: ../src/gsm.c:166 #: ../src/gsm.c:170
msgid "Invalid characters in text string" msgid "Invalid characters in text string"
msgstr "Caractère invalide dans le texte" msgstr "Caractère invalide dans le texte"
#: ../src/gsm.c:167 #: ../src/gsm.c:171
msgid "Dial string too long" msgid "Dial string too long"
msgstr "Le numéro composé est trop long" msgstr "Le numéro composé est trop long"
#: ../src/gsm.c:168 #: ../src/gsm.c:172
msgid "Invalid characters in dial string" msgid "Invalid characters in dial string"
msgstr "Caractères invalides dans le numéro" msgstr "Caractères invalides dans le numéro"
#: ../src/gsm.c:169 #: ../src/gsm.c:173
msgid "No network service" msgid "No network service"
msgstr "Pas de couverture réseau" msgstr "Pas de couverture réseau"
#: ../src/gsm.c:170 #: ../src/gsm.c:174
msgid "Network timeout" msgid "Network timeout"
msgstr "Délai d'attente du réseau dépassé" msgstr "Délai d'attente du réseau dépassé"
#: ../src/gsm.c:171 #: ../src/gsm.c:175
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:1280 ../src/gsm.c:1531 ../src/gsm.c:1591 #: ../src/gsm.c:176 ../src/gsm.c:1339 ../src/gsm.c:1590 ../src/gsm.c:1650
#: ../src/gsm.c:2133 #: ../src/gsm.c:2213
msgid "Unknown error" msgid "Unknown error"
msgstr "Erreur inconnue" msgstr "Erreur inconnue"
#: ../src/gsm.c:183 #: ../src/gsm.c:187
msgid "ME failure" msgid "ME failure"
msgstr "Défaillance ME" msgstr "Défaillance ME"
#: ../src/gsm.c:184 #: ../src/gsm.c:188
msgid "SMS service of ME reserved" msgid "SMS service of ME reserved"
msgstr "Service SMS du ME réservé" msgstr "Service SMS du ME réservé"
#: ../src/gsm.c:187 #: ../src/gsm.c:191
msgid "Invalid PDU mode parameter" msgid "Invalid PDU mode parameter"
msgstr "Paramètre de mode PDU invalide" msgstr "Paramètre de mode PDU invalide"
#: ../src/gsm.c:191 #: ../src/gsm.c:195
msgid "Invalid memory index" msgid "Invalid memory index"
msgstr "Index mémoire invalide" msgstr "Index mémoire invalide"
#: ../src/gsm.c:204 #: ../src/gsm.c:208
msgid "Parameter not allowed" msgid "Parameter not allowed"
msgstr "Paramètre non autorisé" msgstr "Paramètre non autorisé"
#: ../src/gsm.c:205 #: ../src/gsm.c:209
msgid "Data corrupted" msgid "Data corrupted"
msgstr "Données corrompues" msgstr "Données corrompues"
#: ../src/gsm.c:206 #: ../src/gsm.c:210
msgid "Internal error" msgid "Internal error"
msgstr "Erreur interne" msgstr "Erreur interne"
#: ../src/gsm.c:207 #: ../src/gsm.c:211
msgid "Call table full" msgid "Call table full"
msgstr "Table d'appel pleine" msgstr "Table d'appel pleine"
#: ../src/gsm.c:208 #: ../src/gsm.c:212
msgid "Service table full" msgid "Service table full"
msgstr "Table de service pleine" msgstr "Table de service pleine"
#: ../src/gsm.c:209 #: ../src/gsm.c:213
msgid "Call not found" msgid "Call not found"
msgstr "Appel non trouvé" msgstr "Appel non trouvé"
#: ../src/gsm.c:210 #: ../src/gsm.c:214
msgid "No data-call supported" msgid "No data-call supported"
msgstr "Les appels data ne sont pas gérés" msgstr "Les appels data ne sont pas gérés"
#: ../src/gsm.c:211 #: ../src/gsm.c:215
msgid "One call on hold" msgid "One call on hold"
msgstr "Un appel en attente" msgstr "Un appel en attente"
#: ../src/gsm.c:212 #: ../src/gsm.c:216
msgid "Hold call not supported for this type" msgid "Hold call not supported for this type"
msgstr "La mise en attente n'est pas gérée dans ce cas" msgstr "La mise en attente n'est pas gérée dans ce cas"
#: ../src/gsm.c:213 #: ../src/gsm.c:217
msgid "Number not allowed by FDN" msgid "Number not allowed by FDN"
msgstr "Numéro non autorisé par FDN" msgstr "Numéro non autorisé par FDN"
#: ../src/gsm.c:214 #: ../src/gsm.c:218
msgid "Number not allowed by BDN" msgid "Number not allowed by BDN"
msgstr "Numéro non autorisé par BDN" msgstr "Numéro non autorisé par BDN"
#: ../src/gsm.c:215 #: ../src/gsm.c:219
msgid "Parallel USSD not supported" msgid "Parallel USSD not supported"
msgstr "USSD parallèle non supporté" msgstr "USSD parallèle non supporté"
#: ../src/gsm.c:216 #: ../src/gsm.c:220
msgid "Fax minimum speed condition" msgid "Fax minimum speed condition"
msgstr "Vitesse minimum pour les fax" msgstr "Vitesse minimum pour les fax"
#: ../src/gsm.c:217 #: ../src/gsm.c:221
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:394 #: ../src/gsm.c:406
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:1119 #: ../src/gsm.c:1175
msgid "Event not handled" msgid "Event not handled"
msgstr "Événement non géré" msgstr "Événement non géré"

View File

@ -965,6 +965,12 @@ GSMCommand * gsm_queue(GSM * gsm, char const * command)
if(command == NULL || command[0] == '\0') if(command == NULL || command[0] == '\0')
return NULL; return NULL;
if(gsm->mode == GSM_MODE_DATA && strcmp(command, "ATH") == 0) /* XXX */
{
gsm_event(gsm, GSM_EVENT_TYPE_GPRS_ATTACHMENT, 0);
gsm_reset(gsm, 0, NULL);
return NULL;
}
if((gsmc = gsm_command_new(command)) == NULL) if((gsmc = gsm_command_new(command)) == NULL)
return NULL; return NULL;
if(gsm_queue_command(gsm, gsmc) == 0) if(gsm_queue_command(gsm, gsmc) == 0)
@ -1090,6 +1096,8 @@ int gsm_start(GSM * gsm, unsigned int delay)
/* gsm_stop */ /* gsm_stop */
static void _stop_channel(GIOChannel * channel);
int gsm_stop(GSM * gsm) int gsm_stop(GSM * gsm)
{ {
_gsm_event_send(gsm, GSM_EVENT_TYPE_OFFLINE); _gsm_event_send(gsm, GSM_EVENT_TYPE_OFFLINE);
@ -1098,16 +1106,34 @@ int gsm_stop(GSM * gsm)
if(gsm->source != 0) if(gsm->source != 0)
g_source_remove(gsm->source); g_source_remove(gsm->source);
gsm->source = 0; gsm->source = 0;
_stop_channel(gsm->channel);
gsm->channel = NULL;
if(gsm->rd_ppp_source != 0) if(gsm->rd_ppp_source != 0)
g_source_remove(gsm->rd_ppp_source); g_source_remove(gsm->rd_ppp_source);
_stop_channel(gsm->rd_ppp_channel);
gsm->rd_ppp_channel = NULL;
gsm->rd_ppp_source = 0; gsm->rd_ppp_source = 0;
if(gsm->wr_ppp_source != 0) if(gsm->wr_ppp_source != 0)
g_source_remove(gsm->wr_ppp_source); g_source_remove(gsm->wr_ppp_source);
gsm->wr_ppp_source = 0; gsm->wr_ppp_source = 0;
_stop_channel(gsm->wr_ppp_channel);
gsm->wr_ppp_channel = NULL;
_gsm_event_send(gsm, GSM_EVENT_TYPE_SUSPEND); _gsm_event_send(gsm, GSM_EVENT_TYPE_SUSPEND);
return 0; return 0;
} }
static void _stop_channel(GIOChannel * channel)
/* XXX code duplication with _reset_channel() */
{
GError * error = NULL;
if(channel == NULL)
return;
/* XXX should the file descriptor also be closed? */
g_io_channel_shutdown(channel, TRUE, &error);
g_io_channel_unref(channel);
}
/* private */ /* private */
/* functions */ /* functions */
@ -2303,6 +2329,7 @@ static gboolean _on_reset(gpointer data)
gsm->rd_ppp_channel = NULL; gsm->rd_ppp_channel = NULL;
_reset_channel(gsm->wr_ppp_channel); _reset_channel(gsm->wr_ppp_channel);
gsm->wr_ppp_channel = NULL; gsm->wr_ppp_channel = NULL;
gsm->mode = GSM_MODE_INIT;
if((fd = open(gsm->device, O_RDWR | O_NONBLOCK)) < 0 if((fd = open(gsm->device, O_RDWR | O_NONBLOCK)) < 0
|| _reset_do(gsm, fd) != 0) || _reset_do(gsm, fd) != 0)
{ {