Now able to fetch the battery status

This commit is contained in:
Pierre Pronchery 2010-05-11 13:44:09 +00:00
parent bffc848369
commit 27799ec00f
6 changed files with 151 additions and 88 deletions

175
po/fr.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Phone 0.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-11 15:15+0200\n"
"POT-Creation-Date: 2010-05-10 09:21+0200\n"
"PO-Revision-Date: 2010-04-24 02:07+0200\n"
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
"Language-Team: French\n"
@ -16,123 +16,123 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../src/gsm.c:90
#: ../src/gsm.c:89
msgid "Phone failure"
msgstr "Défaillance du téléphone"
#: ../src/gsm.c:91
#: ../src/gsm.c:90
msgid "No connection to phone"
msgstr "Pas de connexion au téléphone"
#: ../src/gsm.c:92 ../src/gsm.c:127
#: ../src/gsm.c:91 ../src/gsm.c:126
msgid "Operation not allowed"
msgstr "Opération non autorisée"
#: ../src/gsm.c:93 ../src/gsm.c:128
#: ../src/gsm.c:92 ../src/gsm.c:127
msgid "Operation not supported"
msgstr "Opération non supportée"
#: ../src/gsm.c:94 ../src/gsm.c:130
#: ../src/gsm.c:93 ../src/gsm.c:129
msgid "SIM not inserted"
msgstr "SIM non insérée"
#: ../src/gsm.c:95 ../src/gsm.c:131
#: ../src/gsm.c:94 ../src/gsm.c:130
msgid "SIM PIN required"
msgstr "Code SIM PIN requis"
#: ../src/gsm.c:96
#: ../src/gsm.c:95
msgid "SIM PUK required"
msgstr "Code PUK requis"
#: ../src/gsm.c:97
#: ../src/gsm.c:96
msgid "SIM failure"
msgstr "Défaillance SIM"
#: ../src/gsm.c:98
#: ../src/gsm.c:97
msgid "SIM busy"
msgstr "SIM occupée"
#: ../src/gsm.c:99
#: ../src/gsm.c:98
msgid "SIM wrong"
msgstr "SIM erronée"
#: ../src/gsm.c:100
#: ../src/gsm.c:99
msgid "Incorrect password"
msgstr "Mot de passe incorrect"
#: ../src/gsm.c:101
#: ../src/gsm.c:100
msgid "SIM PIN2 required"
msgstr "Code SIM PIN2 requis"
#: ../src/gsm.c:102
#: ../src/gsm.c:101
msgid "SIM PUK2 required"
msgstr "Code SIM PUK2 requis"
#: ../src/gsm.c:103
#: ../src/gsm.c:102
msgid "Memory full"
msgstr "Mémoire pleine"
#: ../src/gsm.c:104
#: ../src/gsm.c:103
msgid "Invalid index"
msgstr "Index invalide"
#: ../src/gsm.c:105
#: ../src/gsm.c:104
msgid "Not found"
msgstr "Non trouvé"
#: ../src/gsm.c:106
#: ../src/gsm.c:105
msgid "Memory failure"
msgstr "Défaillance mémoire"
#: ../src/gsm.c:107
#: ../src/gsm.c:106
msgid "Text string too long"
msgstr "Texte trop long"
#: ../src/gsm.c:108
#: ../src/gsm.c:107
msgid "Invalid characters in text string"
msgstr "Caractère invalide dans le texte"
#: ../src/gsm.c:109
#: ../src/gsm.c:108
msgid "Dial string too long"
msgstr "Le numéro composé est trop long"
#: ../src/gsm.c:110
#: ../src/gsm.c:109
msgid "Invalid characters in dial string"
msgstr "Caractères invalides dans le numéro"
#: ../src/gsm.c:111
#: ../src/gsm.c:110
msgid "No network service"
msgstr "Pas de couverture réseau"
#: ../src/gsm.c:112
#: ../src/gsm.c:111
msgid "Network timeout"
msgstr "Délai d'attente du réseau dépassé"
#: ../src/gsm.c:113
#: ../src/gsm.c:112
msgid "Network not allowed - emergency calls only"
msgstr "Réseau non autorisé - appels d'urgence uniquement"
#: ../src/gsm.c:114 ../src/gsm.c:966 ../src/gsm.c:1148 ../src/gsm.c:1208
#: ../src/gsm.c:113 ../src/gsm.c:930 ../src/gsm.c:1113
msgid "Unknown error"
msgstr "Erreur inconnue"
#: ../src/gsm.c:125
#: ../src/gsm.c:124
msgid "ME failure"
msgstr "Défaillance ME"
#: ../src/gsm.c:126
#: ../src/gsm.c:125
msgid "SMS service of ME reserved"
msgstr "Service SMS du ME réservé"
#: ../src/gsm.c:129
#: ../src/gsm.c:128
msgid "Invalid PDU mode parameter"
msgstr "Paramètre de mode PDU invalide"
#: ../src/gsm.c:320
#: ../src/gsm.c:313
msgid ": Unknown baudrate"
msgstr ": Débit inconnu"
#: ../src/gsm.c:800
#: ../src/gsm.c:769
msgid "Event not handled"
msgstr "Événement non géré"
@ -145,192 +145,193 @@ msgid ""
" -F\tEnable hardware flow control (RTS/CTS)\n"
msgstr ""
#: ../src/phone.c:269
#: ../src/phone.c:247
msgid "Initializing..."
msgstr "Initialisation..."
#: ../src/phone.c:394
#: ../src/phone.c:371
msgid "Checking SIM PIN code..."
msgstr "Vérification du code SIM PIN..."
#: ../src/phone.c:628
#: ../src/phone.c:556
msgid "Answer"
msgstr "Répondre"
#: ../src/phone.c:635
#: ../src/phone.c:563
msgid "Hangup"
msgstr "Raccrocher"
#: ../src/phone.c:642
#: ../src/phone.c:570
msgid "Reject"
msgstr "Rejeter"
#: ../src/phone.c:665
#: ../src/phone.c:593
msgid "Loudspeaker"
msgstr "Haut-parleur"
#: ../src/phone.c:673
#: ../src/phone.c:601
msgid "Mute microphone"
msgstr "Couper le microphone"
#: ../src/phone.c:687
#: ../src/phone.c:615
msgid "Unknown contact"
msgstr "Contact inconnu"
#: ../src/phone.c:694
#: ../src/phone.c:622
msgid "Unknown number"
msgstr "Numéro inconnu"
#: ../src/phone.c:702
#: ../src/phone.c:630
msgid "In conversation"
msgstr "En conversation"
#: ../src/phone.c:709
#: ../src/phone.c:637
msgid "Incoming call"
msgstr "Appel entrant"
#: ../src/phone.c:715
#: ../src/phone.c:643
msgid "Outgoing call"
msgstr "Appel sortant"
#: ../src/phone.c:722
#: ../src/phone.c:650
msgid "Call finished"
msgstr "Appel terminé"
#: ../src/phone.c:775
#: ../src/phone.c:703
msgid "Enter"
msgstr "Entrer"
#: ../src/phone.c:777
#: ../src/phone.c:705
msgid "Skip"
msgstr "Ignorer"
#: ../src/phone.c:788
#: ../src/phone.c:716
msgid "Enter SIM PIN code"
msgstr "Entrer le code SIM PIN"
#: ../src/phone.c:817
#: ../src/phone.c:745
msgid "Contacts"
msgstr "Contacts"
#: ../src/phone.c:824 ../src/phone.c:1093 ../src/phone.c:1136
#: ../src/phone.c:1256
#: ../src/phone.c:752 ../src/phone.c:958 ../src/phone.c:1001
msgid "Call"
msgstr "Appeler"
#: ../src/phone.c:834
#: ../src/phone.c:762
msgid "Write"
msgstr "Écrire"
#: ../src/phone.c:856
#: ../src/phone.c:784
msgid "Contact"
msgstr "Contact"
#: ../src/phone.c:1065
#: ../src/phone.c:930
msgid "Dialer"
msgstr "Composer"
#: ../src/phone.c:1095
#: ../src/phone.c:960
msgid "Hang up"
msgstr "Raccrocher"
#: ../src/phone.c:1129
#: ../src/phone.c:994
msgid "Messages"
msgstr "Messages"
#: ../src/phone.c:1142
#: ../src/phone.c:1007
msgid "New message"
msgstr "Nouveau message"
#: ../src/phone.c:1148
#: ../src/phone.c:1013
msgid "Reply"
msgstr "Répondre"
#: ../src/phone.c:1166
#: ../src/phone.c:1031
msgid "Inbox"
msgstr "Reçus"
#: ../src/phone.c:1170
#: ../src/phone.c:1035
msgid "Sent"
msgstr "Envoyés"
#: ../src/phone.c:1189
msgid "From"
msgstr "De"
#: ../src/phone.c:1051
#, fuzzy
msgid "Message"
msgstr "Messages"
#: ../src/phone.c:1250
msgid "Read message"
msgstr "Lire le message"
#: ../src/phone.c:1327
#: ../src/phone.c:1082
msgid "Write message"
msgstr "Écrire un message"
#: ../src/phone.c:1333
#: ../src/phone.c:1088 ../src/phone.c:1094
msgid "Send"
msgstr "Envoyer"
#: ../src/phone.c:1339
msgid "Attach"
msgstr "Attacher"
#: ../src/phone.c:1425
#: ../src/phone.c:1180
#, c-format
msgid "%d message%s, %d/%d characters"
msgstr "%d message%s, %d/%d caractères"
#: ../src/phone.c:1426
#: ../src/phone.c:1181
msgid "s"
msgstr "s"
#: ../src/phone.c:1452
#: ../src/phone.c:1207
msgid "Sending message..."
msgstr "Envoi du message..."
#: ../src/phone.c:1555
#: ../src/phone.c:1310
msgid "Operation in progress..."
msgstr "Opération en cours..."
#: ../src/phone.c:1583 ../src/phone.c:1588
#: ../src/phone.c:1338 ../src/phone.c:1343
msgid "Error"
msgstr "Erreur"
#: ../src/phone.c:1634 ../src/phone.c:1639
#: ../src/phone.c:1394 ../src/phone.c:1399
msgid "Information"
msgstr "Information"
#: ../src/phone.c:1722
#: ../src/phone.c:1482
msgid "Unknown"
msgstr "Inconnu"
#: ../src/phone.c:1725
#: ../src/phone.c:1485
msgid "Registering..."
msgstr "Enregistrement..."
#: ../src/phone.c:1728
#: ../src/phone.c:1488
msgid "Denied"
msgstr "Refusé"
#: ../src/phone.c:1731
#: ../src/phone.c:1491
msgid "SIM check..."
msgstr "Vérification SIM..."
#: ../src/phone.c:1737
#: ../src/phone.c:1497
msgid "SIM ready..."
msgstr "SIM prête..."
#: ../src/phone.c:1854
#: ../src/phone.c:1609
msgid "Message sent"
msgstr "Message envoyé"
#: ../src/phone.c:1872
#: ../src/phone.c:1627
msgid "SIM PIN is valid"
msgstr "Code SIM PIN valide"
#: ../src/phone.c:1911
#: ../src/phone.c:1666
msgid "Could not send message"
msgstr "Le message n'a pas pu être envoyé"
#: ../src/phone.c:1919
#: ../src/phone.c:1674
msgid "Wrong SIM PIN code"
msgstr "Code SIM PIN erroné"
#~ msgid "From"
#~ msgstr "De"
#~ msgid "Read message"
#~ msgstr "Lire le message"
#~ msgid "Attach"
#~ msgstr "Attacher"

View File

@ -162,6 +162,7 @@ static int _gsm_queue_push(GSM * gsm);
/* triggers */
static int _gsm_trigger_busy(GSM * gsm, char const * result,
gboolean * answered);
static int _gsm_trigger_cbc(GSM * gsm, char const * result);
static int _gsm_trigger_cfun(GSM * gsm, char const * result);
static int _gsm_trigger_cgmm(GSM * gsm, char const * result);
static int _gsm_trigger_clip(GSM * gsm, char const * result);
@ -197,6 +198,7 @@ static GSMTrigger _gsm_triggers[] =
{ trigger, sizeof(trigger) - 1, \
(GSMTriggerCallback)_gsm_trigger_ ## callback }
GSM_TRIGGER("BUSY", busy),
GSM_TRIGGER("+CBC: ", cbc),
GSM_TRIGGER("+CFUN: ", cfun),
GSM_TRIGGER("+CGMM: ", cgmm),
GSM_TRIGGER("+CLIP: ", clip),
@ -509,6 +511,11 @@ int gsm_event(GSM * gsm, GSMEventType type, ...)
event->error.error = va_arg(ap, GSMError);
event->error.message = va_arg(ap, char const *);
break;
case GSM_EVENT_TYPE_BATTERY_CHARGE:
event->battery_charge.status = va_arg(ap,
GSMBatteryStatus);
event->battery_charge.level = va_arg(ap, unsigned int);
break;
case GSM_EVENT_TYPE_CALL_PRESENTATION:
event->call_presentation.number = va_arg(ap,
char const *);
@ -582,6 +589,13 @@ int gsm_event(GSM * gsm, GSMEventType type, ...)
}
/* gsm_fetch_battery_charge */
int gsm_fetch_battery_charge(GSM * gsm)
{
return gsm_modem_get_battery_charge(gsm->modem);
}
/* gsm_fetch_contact_list */
int gsm_fetch_contact_list(GSM * gsm)
{
@ -1082,6 +1096,20 @@ static int _gsm_trigger_busy(GSM * gsm, char const * result,
}
/* gsm_trigger_cbc */
static int _gsm_trigger_cbc(GSM * gsm, char const * result)
{
#ifdef DEBUG
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, result);
#endif
if(sscanf(result, "%u,%u", &gsm->event.battery_charge.status,
&gsm->event.battery_charge.level) != 2)
return gsm_event(gsm, GSM_EVENT_TYPE_ERROR,
GSM_ERROR_BATTERY_CHARGE_FAILED, result);
return _gsm_event_send(gsm, GSM_EVENT_TYPE_BATTERY_CHARGE);
}
/* gsm_trigger_cfun */
static int _gsm_trigger_cfun(GSM * gsm, char const * result)
{

View File

@ -25,6 +25,14 @@
/* types */
typedef struct _GSM GSM;
typedef enum _GSMBatteryStatus
{
GSM_BATTERY_STATUS_POWERED = 0,
GSM_BATTERY_STATUS_NOT_POWERED = 1,
GSM_BATTERY_STATUS_NO_BATTERY = 2,
GSM_BATTERY_STATUS_POWER_FAULT = 3
} GSMBatteryStatus;
typedef enum _GSMCallType
{
GSM_CALL_TYPE_UNKNOWN = 0,
@ -38,6 +46,7 @@ typedef void (*GSMCommandCallback)(GSM * gsm);
typedef enum _GSMEventType
{
GSM_EVENT_TYPE_ERROR = 0,
GSM_EVENT_TYPE_BATTERY_CHARGE,
GSM_EVENT_TYPE_CALL_PRESENTATION,
GSM_EVENT_TYPE_CONTACT,
GSM_EVENT_TYPE_CONTACT_LIST,
@ -59,6 +68,7 @@ typedef enum _GSMError
{
GSM_ERROR_UNKNOWN = 0,
GSM_ERROR_ANSWER_FAILED,
GSM_ERROR_BATTERY_CHARGE_FAILED,
GSM_ERROR_BUSY,
GSM_ERROR_CALL_FAILED,
GSM_ERROR_CONTACT_FETCH_FAILED,
@ -169,6 +179,14 @@ typedef union _GSMEvent
char const * message;
} error;
/* GSM_EVENT_TYPE_BATTERY_CHARGE */
struct
{
GSMEventType type;
GSMBatteryStatus status;
unsigned int level;
} battery_charge;
/* GSM_EVENT_TYPE_CALL_PRESENTATION */
struct
{
@ -313,6 +331,7 @@ int gsm_enter_sim_pin(GSM * gsm, char const * code);
int gsm_event(GSM * gsm, GSMEventType type, ...);
/* fetching data */
int gsm_fetch_battery_charge(GSM * gsm);
int gsm_fetch_contact_list(GSM * gsm);
int gsm_fetch_contacts(GSM * gsm, unsigned int start, unsigned int end);
int gsm_fetch_message_list(GSM * gsm, GSMMessageList list);

View File

@ -235,6 +235,16 @@ static void _modem_enter_sim_pin_callback(GSM * gsm)
}
/* gsm_modem_get_battery_charge */
int gsm_modem_get_battery_charge(GSMModem * gsmm)
{
char const cmd[] = "AT+CBC";
return gsm_queue_with_error(gsmm->gsm, cmd,
GSM_ERROR_BATTERY_CHARGE_FAILED);
}
/* gsm_modem_get_contact_list */
int gsm_modem_get_contact_list(GSMModem * gsmm)
{

View File

@ -51,6 +51,7 @@ int gsm_modem_call_reject(GSMModem * gsmm);
int gsm_modem_enter_sim_pin(GSMModem * gsmm, char const * code);
int gsm_modem_get_battery_charge(GSMModem * gsmm);
int gsm_modem_get_contact_list(GSMModem * gsmm);
int gsm_modem_get_contacts(GSMModem * gsmm, unsigned int start,
unsigned int end);

View File

@ -885,6 +885,7 @@ static struct
} _debug_gsm_commands[] =
{
{ "Answer call", gsm_call_answer },
{ "Battery charge", gsm_fetch_battery_charge },
{ "Contact list", gsm_fetch_contact_list },
{ "Hangup call", gsm_call_hangup },
{ "Messages", _gsm_fetch_message_list_all },
@ -965,7 +966,7 @@ void phone_show_debug(Phone * phone, gboolean show)
g_signal_connect(G_OBJECT(widget), "clicked", G_CALLBACK(
gtk_main_quit), NULL);
gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 4);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, TRUE, 4);
gtk_container_add(GTK_CONTAINER(phone->de_window), vbox);
gtk_widget_show_all(vbox);
}
@ -1785,6 +1786,9 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
{
case GSM_EVENT_TYPE_ERROR:
return _gsm_event_error(phone, event);
case GSM_EVENT_TYPE_BATTERY_CHARGE:
/* FIXME implement */
return 0;
case GSM_EVENT_TYPE_CALL_PRESENTATION:
/* FIXME convert number, the contact is automatic */
phone_show_call(phone, TRUE, PHONE_CALL_INCOMING, "",