[asterisk-commits] dbailey: trunk r169153 - in /trunk: channels/ configs/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sat Jan 17 12:26:44 CST 2009


Author: dbailey
Date: Sat Jan 17 12:26:44 2009
New Revision: 169153

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=169153
Log:
Add discriminator for when ring pulse alert signal is used to preface MWI spills
This prevents the situation when MWI messages are added to caller ID spills causing the channel to be hung up

Modified:
    trunk/channels/chan_dahdi.c
    trunk/configs/chan_dahdi.conf.sample

Modified: trunk/channels/chan_dahdi.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_dahdi.c?view=diff&rev=169153&r1=169152&r2=169153
==============================================================================
--- trunk/channels/chan_dahdi.c (original)
+++ trunk/channels/chan_dahdi.c Sat Jan 17 12:26:44 2009
@@ -634,6 +634,7 @@
 	unsigned int transfertobusy:1;			/*!< allow flash-transfers to busy channels */
 	unsigned int mwimonitor_neon:1;			/*!< monitor this FXO port for neon type MWI indication from other end */
 	unsigned int mwimonitor_fsk:1;			/*!< monitor this FXO port for fsk MWI indication from other end */
+	unsigned int mwimonitor_rpas:1;			/*!< monitor this FXO port for rpas precursor to fsk MWI indication */
 	unsigned int mwimonitoractive:1;		/*!< an MWI monitor thread is currently active */
 	unsigned int mwisendactive:1; 			/*!< a MWI message sending thread is active */
 	/* Channel state or unavilability flags */
@@ -7507,12 +7508,18 @@
 		if (flags & CID_MSGWAITING) {
 			ast_log(LOG_NOTICE, "MWI: Channel %d message waiting!\n", p->channel);
 			notify_message(p->mailbox, 1);
-			ast_hangup(chan);
+			/* If generated using Ring Pulse Alert, then ring has been answered as a call and needs to be hungup */
+			if (p->mwimonitor_rpas) {
+				ast_hangup(chan);
+			}
 			return NULL;
 		} else if (flags & CID_NOMSGWAITING) {
 			ast_log(LOG_NOTICE, "MWI: Channel %d no message waiting!\n", p->channel);
 			notify_message(p->mailbox, 0);
-			ast_hangup(chan);
+			/* If generated using Ring Pulse Alert, then ring has been answered as a call and needs to be hungup */
+			if (p->mwimonitor_rpas) {
+				ast_hangup(chan);
+			}
 			return NULL;
 		}
 
@@ -8849,6 +8856,7 @@
 		if (chan_sig & __DAHDI_SIG_FXS) {
 			tmp->mwimonitor_fsk = conf->chan.mwimonitor_fsk;
 			tmp->mwimonitor_neon = conf->chan.mwimonitor_neon;
+			tmp->mwimonitor_rpas = conf->chan.mwimonitor_rpas;
 		}
 		tmp->sig = chan_sig;
 		tmp->outsigmod = conf->chan.outsigmod;
@@ -14103,16 +14111,22 @@
 		} else if (!strcasecmp(v->name, "transfertobusy")) {
 			confp->chan.transfertobusy = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "mwimonitor")) {
-			if (!strcasecmp(v->value, "neon")) {
+			confp->chan.mwimonitor_neon = 0;
+			confp->chan.mwimonitor_fsk  = 0;
+			confp->chan.mwimonitor_rpas = 0;
+			if (strcasestr(v->value, "fsk")) {
+				confp->chan.mwimonitor_fsk = 1;
+			}
+			if (strcasestr(v->value, "rpas")) {
+				confp->chan.mwimonitor_rpas = 1;
+			}
+			if (strcasestr(v->value, "neon")) {
 				confp->chan.mwimonitor_neon = 1;
-				confp->chan.mwimonitor_fsk = 0;
-			} else {
-				confp->chan.mwimonitor_neon = 0;
-				if (!strcasecmp(v->value, "fsk"))
-					confp->chan.mwimonitor_fsk = 1;
-				else 
-					confp->chan.mwimonitor_fsk = ast_true(v->value) ? 1 : 0;
-			}
+			}
+			/* If set to true or yes, assume that simple fsk is desired */
+			if (ast_true(v->value)) {
+				confp->chan.mwimonitor_fsk = 1;
+			} 
 		} else if (!strcasecmp(v->name, "cid_rxgain")) {
 			if (sscanf(v->value, "%f", &confp->chan.cid_rxgain) != 1) {
 				ast_log(LOG_WARNING, "Invalid cid_rxgain: %s at line %d.\n", v->value, v->lineno);

Modified: trunk/configs/chan_dahdi.conf.sample
URL: http://svn.digium.com/svn-view/asterisk/trunk/configs/chan_dahdi.conf.sample?view=diff&rev=169153&r1=169152&r2=169153
==============================================================================
--- trunk/configs/chan_dahdi.conf.sample (original)
+++ trunk/configs/chan_dahdi.conf.sample Sat Jan 17 12:26:44 2009
@@ -369,12 +369,20 @@
 ;waitfordialtone=yes
 ;
 ; The following option enables receiving MWI on FXO lines.  The default
-; value is no.  When this is enabled, and MWI notification indicates on or off,
-; the script specified by the mwimonitornotify option is executed.  Also, an
-; internal Asterisk MWI event will be generated so that any other part of
-; Asterisk that cares about MWI state changes will get notified, just as if
-; the state change came from app_voicemail. The energy level that must be seen
-; before starting the MWI detection process can be set with 'mwilevel'.
+; value is no.
+; 	The mwimonitor can take the following values
+;		no - No mwimonitoring occurs. (default)
+; 		yes - The same as specifying fsk
+; 		fsk - the FXO line is monitored for MWI FSK spills
+;		fsk,rpas - the FXO line is monitored for MWI FSK spills preceded
+;			by a ring pulse alert signal.
+;		neon - The fxo line is monitored for the presence of NEON pulses
+;			indicating MWI.   
+; When detected, an internal Asterisk MWI event is generated so that any other
+; part of Asterisk that cares about MWI state changes is notified, just as if
+; the state change came from app_voicemail.
+; For FSK MWI Spills, the energy level that must be seen before starting the
+; MWI detection process can be set with 'mwilevel'.
 ;
 ;mwimonitor=no
 ;mwilevel=512




More information about the asterisk-commits mailing list