From 3eff99d3bd62cbbc176c71f77a2df495f4e46e62 Mon Sep 17 00:00:00 2001
From: Yalu Zhang <yalu.zhang@iopsys.eu>
Date: Thu, 14 Mar 2024 15:52:47 +0100
Subject: [PATCH] Support K-break signal

(cherry picked from commit 10476ca2acd5bdad8062eb355d9c3558845c85cb)
---
 libvoice/common.c       | 3 ++-
 libvoice/libvoice.h     | 1 +
 line.c                  | 6 ++++++
 schemas/ubus/endpt.json | 3 ++-
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/libvoice/common.c b/libvoice/common.c
index a7d1311..d2ace08 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 dcb5d90..d5123ec 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 ab81b1c..531049f 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 9fa58a4..a586240 100644
--- a/schemas/ubus/endpt.json
+++ b/schemas/ubus/endpt.json
@@ -64,7 +64,8 @@
                                 "dtmf8",
                                 "dtmf9",
                                 "dtmf*",
-                                "dtmf#"
+                                "dtmf#",
+                                "k-break"
                             ]
                         },
                         "state": {
-- 
GitLab