From 39094852db9dea9c04ca88dfc3f1ac1642699182 Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Thu, 10 Apr 2003 21:14:54 +0000 Subject: [PATCH] Merge and edit Nick's dial support git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@813 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- CHANGES | 1 + channels/chan_zap.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 20e819ecf7..3b090a4502 100755 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,4 @@ + -- Merge and edit Nick's FXO dial support -- Reengineer SIP registration (outbound) -- Support call pickup on SIP and compatibly with ZAP -- Support 302 Redirect on SIP diff --git a/channels/chan_zap.c b/channels/chan_zap.c index fb3639d18c..fbfc0eb030 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -1174,6 +1174,23 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout) ast_log(LOG_WARNING, "Unable to reset default ring on '%s'\n", ast->name); p->cidrings = 1; } + + + /* nick@dccinc.com 4/3/03 mods to allow for deferred dialing */ + c = strchr(dest, '/'); + if (c) + c++; + if (c && (strlen(c) < p->stripmsd)) { + ast_log(LOG_WARNING, "Number '%s' is shorter than stripmsd (%d)\n", c, p->stripmsd); + c = NULL; + } + if (c) { + p->dop.op = ZT_DIAL_OP_REPLACE; + snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "T%s", c); + ast_log(LOG_DEBUG, "FXO: setup deferred dialstring: %s\n", c); + } else { + strcpy(p->dop.dialstr, ""); + } x = ZT_RING; if (ioctl(p->subs[SUB_REAL].zfd, ZT_HOOK, &x) && (errno != EINPROGRESS)) { ast_log(LOG_WARNING, "Unable to ring phone: %s\n", strerror(errno)); @@ -2565,7 +2582,18 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast) p->subs[index].f.frametype = AST_FRAME_NULL; p->subs[index].f.subclass = 0; } else - ast_setstate(ast, AST_STATE_UP); + ast_setstate(ast, AST_STATE_UP); + if (strlen(p->dop.dialstr)) { + /* nick@dccinc.com 4/3/03 - fxo should be able to do deferred dialing */ + res = ioctl(p->subs[SUB_REAL].zfd, ZT_DIAL, &p->dop); + if (res < 0) { + ast_log(LOG_WARNING, "Unable to initiate dialing on trunk channel %d\n", p->channel); + p->dop.dialstr[0] = '\0'; + return NULL; + } else + ast_log(LOG_DEBUG, "Sent deferred digit string: %s\n", p->dop.dialstr); + p->dop.dialstr[0] = '\0'; + } return &p->subs[index].f; case AST_STATE_DOWN: ast_setstate(ast, AST_STATE_RING); -- GitLab