From 45b91a90e17a9ddd5c04a5387e7f7f45259bc3a8 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Mon, 13 Sep 2004 23:07:50 +0000
Subject: [PATCH] Add pulse dial support

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3774 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_zap.c        | 10 ++++++++++
 configs/zapata.conf.sample |  4 ++++
 2 files changed, 14 insertions(+)

diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 52cb22fd86..02bed99922 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -203,6 +203,8 @@ static int echocancel;
 
 static int echotraining;
 
+static int pulse;
+
 static int echocanbridged = 0;
 
 static int busydetect = 0;
@@ -489,6 +491,7 @@ static struct zt_pvt {
 	int callwaitrings;
 	int echocancel;
 	int echotraining;
+	int pulse;
 	int echocanbridged;
 	int echocanon;
 	int echobreak;
@@ -1669,6 +1672,9 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout)
 		if (p->sig == SIG_FEATB) {
 			snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "M*%s#", c + p->stripmsd);
 		} else 
+ 		if(p->pulse)
+ 			snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "P%sw", c + p->stripmsd);
+ 		else
 			snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "T%sw", c + p->stripmsd);
 		if (p->echotraining && (strlen(p->dop.dialstr) > 4)) {
 			memset(p->echorest, 'w', sizeof(p->echorest) - 1);
@@ -6173,6 +6179,7 @@ static struct zt_pvt *mkintf(int channel, int signalling, int radio, struct zt_p
 		tmp->callreturn = callreturn;
 		tmp->echocancel = echocancel;
 		tmp->echotraining = echotraining;
+		tmp->pulse = pulse;
 		tmp->echocanbridged = echocanbridged;
 		tmp->busydetect = busydetect;
 		tmp->busycount = busycount;
@@ -8944,6 +8951,8 @@ static int setup_zap(void)
 				echotraining = 0;
 		} else if (!strcasecmp(v->name, "hidecallerid")) {
 			hidecallerid = ast_true(v->value);
+ 		} else if (!strcasecmp(v->name, "pulsedial")) {
+ 			pulse = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "callreturn")) {
 			callreturn = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "callwaiting")) {
@@ -9838,3 +9847,4 @@ char *key()
 {
 	return ASTERISK_GPL_KEY;
 }
+
diff --git a/configs/zapata.conf.sample b/configs/zapata.conf.sample
index efa9cb9ff8..28343a9d5e 100755
--- a/configs/zapata.conf.sample
+++ b/configs/zapata.conf.sample
@@ -308,6 +308,10 @@ immediate=no
 ;callprogress=yes
 ;progzone=us
 ;
+; For FXO (FXS signalled) devices, whether to use pulse dial instead of DTMF
+;
+;pulsedial=yes
+;
 ; For fax detection, uncomment one of the following lines.  The default is *OFF*
 ;
 ;faxdetect=both
-- 
GitLab