diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 52cb22fd86cb6bae9b15ae88fd6181d446e97f72..02bed999225867daad8bc6d0677a22849797fd8b 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 efa9cb9ff87f09109e73c94568a84adaf5aea8bc..28343a9d5e4a1e16af2e647e4335d49de02c0a63 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