diff --git a/libvoice/voice-types.h b/libvoice/voice-types.h index 07a21fd6ac67557951061ad1201110be5c2043c5..949cb96b42feeb8f72331f6bd860c03e1933b67b 100644 --- a/libvoice/voice-types.h +++ b/libvoice/voice-types.h @@ -41,11 +41,13 @@ enum voice_dtmf_mode { #define UBUS_DATA_CODEC_BIT 1 #define UBUS_DATA_PTIME_BIT (1<<1) #define UBUS_DATA_DTMF_BIT (1<<2) +#define UBUS_DATA_DTMF_PT_BIT (1<<3) struct config_update_struct { uint8_t mask; // 8 bit mask enum VOICE_CODEC codec; int ptime; enum voice_dtmf_mode dtmf_mode; + int dtmf_pt; // add more if needed }; diff --git a/ubus.c b/ubus.c index b651c6ecc1f7a2b683328d6e7aa61c090e841e8f..32e57a458a38e236d72200a6272ea936b45546d0 100644 --- a/ubus.c +++ b/ubus.c @@ -42,6 +42,7 @@ enum { CONNECTION_DATA_CODEC, CONNECTION_DATA_PTIME, CONNECTION_DATA_DTMF_MODE, + CONNECTION_DATA_DTMF_PT, __CONNECTION_MAX, }; @@ -147,6 +148,7 @@ static const struct blobmsg_policy request_connection_policy[] = { [CONNECTION_DATA_CODEC] = { .name = "codec", .type = BLOBMSG_TYPE_INT32 }, [CONNECTION_DATA_PTIME] = { .name = "ptime", .type = BLOBMSG_TYPE_INT32 }, [CONNECTION_DATA_DTMF_MODE] = { .name = "dtmf_mode", .type = BLOBMSG_TYPE_INT32 }, + [CONNECTION_DATA_DTMF_PT] = { .name = "dtmf_pt", .type = BLOBMSG_TYPE_INT32 }, }; static const struct blobmsg_policy request_count_policy[] = { @@ -631,6 +633,7 @@ static int ubus_request_connection(struct ubus_context *uctx, struct ubus_object .codec = VOICE_CODEC_G711A, .ptime = 0, .dtmf_mode = VOICE_DTMF_RFC_4733, + .dtmf_pt = 101, }; if (keys[CONNECTION_DATA_CODEC]){ @@ -645,6 +648,10 @@ static int ubus_request_connection(struct ubus_context *uctx, struct ubus_object data.dtmf_mode = blobmsg_get_u32(keys[CONNECTION_DATA_DTMF_MODE]); data.mask = data.mask|UBUS_DATA_DTMF_BIT; } + if (keys[CONNECTION_DATA_DTMF_PT]){ + data.dtmf_pt = blobmsg_get_u32(keys[CONNECTION_DATA_DTMF_PT]); + data.mask = data.mask|UBUS_DATA_DTMF_PT_BIT; + } ENDPT_DBG("line: %d connection_id: %d action: %s\n", line, id, action_str); if (strcmp("create", action_str) == 0) {