From ce87d2977f6342fe2a351f7d473c4acf187b94a5 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Tue, 28 Dec 2004 21:32:25 +0000
Subject: [PATCH] Make cidrings configurable (bug #2889)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_zap.c        | 9 ++++++++-
 configs/zapata.conf.sample | 7 +++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 8d2a321d92..f45a4f3275 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -277,6 +277,9 @@ static int hanguponpolarityswitch = 0;
 /* How long (ms) to ignore Polarity Switch events after we answer a call */
 static int polarityonanswerdelay = 600;
 
+/* When to send the CallerID signals (rings) */
+static int sendcalleridafter = DEFAULT_CIDRINGS;
+
 /* Protect the monitoring thread, so only one process can kill or start it, and not
    when it's doing something critical. */
 AST_MUTEX_DEFINE_STATIC(monlock);
@@ -566,6 +569,7 @@ static struct zt_pvt {
 	int hanguponpolarityswitch;
 	int polarityonanswerdelay;
 	struct timeval polaritydelaytv;
+	int sendcalleridafter;
 #ifdef ZAPATA_PRI
 	struct zt_pri *pri;
 	struct zt_pvt *bearer;
@@ -1567,7 +1571,7 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout)
 			} else {
 				if (ioctl(p->subs[SUB_REAL].zfd, ZT_SETCADENCE, NULL))
 					ast_log(LOG_WARNING, "Unable to reset default ring on '%s'\n", ast->name);
-				p->cidrings = DEFAULT_CIDRINGS;
+				p->cidrings = p->sendcalleridafter;
 			}
 
 
@@ -6652,6 +6656,7 @@ static struct zt_pvt *mkintf(int channel, int signalling, int radio, struct zt_p
 
 		tmp->polarityonanswerdelay = polarityonanswerdelay;
 		tmp->hanguponpolarityswitch = hanguponpolarityswitch;
+		tmp->sendcalleridafter = sendcalleridafter;
 
 	}
 	if (tmp && !here) {
@@ -9809,6 +9814,8 @@ static int setup_zap(int reload)
 				polarityonanswerdelay = atoi(v->value);
 			} else if (!strcasecmp(v->name, "hanguponpolarityswitch")) {
 				hanguponpolarityswitch = ast_true(v->value);
+			} else if (!strcasecmp(v->name, "sendcalleridafter")) {
+				sendcalleridafter = atoi(v->value);
 			} 
 		} else 
 			ast_log(LOG_WARNING, "Ignoring %s\n", v->name);
diff --git a/configs/zapata.conf.sample b/configs/zapata.conf.sample
index e65ff7c0a4..60095e61e1 100755
--- a/configs/zapata.conf.sample
+++ b/configs/zapata.conf.sample
@@ -186,6 +186,13 @@ callwaiting=yes
 ;
 usecallingpres=yes
 ;
+; Some countries (UK) have ring tones with different ring tones (ring-ring),
+; which means the callerid needs to be set later on, and not just after
+; the first ring, as per the default. 
+;
+;sendcalleridafter=1
+;
+;
 ; Support Caller*ID on Call Waiting
 ;
 callwaitingcallerid=yes
-- 
GitLab