Now able to send DTMF tones through the user interface
This commit is contained in:
parent
52fdb4d2df
commit
a1a19fa861
@ -202,6 +202,9 @@ int modem_request_type(Modem * modem, ModemRequestType type, ...)
|
|||||||
case MODEM_REQUEST_CONTACT_DELETE:
|
case MODEM_REQUEST_CONTACT_DELETE:
|
||||||
request.contact_delete.id = va_arg(ap, unsigned int);
|
request.contact_delete.id = va_arg(ap, unsigned int);
|
||||||
break;
|
break;
|
||||||
|
case MODEM_REQUEST_DTMF_SEND:
|
||||||
|
request.dtmf_send.dtmf = va_arg(ap, unsigned int);
|
||||||
|
break;
|
||||||
case MODEM_REQUEST_MESSAGE:
|
case MODEM_REQUEST_MESSAGE:
|
||||||
case MODEM_REQUEST_MESSAGE_DELETE:
|
case MODEM_REQUEST_MESSAGE_DELETE:
|
||||||
request.message.id = va_arg(ap, unsigned int);
|
request.message.id = va_arg(ap, unsigned int);
|
||||||
|
@ -344,6 +344,7 @@ static int _debug_request(ModemPlugin * modem, ModemRequest * request)
|
|||||||
ModemPluginHelper * helper = debug->helper;
|
ModemPluginHelper * helper = debug->helper;
|
||||||
ModemEvent event;
|
ModemEvent event;
|
||||||
unsigned int u;
|
unsigned int u;
|
||||||
|
char buf[32];
|
||||||
|
|
||||||
if(request == NULL)
|
if(request == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
@ -380,6 +381,13 @@ static int _debug_request(ModemPlugin * modem, ModemRequest * request)
|
|||||||
= request->contact_new.number;
|
= request->contact_new.number;
|
||||||
helper->event(helper->modem, &debug->event_contact);
|
helper->event(helper->modem, &debug->event_contact);
|
||||||
break;
|
break;
|
||||||
|
case MODEM_REQUEST_DTMF_SEND:
|
||||||
|
u = request->dtmf_send.dtmf;
|
||||||
|
snprintf(buf, sizeof(buf), "Sending DTMF '%c'\n", u);
|
||||||
|
event.type = MODEM_EVENT_TYPE_NOTIFICATION;
|
||||||
|
event.notification.content = buf;
|
||||||
|
debug->helper->event(debug->helper->modem, &event);
|
||||||
|
break;
|
||||||
case MODEM_REQUEST_MESSAGE_DELETE:
|
case MODEM_REQUEST_MESSAGE_DELETE:
|
||||||
event.type = MODEM_EVENT_TYPE_MESSAGE_DELETED;
|
event.type = MODEM_EVENT_TYPE_MESSAGE_DELETED;
|
||||||
event.message_deleted.id = request->message_delete.id;
|
event.message_deleted.id = request->message_delete.id;
|
||||||
|
@ -172,6 +172,7 @@ struct _Phone
|
|||||||
GtkWidget * ab_window;
|
GtkWidget * ab_window;
|
||||||
|
|
||||||
/* call */
|
/* call */
|
||||||
|
ModemCallStatus ca_status;
|
||||||
GtkWidget * ca_window;
|
GtkWidget * ca_window;
|
||||||
GtkWidget * ca_name;
|
GtkWidget * ca_name;
|
||||||
GtkWidget * ca_number;
|
GtkWidget * ca_number;
|
||||||
@ -445,6 +446,7 @@ Phone * phone_new(char const * plugin, int retry)
|
|||||||
phone->bold = pango_font_description_new();
|
phone->bold = pango_font_description_new();
|
||||||
pango_font_description_set_weight(phone->bold, PANGO_WEIGHT_BOLD);
|
pango_font_description_set_weight(phone->bold, PANGO_WEIGHT_BOLD);
|
||||||
phone->en_method = MODEM_AUTHENTICATION_METHOD_NONE;
|
phone->en_method = MODEM_AUTHENTICATION_METHOD_NONE;
|
||||||
|
phone->ca_status = MODEM_CALL_STATUS_NONE;
|
||||||
phone->co_store = gtk_list_store_new(PHONE_CONTACT_COLUMN_COUNT,
|
phone->co_store = gtk_list_store_new(PHONE_CONTACT_COLUMN_COUNT,
|
||||||
G_TYPE_UINT, G_TYPE_UINT, GDK_TYPE_PIXBUF,
|
G_TYPE_UINT, G_TYPE_UINT, GDK_TYPE_PIXBUF,
|
||||||
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
|
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
|
||||||
@ -877,7 +879,6 @@ int phone_dialer_append(Phone * phone, char character)
|
|||||||
if((character < '0' || character > '9') && character != '*'
|
if((character < '0' || character > '9') && character != '*'
|
||||||
&& character != '+' && character != '#')
|
&& character != '+' && character != '#')
|
||||||
return -1; /* ignore the error */
|
return -1; /* ignore the error */
|
||||||
/* FIXME if in a call send DTMF instead */
|
|
||||||
text = gtk_entry_get_text(GTK_ENTRY(phone->di_entry));
|
text = gtk_entry_get_text(GTK_ENTRY(phone->di_entry));
|
||||||
len = strlen(text) + 2;
|
len = strlen(text) + 2;
|
||||||
if((p = malloc(len)) == NULL)
|
if((p = malloc(len)) == NULL)
|
||||||
@ -885,6 +886,10 @@ int phone_dialer_append(Phone * phone, char character)
|
|||||||
snprintf(p, len, "%s%c", text, character);
|
snprintf(p, len, "%s%c", text, character);
|
||||||
gtk_entry_set_text(GTK_ENTRY(phone->di_entry), p);
|
gtk_entry_set_text(GTK_ENTRY(phone->di_entry), p);
|
||||||
free(p);
|
free(p);
|
||||||
|
if(phone->ca_status == MODEM_CALL_STATUS_ACTIVE)
|
||||||
|
/* send a DTMF */
|
||||||
|
modem_request_type(phone->modem, MODEM_REQUEST_DTMF_SEND,
|
||||||
|
character);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4065,6 +4070,7 @@ static void _modem_event_call(Phone * phone, ModemEvent * event)
|
|||||||
fprintf(stderr, "DEBUG: %s() %u %u\n", __func__, event->call.call_type,
|
fprintf(stderr, "DEBUG: %s() %u %u\n", __func__, event->call.call_type,
|
||||||
event->call.status);
|
event->call.status);
|
||||||
#endif
|
#endif
|
||||||
|
phone->ca_status = event->call.status;
|
||||||
if(event->call.call_type != MODEM_CALL_TYPE_VOICE
|
if(event->call.call_type != MODEM_CALL_TYPE_VOICE
|
||||||
|| event->call.number == NULL)
|
|| event->call.number == NULL)
|
||||||
return; /* XXX ignore these for now */
|
return; /* XXX ignore these for now */
|
||||||
|
Loading…
Reference in New Issue
Block a user