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;
} message;
/* MODEM_EVENT_TYPE_MESSAGE_DELETED, MODEM_EVENT_TYPE_MESSAGE_SENT */
/* MODEM_EVENT_TYPE_MESSAGE_DELETED */
struct
{
ModemEventType type;
unsigned int id;
/* FIXME add a field for errors? */
} message_deleted, message_sent;
} message_deleted;
/* MODEM_EVENT_TYPE_MESSAGE_SENT */
struct
{
ModemEventType type;
char * error;
unsigned int id;
} message_sent;
/* MODEM_EVENT_TYPE_MODEL */
struct

View File

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

View File

@ -491,8 +491,10 @@ static void _callback_message(ModemPlugin * modem, int status,
if(status == 200)
helper->event(helper->modem, &mevent);
else
/* FIXME really report an error */
{
mevent.message_sent.error = phrase;
helper->event(helper->modem, &mevent);
}
}
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->wr_progress = _phone_progress_delete(
phone->wr_progress);
_phone_info(phone, phone->wr_window, _("Message sent"),
NULL);
if(event->message_sent.error != NULL)
_phone_error(phone->wr_window,
event->message_sent.error, 0);
else
_phone_info(phone, phone->wr_window,
_("Message sent"), NULL);
break;
case MODEM_EVENT_TYPE_NOTIFICATION:
phone_info(phone, event->notification.content);