Supporting generic notifications (through plug-ins)
This commit is contained in:
parent
dd545af274
commit
ce93087feb
|
@ -45,6 +45,13 @@ typedef enum _PhoneEncoding
|
||||||
PHONE_ENCODING_DATA
|
PHONE_ENCODING_DATA
|
||||||
} PhoneEncoding;
|
} PhoneEncoding;
|
||||||
|
|
||||||
|
typedef enum _PhoneNotificationType
|
||||||
|
{
|
||||||
|
PHONE_NOTIFICATION_TYPE_INFO = 0,
|
||||||
|
PHONE_NOTIFICATION_TYPE_ERROR,
|
||||||
|
PHONE_NOTIFICATION_TYPE_WARNING
|
||||||
|
} PhoneNotificationType;
|
||||||
|
|
||||||
typedef enum _PhoneEventType
|
typedef enum _PhoneEventType
|
||||||
{
|
{
|
||||||
PHONE_EVENT_TYPE_KEY_TONE,
|
PHONE_EVENT_TYPE_KEY_TONE,
|
||||||
|
@ -55,6 +62,7 @@ typedef enum _PhoneEventType
|
||||||
char **, size_t * */
|
char **, size_t * */
|
||||||
PHONE_EVENT_TYPE_MESSAGE_SENT,
|
PHONE_EVENT_TYPE_MESSAGE_SENT,
|
||||||
PHONE_EVENT_TYPE_MODEM_EVENT, /* ModemEvent * event */
|
PHONE_EVENT_TYPE_MODEM_EVENT, /* ModemEvent * event */
|
||||||
|
PHONE_EVENT_TYPE_NOTIFICATION,
|
||||||
PHONE_EVENT_TYPE_NOTIFICATION_OFF,
|
PHONE_EVENT_TYPE_NOTIFICATION_OFF,
|
||||||
PHONE_EVENT_TYPE_NOTIFICATION_ON, /* char const * message? */
|
PHONE_EVENT_TYPE_NOTIFICATION_ON, /* char const * message? */
|
||||||
PHONE_EVENT_TYPE_OFFLINE,
|
PHONE_EVENT_TYPE_OFFLINE,
|
||||||
|
@ -85,6 +93,13 @@ typedef union _PhoneEvent
|
||||||
ModemEvent * event;
|
ModemEvent * event;
|
||||||
} modem_event;
|
} modem_event;
|
||||||
|
|
||||||
|
/* PHONE_EVENT_TYPE_NOTIFICATION */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
PhoneEventType type;
|
||||||
|
char const * message;
|
||||||
|
} notification;
|
||||||
|
|
||||||
/* PHONE_EVENT_TYPE_VOLUME_GET, PHONE_EVENT_TYPE_VOLUME_SET */
|
/* PHONE_EVENT_TYPE_VOLUME_GET, PHONE_EVENT_TYPE_VOLUME_SET */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
|
13
src/phone.c
13
src/phone.c
|
@ -619,6 +619,9 @@ int phone_error(Phone * phone, char const * message, int ret)
|
||||||
{
|
{
|
||||||
if(phone == NULL)
|
if(phone == NULL)
|
||||||
return _error_text(message, ret);
|
return _error_text(message, ret);
|
||||||
|
if(phone_event_type(phone, PHONE_EVENT_TYPE_NOTIFICATION,
|
||||||
|
PHONE_NOTIFICATION_TYPE_ERROR, message) != 0)
|
||||||
|
return ret;
|
||||||
return _phone_error(NULL, message, ret);
|
return _phone_error(NULL, message, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1001,6 +1004,11 @@ int phone_event_type(Phone * phone, PhoneEventType type, ...)
|
||||||
event.modem_event.event = va_arg(ap, ModemEvent *);
|
event.modem_event.event = va_arg(ap, ModemEvent *);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
break;
|
break;
|
||||||
|
case PHONE_EVENT_TYPE_NOTIFICATION:
|
||||||
|
event.notification.type = va_arg(ap,
|
||||||
|
PhoneNotificationType);
|
||||||
|
event.notification.message = va_arg(ap, char const *);
|
||||||
|
break;
|
||||||
case PHONE_EVENT_TYPE_VOLUME_GET:
|
case PHONE_EVENT_TYPE_VOLUME_GET:
|
||||||
level = va_arg(ap, double *);
|
level = va_arg(ap, double *);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
@ -1027,7 +1035,9 @@ int phone_event_type(Phone * phone, PhoneEventType type, ...)
|
||||||
/* phone_info */
|
/* phone_info */
|
||||||
void phone_info(Phone * phone, char const * message)
|
void phone_info(Phone * phone, char const * message)
|
||||||
{
|
{
|
||||||
_phone_info(phone, NULL, message, NULL);
|
if(phone_event_type(phone, PHONE_EVENT_TYPE_NOTIFICATION,
|
||||||
|
PHONE_NOTIFICATION_TYPE_INFO, message) == 0)
|
||||||
|
_phone_info(phone, NULL, message, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4053,6 +4063,7 @@ static void _modem_event_authentication(Phone * phone, ModemEvent * event)
|
||||||
phone_code_clear(phone);
|
phone_code_clear(phone);
|
||||||
if(name == NULL)
|
if(name == NULL)
|
||||||
break;
|
break;
|
||||||
|
/* FIXME turn this into a simple notification */
|
||||||
snprintf(buf, sizeof(buf), _("%s is valid"), name);
|
snprintf(buf, sizeof(buf), _("%s is valid"), name);
|
||||||
_phone_info(phone, phone->en_window, buf, callback);
|
_phone_info(phone, phone->en_window, buf, callback);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -103,6 +103,7 @@ static DebugPhoneEvent _debug_phone_events[] =
|
||||||
{
|
{
|
||||||
{ PHONE_EVENT_TYPE_KEY_TONE, "KEY_TONE" },
|
{ PHONE_EVENT_TYPE_KEY_TONE, "KEY_TONE" },
|
||||||
{ PHONE_EVENT_TYPE_MODEM_EVENT, "MODEM_EVENT" },
|
{ PHONE_EVENT_TYPE_MODEM_EVENT, "MODEM_EVENT" },
|
||||||
|
{ PHONE_EVENT_TYPE_NOTIFICATION, "NOTIFICATION" },
|
||||||
{ PHONE_EVENT_TYPE_NOTIFICATION_OFF, "NOTIFICATION_OFF" },
|
{ PHONE_EVENT_TYPE_NOTIFICATION_OFF, "NOTIFICATION_OFF" },
|
||||||
{ PHONE_EVENT_TYPE_NOTIFICATION_ON, "NOTIFICATION_ON" },
|
{ PHONE_EVENT_TYPE_NOTIFICATION_ON, "NOTIFICATION_ON" },
|
||||||
{ PHONE_EVENT_TYPE_ONLINE, "ONLINE" },
|
{ PHONE_EVENT_TYPE_ONLINE, "ONLINE" },
|
||||||
|
|
Loading…
Reference in New Issue
Block a user