diff -Naur asterisk.orig/channels/chan_zap.c asterisk/channels/chan_zap.c --- asterisk.orig/channels/chan_zap.c 2004-06-25 19:59:55.000000000 +0300 +++ asterisk/channels/chan_zap.c 2004-06-25 20:00:06.000000000 +0300 @@ -195,6 +195,8 @@ static int echotraining; +static int pulse; + static int echocanbridged = 0; static int busydetect = 0; @@ -475,6 +477,7 @@ int callwaitrings; int echocancel; int echotraining; + int pulse; int echocanbridged; int echocanon; int echobreak; @@ -1644,6 +1647,9 @@ 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 (strlen(p->dop.dialstr) > 4) { memset(p->echorest, 'w', sizeof(p->echorest) - 1); @@ -6034,6 +6040,7 @@ tmp->callreturn = callreturn; tmp->echocancel = echocancel; tmp->echotraining = echotraining; + tmp->pulse = pulse; tmp->echocanbridged = echocanbridged; tmp->busydetect = busydetect; tmp->busycount = busycount; @@ -8617,6 +8624,8 @@ echotraining = 0; } else if (!strcasecmp(v->name, "hidecallerid")) { hidecallerid = ast_true(v->value); + } else if (!strcasecmp(v->name, "pulse")) { + pulse = ast_true(v->value); } else if (!strcasecmp(v->name, "callreturn")) { callreturn = ast_true(v->value); } else if (!strcasecmp(v->name, "callwaiting")) { @@ -9456,3 +9465,4 @@ { return ASTERISK_GPL_KEY; } +