diff --git a/libvoice/common.c b/libvoice/common.c index a7d1311c149ffa0e3a9bed346c6c53cf9c3f42aa..d2ace089236100f9c4d99bddd2015309c11bc617 100644 --- a/libvoice/common.c +++ b/libvoice/common.c @@ -72,7 +72,8 @@ const struct voice_signal_t signal_map[] = { // List of signals requested by Ast { .name = "dtmfC", .signal = VOICE_SIG_DTMFC }, { .name = "dtmfD", .signal = VOICE_SIG_DTMFD }, { .name = "keypad", .signal = VOICE_SIG_INGRESS_DTMF }, - { .name = "answer", .signal = VOICE_SIG_ANSWER }, + { .name = "answer", .signal = VOICE_SIG_ANSWER }, + { .name = "k-break", .signal = VOICE_SIG_K_BREAK }, { .name = "", .signal = VOICE_SIG_LAST }, }; diff --git a/libvoice/libvoice.h b/libvoice/libvoice.h index dcb5d90e79474afd48ef6b532c4d11399b0ec15f..d5123ec9ca004348a428e37f809f618bd42b95bc 100644 --- a/libvoice/libvoice.h +++ b/libvoice/libvoice.h @@ -96,6 +96,7 @@ enum VOICE_SIGNAL { VOICE_SIG_DTMFD, VOICE_SIG_INGRESS_DTMF, // Simulate phone keypad button pressing VOICE_SIG_ANSWER, + VOICE_SIG_K_BREAK, VOICE_SIG_LAST }; diff --git a/line.c b/line.c index ab81b1c197dd4e0f2c23f5b49c5fb2908e23e4ef..531049f9f675bff038230bc18b48142b148b7a93 100644 --- a/line.c +++ b/line.c @@ -366,6 +366,12 @@ int line_signal(int line, const char *signame, const char *data, struct voice_ub } break; + case VOICE_SIG_K_BREAK: + if (lines[line].type == VOICE_LINE_FXS) { + res = voice_line_signal(line, -1, sig->signal, atoi(data), NULL); + } + break; + default: res = voice_line_signal(line, -1, sig->signal, atoi(data), NULL); break; diff --git a/schemas/ubus/endpt.json b/schemas/ubus/endpt.json index 9fa58a4a6be58d09e88f381895432f8579363511..a586240a2bbb37577f8b943836381cde86ad08ea 100644 --- a/schemas/ubus/endpt.json +++ b/schemas/ubus/endpt.json @@ -64,7 +64,8 @@ "dtmf8", "dtmf9", "dtmf*", - "dtmf#" + "dtmf#", + "k-break" ] }, "state": {