[svn-commits] mspiceland: linux/trunk r7445 - /linux/trunk/drivers/dahdi/wct4xxp/base.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Oct 29 16:37:48 CDT 2009


Author: mspiceland
Date: Thu Oct 29 16:37:45 2009
New Revision: 7445

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=7445
Log:
Debounce alarms by default for wct4xxp per AT&T 54016.  Also, the
various alarm conditions can be debounced separately.

Modified:
    linux/trunk/drivers/dahdi/wct4xxp/base.c

Modified: linux/trunk/drivers/dahdi/wct4xxp/base.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/wct4xxp/base.c?view=diff&rev=7445&r1=7444&r2=7445
==============================================================================
--- linux/trunk/drivers/dahdi/wct4xxp/base.c (original)
+++ linux/trunk/drivers/dahdi/wct4xxp/base.c Thu Oct 29 16:37:45 2009
@@ -167,7 +167,9 @@
 static int j1mode = 0;
 static int sigmode = FRMR_MODE_NO_ADDR_CMP;
 static int loopback = 0;
-static int alarmdebounce = 0;
+static int alarmdebounce = 2500; /* LOF/LFA defaults to 2.5s AT&T TR54016*/
+static int losalarmdebounce = 2500;/* LOS defaults to 2.5s AT&T TR54016*/
+static int aisalarmdebounce = 2500;/* AIS(blue) defaults to 2.5s AT&T TR54016*/
 #ifdef VPM_SUPPORT
 static int vpmsupport = 1;
 /* If set to auto, vpmdtmfsupport is enabled for VPM400M and disabled for VPM450M */
@@ -250,6 +252,8 @@
 	int redalarms;
 	int notclear;
 	int alarmcount;
+	int losalarmcount;
+	int aisalarmcount;
 	int spanflags;
 	int syncpos;
 #ifdef SUPPORT_GEN1
@@ -1910,7 +1914,7 @@
 	else
 		mytxlevel = txlevel - 4;
 	fmr1 = 0x9c; /* FMR1: Mode 1, T1 mode, CRC on for ESF, 8.192 Mhz system data rate, no XAIS */
-	fmr2 = 0x22; /* FMR2: no payload loopback, auto send yellow alarm */
+	fmr2 = 0x20; /* FMR2: no payload loopback, don't auto yellow */
 	if (loopback)
 		fmr2 |= 0x4;
 	fmr4 = 0x0c; /* FMR4: Lose sync on 2 out of 5 framing bits, auto resync */
@@ -2552,15 +2556,41 @@
 			alarms |= DAHDI_ALARM_NOTOPEN;
 	}
 
-	if (c & 0xa0) {
-		if (ts->alarmcount >= alarmdebounce) 
+	if (c & 0x20) { /* LOF/LFA */
+		if (ts->alarmcount >= alarmdebounce)
 			alarms |= DAHDI_ALARM_RED;
-		else
+		else {
+			if (!ts->alarmcount) /* starting to debounce LOF/LFA */
+				printk(KERN_INFO "wct%dxxp: LOF/LFA detected on span %d but debouncing for %d ms\n", 
+					wc->numspans, span + 1, alarmdebounce);
 			ts->alarmcount++;
+		}
 	} else
 		ts->alarmcount = 0;
-	if (c & 0x4)
-		alarms |= DAHDI_ALARM_BLUE;
+
+	if (c & 0x80) { /* LOS */
+		if (ts->losalarmcount >= losalarmdebounce)
+			alarms |= DAHDI_ALARM_RED;
+		else {
+			if (!ts->losalarmcount) /* starting to debounce LOS */
+				printk(KERN_INFO "wct%dxxp: LOS detected on span %d but debouncing for %d ms\n", 
+					wc->numspans, span + 1, losalarmdebounce);
+			ts->losalarmcount++;
+		}
+	} else
+		ts->losalarmcount = 0;
+
+	if (c & 0x40) { /* AIS */
+		if (ts->aisalarmcount >= aisalarmdebounce)
+			alarms |= DAHDI_ALARM_BLUE;
+		else {
+			if (!ts->aisalarmcount) /* starting to debounce AIS */
+				printk(KERN_INFO "wct%dxxp: AIS detected on span %d but debouncing for %d ms\n", 
+					wc->numspans, span + 1, aisalarmdebounce);
+			ts->aisalarmcount++;
+		}
+	} else
+		ts->aisalarmcount = 0;
 
 	if (((!ts->span.alarms) && alarms) || 
 	    (ts->span.alarms && (!alarms))) 
@@ -2612,7 +2642,8 @@
 		int docheck=0;
 
 		spin_lock(&wc->reglock);
-		if (ts->loopupcnt || ts->loopdowncnt || ts->alarmcount)
+		if (ts->loopupcnt || ts->loopdowncnt || ts->alarmcount 
+			|| ts->losalarmcount || ts->aisalarmcount)
 			docheck++;
 
 		if (ts->alarmtimer) {
@@ -2637,7 +2668,7 @@
 	for (x=0;x<wc->numspans;x++) {
 		struct t4_span *ts = wc->tspans[x];
 		if (ts->span.flags & DAHDI_FLAG_RUNNING) {
-			if (ts->span.alarms & (DAHDI_ALARM_RED | DAHDI_ALARM_BLUE)) {
+			if ((ts->span.alarms & (DAHDI_ALARM_RED | DAHDI_ALARM_BLUE)) || ts->losalarmcount) {
 #ifdef FANCY_ALARM
 				if (wc->blinktimer == (altab[wc->alarmpos] >> 1)) {
 					__t4_set_led(wc, x, WC_RED);
@@ -3936,6 +3967,8 @@
 module_param(timingcable, int, 0600);
 module_param(t1e1override, int, 0600);
 module_param(alarmdebounce, int, 0600);
+module_param(losalarmdebounce, int, 0600);
+module_param(aisalarmdebounce, int, 0600);
 module_param(j1mode, int, 0600);
 module_param(sigmode, int, 0600);
 #ifdef VPM_SUPPORT




More information about the svn-commits mailing list