Reporting errors when sending a message failed

This commit is contained in:
Pierre Pronchery 2012-09-01 00:50:34 +00:00
parent d11147fdf6
commit 128b8646ad
4 changed files with 20 additions and 6 deletions

View File

@ -252,13 +252,20 @@ typedef union _ModemEvent
char const * content; char const * content;
} message; } message;
/* MODEM_EVENT_TYPE_MESSAGE_DELETED, MODEM_EVENT_TYPE_MESSAGE_SENT */ /* MODEM_EVENT_TYPE_MESSAGE_DELETED */
struct struct
{ {
ModemEventType type; ModemEventType type;
unsigned int id; unsigned int id;
/* FIXME add a field for errors? */ } message_deleted;
} message_deleted, message_sent;
/* MODEM_EVENT_TYPE_MESSAGE_SENT */
struct
{
ModemEventType type;
char * error;
unsigned int id;
} message_sent;
/* MODEM_EVENT_TYPE_MODEL */ /* MODEM_EVENT_TYPE_MODEL */
struct struct

View File

@ -3541,6 +3541,7 @@ static void _on_code_cmgs(ModemPlugin * modem, char const * answer)
if(sscanf(answer, "%u", &u) != 1) if(sscanf(answer, "%u", &u) != 1)
return; return;
event->message_sent.error = NULL;
event->message_sent.id = u; event->message_sent.id = u;
hayes->helper->event(hayes->helper->modem, event); hayes->helper->event(hayes->helper->modem, event);
} }

View File

@ -491,8 +491,10 @@ static void _callback_message(ModemPlugin * modem, int status,
if(status == 200) if(status == 200)
helper->event(helper->modem, &mevent); helper->event(helper->modem, &mevent);
else else
/* FIXME really report an error */ {
mevent.message_sent.error = phrase;
helper->event(helper->modem, &mevent); helper->event(helper->modem, &mevent);
}
} }
static void _callback_register(ModemPlugin * modem, int status, static void _callback_register(ModemPlugin * modem, int status,

View File

@ -3996,8 +3996,12 @@ static void _phone_modem_event(void * priv, ModemEvent * event)
_phone_track(phone, PHONE_TRACK_MESSAGE_SENT, FALSE); _phone_track(phone, PHONE_TRACK_MESSAGE_SENT, FALSE);
phone->wr_progress = _phone_progress_delete( phone->wr_progress = _phone_progress_delete(
phone->wr_progress); phone->wr_progress);
_phone_info(phone, phone->wr_window, _("Message sent"), if(event->message_sent.error != NULL)
NULL); _phone_error(phone->wr_window,
event->message_sent.error, 0);
else
_phone_info(phone, phone->wr_window,
_("Message sent"), NULL);
break; break;
case MODEM_EVENT_TYPE_NOTIFICATION: case MODEM_EVENT_TYPE_NOTIFICATION:
phone_info(phone, event->notification.content); phone_info(phone, event->notification.content);