[Asterisk-cvs] asterisk/channels chan_zap.c,1.143,1.144

markster at lists.digium.com markster at lists.digium.com
Fri Nov 21 12:12:23 CST 2003


Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv11652/channels

Modified Files:
	chan_zap.c 
Log Message:
Make CALLTYPE available


Index: chan_zap.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_zap.c,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -d -r1.143 -r1.144
--- chan_zap.c	21 Nov 2003 18:24:49 -0000	1.143
+++ chan_zap.c	21 Nov 2003 18:38:42 -0000	1.144
@@ -2511,7 +2511,7 @@
 
 static void *ss_thread(void *data);
 
-static struct ast_channel *zt_new(struct zt_pvt *, int, int, int, int);
+static struct ast_channel *zt_new(struct zt_pvt *, int, int, int, int, int);
 
 static int attempt_transfer(struct zt_pvt *p)
 {
@@ -3018,7 +3018,7 @@
 									(ast->_state == AST_STATE_RING)) {
 								if (!alloc_sub(p, SUB_THREEWAY)) {
 									/* Make new channel */
-									chan = zt_new(p, AST_STATE_RESERVED, 0, SUB_THREEWAY, 0);
+									chan = zt_new(p, AST_STATE_RESERVED, 0, SUB_THREEWAY, 0, 0);
 									/* Swap things around between the three-way and real call */
 									swap_subs(p, SUB_THREEWAY, SUB_REAL);
 									/* Disable echo canceller for better dialing */
@@ -3727,7 +3727,34 @@
 	return res;
 }
 
-static struct ast_channel *zt_new(struct zt_pvt *i, int state, int startpbx, int index, int law)
+#ifdef ZAPATA_PRI
+static void set_calltype(struct ast_channel *chan, int ctype)
+{
+	char *s = "UNKNOWN";
+	switch(ctype) {
+	case PRI_TRANS_CAP_SPEECH:
+		s = "SPEECH";
+		break;
+	case PRI_TRANS_CAP_DIGITAL:
+		s = "DIGITAL";
+		break;
+	case PRI_TRANS_CAP_RESTRICTED_DIGITAL:
+		s = "RESTRICTED_DIGITAL";
+		break;
+	case PRI_TRANS_CAP_3_1K_AUDIO:
+		s = "31KAUDIO";
+		break;
+	case PRI_TRANS_CAP_7K_AUDIO:
+		s = "7KAUDIO";
+		break;
+	case PRI_TRANS_CAP_VIDEO:
+		s = "VIDEO";
+		break;
+	}
+	pbx_builtin_setvar_helper(chan, "CALLTYPE", s);
+}
+#endif
+static struct ast_channel *zt_new(struct zt_pvt *i, int state, int startpbx, int index, int law, int ctype)
 {
 	struct ast_channel *tmp;
 	int deflaw;
@@ -3853,6 +3880,7 @@
 		tmp->restrictcid = i->restrictcid;
 		tmp->callingpres = i->callingpres;
 #ifdef ZAPATA_PRI
+		set_calltype(tmp, ctype);
 		/* Assume calls are not idle calls unless we're told differently */
 		i->isidlecall = 0;
 		i->alreadyhungup = 0;
@@ -4560,7 +4588,7 @@
 				zt_enable_ec(i);
 				/* The channel is immediately up.  Start right away */
 				res = tone_zone_play_tone(i->subs[SUB_REAL].zfd, ZT_TONE_RINGTONE);
-				chan = zt_new(i, AST_STATE_RING, 1, SUB_REAL, 0);
+				chan = zt_new(i, AST_STATE_RING, 1, SUB_REAL, 0, 0);
 				if (!chan) {
 					ast_log(LOG_WARNING, "Unable to start PBX on channel %d\n", i->channel);
 					res = tone_zone_play_tone(i->subs[SUB_REAL].zfd, ZT_TONE_CONGESTION);
@@ -4569,7 +4597,7 @@
 				}
 			} else {
 				/* Check for callerid, digits, etc */
-				chan = zt_new(i, AST_STATE_RESERVED, 0, SUB_REAL, 0);
+				chan = zt_new(i, AST_STATE_RESERVED, 0, SUB_REAL, 0, 0);
 				if (chan) {
 					if (has_voicemail(i))
 #ifdef ZT_TONE_STUTTER
@@ -4611,7 +4639,7 @@
 		case SIG_SF_FEATB:
 		case SIG_SF:
 				/* Check for callerid, digits, etc */
-				chan = zt_new(i, AST_STATE_RING, 0, SUB_REAL, 0);
+				chan = zt_new(i, AST_STATE_RING, 0, SUB_REAL, 0, 0);
 				if (pthread_create(&threadid, &attr, ss_thread, chan)) {
 					ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
 					res = tone_zone_play_tone(i->subs[SUB_REAL].zfd, ZT_TONE_CONGESTION);
@@ -5527,7 +5555,7 @@
 				}
 			}
 			p->outgoing = 1;
-			tmp = zt_new(p, AST_STATE_RESERVED, 0, p->owner ? SUB_CALLWAIT : SUB_REAL, 0);
+			tmp = zt_new(p, AST_STATE_RESERVED, 0, p->owner ? SUB_CALLWAIT : SUB_REAL, 0, 0);
 			/* Make special notes */
 			if (res > 1) {
 				if (opt == 'c') {
@@ -6061,7 +6089,7 @@
 						/* Get the use_callingpres state */
 						pri->pvt[chan]->callingpres = e->ring.callingpres;
 						/* Start PBX */
-						c = zt_new(pri->pvt[chan], AST_STATE_RING, 1, SUB_REAL, law);
+						c = zt_new(pri->pvt[chan], AST_STATE_RING, 1, SUB_REAL, law, e->ring.ctype);
 						if (c) {
 							if (option_verbose > 2)
 								ast_verbose(VERBOSE_PREFIX_3 "Accepting call from '%s' to '%s' on channel %d, span %d\n",




More information about the svn-commits mailing list