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
|
MODEM_REGISTRATION_STATUS_DENIED
|
||||||
} ModemRegistrationStatus;
|
} ModemRegistrationStatus;
|
||||||
|
|
||||||
|
typedef enum _ModemStatus
|
||||||
|
{
|
||||||
|
MODEM_STATUS_UNAVAILABLE = 0,
|
||||||
|
MODEM_STATUS_OFFLINE,
|
||||||
|
MODEM_STATUS_ONLINE
|
||||||
|
} ModemStatus;
|
||||||
|
|
||||||
/* ModemConfig */
|
/* ModemConfig */
|
||||||
typedef enum _ModemConfigType
|
typedef enum _ModemConfigType
|
||||||
{
|
{
|
||||||
@ -185,6 +192,7 @@ typedef union _ModemEvent
|
|||||||
ModemEventType type;
|
ModemEventType type;
|
||||||
ModemBatteryStatus status;
|
ModemBatteryStatus status;
|
||||||
double level;
|
double level;
|
||||||
|
int charging;
|
||||||
} battery_level;
|
} battery_level;
|
||||||
|
|
||||||
/* MODEM_EVENT_TYPE_CALL */
|
/* MODEM_EVENT_TYPE_CALL */
|
||||||
@ -268,7 +276,7 @@ typedef union _ModemEvent
|
|||||||
/* MODEM_EVENT_TYPE_STATUS */
|
/* MODEM_EVENT_TYPE_STATUS */
|
||||||
struct {
|
struct {
|
||||||
ModemEventType type;
|
ModemEventType type;
|
||||||
int online;
|
ModemStatus status;
|
||||||
} status;
|
} status;
|
||||||
} ModemEvent;
|
} ModemEvent;
|
||||||
|
|
||||||
|
10
po/fr.po
10
po/fr.po
@ -8,7 +8,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-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"
|
"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: DeforaOS development (French) <devel-fr@lists.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"
|
msgid "Message sent"
|
||||||
msgstr "Message envoyé"
|
msgstr "Message envoyé"
|
||||||
|
|
||||||
#: ../src/phone.c:3728
|
#: ../src/phone.c:3729
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wrong %s"
|
msgid "Wrong %s"
|
||||||
msgstr "Mauvais %s"
|
msgstr "Mauvais %s"
|
||||||
|
|
||||||
#: ../src/phone.c:3735
|
#: ../src/phone.c:3736
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is valid"
|
msgid "%s is valid"
|
||||||
msgstr "%s valide"
|
msgstr "%s valide"
|
||||||
|
|
||||||
#: ../src/phone.c:3800
|
#: ../src/phone.c:3801
|
||||||
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:3833
|
#: ../src/phone.c:3834
|
||||||
msgid "Message deleted"
|
msgid "Message deleted"
|
||||||
msgstr "Message effacé"
|
msgstr "Message effacé"
|
||||||
|
|
||||||
|
@ -1030,9 +1030,15 @@ static int _hayes_stop(ModemPlugin * modem)
|
|||||||
event->registration._operator = NULL;
|
event->registration._operator = NULL;
|
||||||
event->registration.signal = 0.0 / 0.0;
|
event->registration.signal = 0.0 / 0.0;
|
||||||
event->registration.roaming = 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 = &hayes->events[MODEM_EVENT_TYPE_STATUS];
|
||||||
event->status.online = 0;
|
event->status.status = MODEM_STATUS_UNAVAILABLE;
|
||||||
modem->helper->event(modem->helper->modem, event);
|
modem->helper->event(modem->helper->modem, event);
|
||||||
/* FIXME some more? */
|
/* FIXME some more? */
|
||||||
return 0;
|
return 0;
|
||||||
@ -1953,8 +1959,8 @@ static HayesCommandStatus _on_reset_callback(HayesCommand * command,
|
|||||||
_hayes_request(modem, &request);
|
_hayes_request(modem, &request);
|
||||||
request.type = HAYES_REQUEST_FUNCTIONAL;
|
request.type = HAYES_REQUEST_FUNCTIONAL;
|
||||||
_hayes_request(modem, &request);
|
_hayes_request(modem, &request);
|
||||||
/* report being online */
|
/* report being offline */
|
||||||
event->status.online = 1;
|
event->status.status = MODEM_STATUS_OFFLINE;
|
||||||
modem->helper->event(modem->helper->modem, event);
|
modem->helper->event(modem->helper->modem, event);
|
||||||
return HCS_SUCCESS;
|
return HCS_SUCCESS;
|
||||||
case HCS_TIMEOUT:
|
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)
|
if((res = sscanf(answer, "%u,%u", &u, &v)) != 2)
|
||||||
return;
|
return;
|
||||||
event->battery_level.status = MODEM_BATTERY_STATUS_UNKNOWN;
|
event->battery_level.status = MODEM_BATTERY_STATUS_UNKNOWN;
|
||||||
|
event->battery_level.charging = 0;
|
||||||
if(u == 0)
|
if(u == 0)
|
||||||
u = MODEM_BATTERY_STATUS_CONNECTED;
|
u = MODEM_BATTERY_STATUS_CONNECTED;
|
||||||
else if(u == 1)
|
else if(u == 1)
|
||||||
@ -2544,8 +2551,9 @@ static void _on_trigger_cbc(ModemPlugin * modem, char const * answer)
|
|||||||
u = MODEM_BATTERY_STATUS_UNKNOWN;
|
u = MODEM_BATTERY_STATUS_UNKNOWN;
|
||||||
switch((event->battery_level.status = u))
|
switch((event->battery_level.status = u))
|
||||||
{
|
{
|
||||||
case MODEM_BATTERY_STATUS_CONNECTED:
|
|
||||||
case MODEM_BATTERY_STATUS_CHARGING:
|
case MODEM_BATTERY_STATUS_CHARGING:
|
||||||
|
event->battery_level.charging = 1;
|
||||||
|
case MODEM_BATTERY_STATUS_CONNECTED:
|
||||||
f = v;
|
f = v;
|
||||||
if(hayes->quirks & HAYES_QUIRK_BATTERY_70)
|
if(hayes->quirks & HAYES_QUIRK_BATTERY_70)
|
||||||
f /= 70.0;
|
f /= 70.0;
|
||||||
@ -2564,18 +2572,22 @@ static void _on_trigger_cbc(ModemPlugin * modem, char const * answer)
|
|||||||
/* on_trigger_cfun */
|
/* on_trigger_cfun */
|
||||||
static void _on_trigger_cfun(ModemPlugin * modem, char const * answer)
|
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;
|
ModemRequest request;
|
||||||
|
unsigned int u;
|
||||||
|
|
||||||
if(sscanf(answer, "%u", &u) != 1)
|
if(sscanf(answer, "%u", &u) != 1)
|
||||||
return;
|
return;
|
||||||
memset(&request, 0, sizeof(request));
|
|
||||||
if(u != 1)
|
if(u != 1)
|
||||||
{
|
{
|
||||||
/* FIXME only enable if requested to */
|
event->status.status = MODEM_STATUS_OFFLINE;
|
||||||
request.type = HAYES_REQUEST_FUNCTIONAL_ENABLE;
|
modem->helper->event(modem->helper->modem, event);
|
||||||
return;
|
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;
|
request.type = HAYES_REQUEST_EXTENDED_RING_REPORTS;
|
||||||
_hayes_request(modem, &request);
|
_hayes_request(modem, &request);
|
||||||
request.type = MODEM_REQUEST_CALL_PRESENTATION;
|
request.type = MODEM_REQUEST_CALL_PRESENTATION;
|
||||||
|
@ -3701,9 +3701,10 @@ static void _phone_modem_event(void * priv, ModemEvent * event)
|
|||||||
NULL);
|
NULL);
|
||||||
break;
|
break;
|
||||||
case MODEM_EVENT_TYPE_STATUS:
|
case MODEM_EVENT_TYPE_STATUS:
|
||||||
pevent.type = (event->status.online != 0)
|
if(event->status.status == MODEM_STATUS_ONLINE)
|
||||||
? PHONE_EVENT_TYPE_ONLINE
|
pevent.type = PHONE_EVENT_TYPE_ONLINE;
|
||||||
: PHONE_EVENT_TYPE_OFFLINE;
|
else /* XXX may not always be right */
|
||||||
|
pevent.type = PHONE_EVENT_TYPE_OFFLINE;
|
||||||
phone_event(phone, &pevent);
|
phone_event(phone, &pevent);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user