Also reset battery information when the modem is not available anymore
This commit is contained in:
parent
86f50f936e
commit
1425058415
@ -120,6 +120,13 @@ typedef enum _ModemRegistrationStatus
|
||||
MODEM_REGISTRATION_STATUS_DENIED
|
||||
} ModemRegistrationStatus;
|
||||
|
||||
typedef enum _ModemStatus
|
||||
{
|
||||
MODEM_STATUS_UNAVAILABLE = 0,
|
||||
MODEM_STATUS_OFFLINE,
|
||||
MODEM_STATUS_ONLINE
|
||||
} ModemStatus;
|
||||
|
||||
/* ModemConfig */
|
||||
typedef enum _ModemConfigType
|
||||
{
|
||||
@ -185,6 +192,7 @@ typedef union _ModemEvent
|
||||
ModemEventType type;
|
||||
ModemBatteryStatus status;
|
||||
double level;
|
||||
int charging;
|
||||
} battery_level;
|
||||
|
||||
/* MODEM_EVENT_TYPE_CALL */
|
||||
@ -268,7 +276,7 @@ typedef union _ModemEvent
|
||||
/* MODEM_EVENT_TYPE_STATUS */
|
||||
struct {
|
||||
ModemEventType type;
|
||||
int online;
|
||||
ModemStatus status;
|
||||
} status;
|
||||
} ModemEvent;
|
||||
|
||||
|
10
po/fr.po
10
po/fr.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Phone 0.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-08-22 03:22+0200\n"
|
||||
"POT-Creation-Date: 2011-08-24 00:46+0200\n"
|
||||
"PO-Revision-Date: 2010-04-24 02:07+0200\n"
|
||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||
"Language-Team: DeforaOS development (French) <devel-fr@lists.defora.org>\n"
|
||||
@ -311,21 +311,21 @@ msgstr "Le numéro ne peut être vide"
|
||||
msgid "Message sent"
|
||||
msgstr "Message envoyé"
|
||||
|
||||
#: ../src/phone.c:3728
|
||||
#: ../src/phone.c:3729
|
||||
#, c-format
|
||||
msgid "Wrong %s"
|
||||
msgstr "Mauvais %s"
|
||||
|
||||
#: ../src/phone.c:3735
|
||||
#: ../src/phone.c:3736
|
||||
#, c-format
|
||||
msgid "%s is valid"
|
||||
msgstr "%s valide"
|
||||
|
||||
#: ../src/phone.c:3800
|
||||
#: ../src/phone.c:3801
|
||||
msgid "Raw data (not shown)"
|
||||
msgstr "Données brutes (non affichées)"
|
||||
|
||||
#: ../src/phone.c:3833
|
||||
#: ../src/phone.c:3834
|
||||
msgid "Message deleted"
|
||||
msgstr "Message effacé"
|
||||
|
||||
|
@ -1030,9 +1030,15 @@ static int _hayes_stop(ModemPlugin * modem)
|
||||
event->registration._operator = NULL;
|
||||
event->registration.signal = 0.0 / 0.0;
|
||||
event->registration.roaming = 0;
|
||||
/* report as being offline */
|
||||
/* reset battery information */
|
||||
event = &hayes->events[MODEM_EVENT_TYPE_BATTERY_LEVEL];
|
||||
event->battery_level.status = MODEM_BATTERY_STATUS_UNKNOWN;
|
||||
event->battery_level.level = 0.0 / 0.0;
|
||||
event->battery_level.charging = 0;
|
||||
modem->helper->event(modem->helper->modem, event);
|
||||
/* report as being unavailable */
|
||||
event = &hayes->events[MODEM_EVENT_TYPE_STATUS];
|
||||
event->status.online = 0;
|
||||
event->status.status = MODEM_STATUS_UNAVAILABLE;
|
||||
modem->helper->event(modem->helper->modem, event);
|
||||
/* FIXME some more? */
|
||||
return 0;
|
||||
@ -1953,8 +1959,8 @@ static HayesCommandStatus _on_reset_callback(HayesCommand * command,
|
||||
_hayes_request(modem, &request);
|
||||
request.type = HAYES_REQUEST_FUNCTIONAL;
|
||||
_hayes_request(modem, &request);
|
||||
/* report being online */
|
||||
event->status.online = 1;
|
||||
/* report being offline */
|
||||
event->status.status = MODEM_STATUS_OFFLINE;
|
||||
modem->helper->event(modem->helper->modem, event);
|
||||
return HCS_SUCCESS;
|
||||
case HCS_TIMEOUT:
|
||||
@ -2532,6 +2538,7 @@ static void _on_trigger_cbc(ModemPlugin * modem, char const * answer)
|
||||
if((res = sscanf(answer, "%u,%u", &u, &v)) != 2)
|
||||
return;
|
||||
event->battery_level.status = MODEM_BATTERY_STATUS_UNKNOWN;
|
||||
event->battery_level.charging = 0;
|
||||
if(u == 0)
|
||||
u = MODEM_BATTERY_STATUS_CONNECTED;
|
||||
else if(u == 1)
|
||||
@ -2544,8 +2551,9 @@ static void _on_trigger_cbc(ModemPlugin * modem, char const * answer)
|
||||
u = MODEM_BATTERY_STATUS_UNKNOWN;
|
||||
switch((event->battery_level.status = u))
|
||||
{
|
||||
case MODEM_BATTERY_STATUS_CONNECTED:
|
||||
case MODEM_BATTERY_STATUS_CHARGING:
|
||||
event->battery_level.charging = 1;
|
||||
case MODEM_BATTERY_STATUS_CONNECTED:
|
||||
f = v;
|
||||
if(hayes->quirks & HAYES_QUIRK_BATTERY_70)
|
||||
f /= 70.0;
|
||||
@ -2564,18 +2572,22 @@ static void _on_trigger_cbc(ModemPlugin * modem, char const * answer)
|
||||
/* on_trigger_cfun */
|
||||
static void _on_trigger_cfun(ModemPlugin * modem, char const * answer)
|
||||
{
|
||||
unsigned int u;
|
||||
Hayes * hayes = modem->priv;
|
||||
ModemEvent * event = &hayes->events[MODEM_EVENT_TYPE_STATUS];
|
||||
ModemRequest request;
|
||||
unsigned int u;
|
||||
|
||||
if(sscanf(answer, "%u", &u) != 1)
|
||||
return;
|
||||
memset(&request, 0, sizeof(request));
|
||||
if(u != 1)
|
||||
{
|
||||
/* FIXME only enable if requested to */
|
||||
request.type = HAYES_REQUEST_FUNCTIONAL_ENABLE;
|
||||
event->status.status = MODEM_STATUS_OFFLINE;
|
||||
modem->helper->event(modem->helper->modem, event);
|
||||
return;
|
||||
}
|
||||
event->status.status = MODEM_STATUS_ONLINE;
|
||||
modem->helper->event(modem->helper->modem, event);
|
||||
memset(&request, 0, sizeof(request));
|
||||
request.type = HAYES_REQUEST_EXTENDED_RING_REPORTS;
|
||||
_hayes_request(modem, &request);
|
||||
request.type = MODEM_REQUEST_CALL_PRESENTATION;
|
||||
|
@ -3701,9 +3701,10 @@ static void _phone_modem_event(void * priv, ModemEvent * event)
|
||||
NULL);
|
||||
break;
|
||||
case MODEM_EVENT_TYPE_STATUS:
|
||||
pevent.type = (event->status.online != 0)
|
||||
? PHONE_EVENT_TYPE_ONLINE
|
||||
: PHONE_EVENT_TYPE_OFFLINE;
|
||||
if(event->status.status == MODEM_STATUS_ONLINE)
|
||||
pevent.type = PHONE_EVENT_TYPE_ONLINE;
|
||||
else /* XXX may not always be right */
|
||||
pevent.type = PHONE_EVENT_TYPE_OFFLINE;
|
||||
phone_event(phone, &pevent);
|
||||
break;
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user