[zaptel-commits] qwell: branch 1.4 r4285 - /branches/1.4/ztscan.c

SVN commits to the Zaptel project zaptel-commits at lists.digium.com
Wed May 14 13:42:25 CDT 2008


Author: qwell
Date: Wed May 14 13:42:25 2008
New Revision: 4285

URL: http://svn.digium.com/view/zaptel?view=rev&rev=4285
Log:
Temporarily revert revisions 4006 and 4009, until a better decision can be made about channels on spans.  Closes issue #12635

Modified:
    branches/1.4/ztscan.c

Modified: branches/1.4/ztscan.c
URL: http://svn.digium.com/view/zaptel/branches/1.4/ztscan.c?view=diff&rev=4285&r1=4284&r2=4285
==============================================================================
--- branches/1.4/ztscan.c (original)
+++ branches/1.4/ztscan.c Wed May 14 13:42:25 2008
@@ -40,109 +40,116 @@
 #include <zaptel/zaptel.h>
 #endif
 
-void print_span(int spanno, int ctl)
+int main(int argc, char *argv[])
 {
-	struct zt_spaninfo spaninfo;
-	int y;
+	int ctl;
+	int x, y;
 	struct zt_params params;
 	unsigned int basechan = 1;
+	struct zt_spaninfo s;
 	char buf[100];
 	char alarms[50];
 
-	memset(&spaninfo, 0, sizeof(spaninfo));
-	spaninfo.spanno = spanno;
-	if (ioctl(ctl, ZT_SPANSTAT, &spaninfo))
-		return;
+	if ((ctl = open("/dev/zap/ctl", O_RDWR)) < 0) {
+		fprintf(stderr, "Unable to open /dev/zap/ctl: %s\n", strerror(errno));
+		exit(1);
+	}
+	
+	for (x = 1; x < ZT_MAX_SPANS; x++) {
+		memset(&s, 0, sizeof(s));
+		s.spanno = x;
+		if (ioctl(ctl, ZT_SPANSTAT, &s))
+			continue;
 
-	alarms[0] = '\0';
-	if (spaninfo.alarms) {
-		if (spaninfo.alarms & ZT_ALARM_BLUE)
-			strcat(alarms,"BLU/");
-		if (spaninfo.alarms & ZT_ALARM_YELLOW)
-			strcat(alarms, "YEL/");
-		if (spaninfo.alarms & ZT_ALARM_RED)
-			strcat(alarms, "RED/");
-		if (spaninfo.alarms & ZT_ALARM_LOOPBACK)
-			strcat(alarms,"LB/");
-		if (spaninfo.alarms & ZT_ALARM_RECOVER)
-			strcat(alarms,"REC/");
-		if (spaninfo.alarms & ZT_ALARM_NOTOPEN)
-			strcat(alarms, "NOP/");
-		if (!strlen(alarms))
-			strcat(alarms, "UUU/");
-		if (strlen(alarms)) {
-			/* Strip trailing / */
-			alarms[strlen(alarms)-1]='\0';
+		alarms[0] = '\0';
+		if (s.alarms) {
+			if (s.alarms & ZT_ALARM_BLUE)
+				strcat(alarms,"BLU/");
+			if (s.alarms & ZT_ALARM_YELLOW)
+				strcat(alarms, "YEL/");
+			if (s.alarms & ZT_ALARM_RED)
+				strcat(alarms, "RED/");
+			if (s.alarms & ZT_ALARM_LOOPBACK)
+				strcat(alarms,"LB/");
+			if (s.alarms & ZT_ALARM_RECOVER)
+				strcat(alarms,"REC/");
+			if (s.alarms & ZT_ALARM_NOTOPEN)
+				strcat(alarms, "NOP/");
+			if (!strlen(alarms))
+				strcat(alarms, "UUU/");
+			if (strlen(alarms)) {
+				/* Strip trailing / */
+				alarms[strlen(alarms)-1]='\0';
+			}
+		} else {
+			if (s.numchans)
+				strcpy(alarms, "OK");
+			else
+				strcpy(alarms, "UNCONFIGURED");
 		}
-	} else {
-		if (spaninfo.numchans)
-			strcpy(alarms, "OK");
-		else
-			strcpy(alarms, "UNCONFIGURED");
-	}
 
-	fprintf(stdout, "[%d]\n", spanno);
-	fprintf(stdout, "active=yes\n");
-	fprintf(stdout, "alarms=%s\n", alarms);
-	fprintf(stdout, "description=%s\n", spaninfo.desc);
-	fprintf(stdout, "name=%s\n", spaninfo.name);
-	fprintf(stdout, "manufacturer=%s\n", spaninfo.manufacturer);
-	fprintf(stdout, "devicetype=%s\n", spaninfo.devicetype);
-	fprintf(stdout, "location=%s\n", spaninfo.location);
-	fprintf(stdout, "basechan=%d\n", basechan);
-	fprintf(stdout, "totchans=%d\n", spaninfo.totalchans);
-	fprintf(stdout, "irq=%d\n", spaninfo.irq);
-	y = basechan;
-	memset(&params, 0, sizeof(params));
-	params.channo = y;
-	if (ioctl(ctl, ZT_GET_PARAMS, &params)) {
-		basechan += spaninfo.totalchans;
-		return;
-	}
+		fprintf(stdout, "[%d]\n", x);
+		fprintf(stdout, "active=yes\n");
+		fprintf(stdout, "alarms=%s\n", alarms);
+		fprintf(stdout, "description=%s\n", s.desc);
+		fprintf(stdout, "name=%s\n", s.name);
+		fprintf(stdout, "manufacturer=%s\n", s.manufacturer);
+		fprintf(stdout, "devicetype=%s\n", s.devicetype);
+		fprintf(stdout, "location=%s\n", s.location);
+		fprintf(stdout, "basechan=%d\n", basechan);
+		fprintf(stdout, "totchans=%d\n", s.totalchans);
+		fprintf(stdout, "irq=%d\n", s.irq);
+		y = basechan;
+		memset(&params, 0, sizeof(params));
+		params.channo = y;
+		if (ioctl(ctl, ZT_GET_PARAMS, &params)) {
+			basechan += s.totalchans;
+			continue;
+		}
 
-	if (params.sigcap & (__ZT_SIG_DACS |  ZT_SIG_CAS)) {
-		/* this is a digital span */
-		fprintf(stdout, "type=digital-%s\n", spaninfo.spantype);
-		fprintf(stdout, "syncsrc=%d\n", spaninfo.syncsrc);
-		fprintf(stdout, "lbo=%s\n", spaninfo.lboname);
-		fprintf(stdout, "coding_opts=");
-		buf[0] = '\0';
-		if (spaninfo.linecompat & ZT_CONFIG_B8ZS) strcat(buf, "B8ZS,");
-		if (spaninfo.linecompat & ZT_CONFIG_AMI) strcat(buf, "AMI,");
-		if (spaninfo.linecompat & ZT_CONFIG_HDB3) strcat(buf, "HDB3,");
-		buf[strlen(buf) - 1] = '\0';
-		fprintf(stdout, "%s\n", buf);
-		fprintf(stdout, "framing_opts=");
-		buf[0] = '\0';
-		if (spaninfo.linecompat & ZT_CONFIG_ESF) strcat(buf, "ESF,");
-		if (spaninfo.linecompat & ZT_CONFIG_D4) strcat(buf, "D4,");
-		if (spaninfo.linecompat & ZT_CONFIG_CCS) strcat(buf, "CCS,");
-		if (spaninfo.linecompat & ZT_CONFIG_CRC4) strcat(buf, "CRC4,");
-		buf[strlen(buf) - 1] = '\0';
-		fprintf(stdout, "%s\n", buf);
-		fprintf(stdout, "coding=");
-		if (spaninfo.lineconfig & ZT_CONFIG_B8ZS) fprintf(stdout, "B8ZS");
-		else if (spaninfo.lineconfig & ZT_CONFIG_AMI) fprintf(stdout, "AMI");
-		else if (spaninfo.lineconfig & ZT_CONFIG_HDB3) fprintf(stdout, "HDB3");
-		fprintf(stdout, "\n");
-		fprintf(stdout, "framing=");
-		if (spaninfo.lineconfig & ZT_CONFIG_ESF) fprintf(stdout, "ESF");
-		else if (spaninfo.lineconfig & ZT_CONFIG_D4) fprintf(stdout, "D4");
-		else if (spaninfo.lineconfig & ZT_CONFIG_CCS) fprintf(stdout, "CCS");
-		else if (spaninfo.lineconfig & ZT_CONFIG_CRC4) fprintf(stdout, "/CRC4");
-		fprintf(stdout, "\n");
-	} else {
-		/* this is an analog span */
-		fprintf(stdout, "type=analog\n");
-		for (y = basechan; y < (basechan + spaninfo.totalchans); y++) {
-			memset(&params, 0, sizeof(params));
-			params.channo = y;
-			if (ioctl(ctl, ZT_GET_PARAMS, &params)) {
-				fprintf(stdout, "port=%d,unknown\n", y);
-				return;
-			};
-			fprintf(stdout, "port=%d,", y);
-			switch (params.sigcap & (__ZT_SIG_FXO | __ZT_SIG_FXS)) {
+		if (params.sigcap & (__ZT_SIG_DACS |  ZT_SIG_CAS)) {
+			/* this is a digital span */
+			fprintf(stdout, "type=digital-%s\n", s.spantype);
+			fprintf(stdout, "syncsrc=%d\n", s.syncsrc);
+			fprintf(stdout, "lbo=%s\n", s.lboname);
+			fprintf(stdout, "coding_opts=");
+			buf[0] = '\0';
+			if (s.linecompat & ZT_CONFIG_B8ZS) strcat(buf, "B8ZS,");
+			if (s.linecompat & ZT_CONFIG_AMI) strcat(buf, "AMI,");
+			if (s.linecompat & ZT_CONFIG_HDB3) strcat(buf, "HDB3,");
+			buf[strlen(buf) - 1] = '\0';
+			fprintf(stdout, "%s\n", buf);
+			fprintf(stdout, "framing_opts=");
+			buf[0] = '\0';
+			if (s.linecompat & ZT_CONFIG_ESF) strcat(buf, "ESF,");
+			if (s.linecompat & ZT_CONFIG_D4) strcat(buf, "D4,");
+			if (s.linecompat & ZT_CONFIG_CCS) strcat(buf, "CCS,");
+			if (s.linecompat & ZT_CONFIG_CRC4) strcat(buf, "CRC4,");
+			buf[strlen(buf) - 1] = '\0';
+			fprintf(stdout, "%s\n", buf);
+			fprintf(stdout, "coding=");
+			if (s.lineconfig & ZT_CONFIG_B8ZS) fprintf(stdout, "B8ZS");
+			else if (s.lineconfig & ZT_CONFIG_AMI) fprintf(stdout, "AMI");
+			else if (s.lineconfig & ZT_CONFIG_HDB3) fprintf(stdout, "HDB3");
+			fprintf(stdout, "\n");
+			fprintf(stdout, "framing=");
+			if (s.lineconfig & ZT_CONFIG_ESF) fprintf(stdout, "ESF");
+			else if (s.lineconfig & ZT_CONFIG_D4) fprintf(stdout, "D4");
+			else if (s.lineconfig & ZT_CONFIG_CCS) fprintf(stdout, "CCS");
+			else if (s.lineconfig & ZT_CONFIG_CRC4) fprintf(stdout, "/CRC4");
+			fprintf(stdout, "\n");
+		} else {
+			/* this is an analog span */
+			fprintf(stdout, "type=analog\n");
+			for (y = basechan; y < (basechan + s.totalchans); y++) {
+				memset(&params, 0, sizeof(params));
+				params.channo = y;
+				if (ioctl(ctl, ZT_GET_PARAMS, &params)) {
+					fprintf(stdout, "port=%d,unknown\n", y);
+					continue;
+				};
+				fprintf(stdout, "port=%d,", y);
+				switch (params.sigcap & (__ZT_SIG_FXO | __ZT_SIG_FXS)) {
 				case __ZT_SIG_FXO:
 					fprintf(stdout, "FXS");
 					break;
@@ -151,44 +158,15 @@
 					break;
 				default:
 					fprintf(stdout, "none");
+				}
+				if (params.sigcap & ZT_SIG_BROKEN)
+					fprintf(stdout, " FAILED");
+				fprintf(stdout, "\n");
 			}
-			if (params.sigcap & ZT_SIG_BROKEN)
-				fprintf(stdout, " FAILED");
-			fprintf(stdout, "\n");
 		}
+	  
+		basechan += s.totalchans;
 	}
 
-	basechan += spaninfo.totalchans;
+	exit(0);
 }
-
-int main(int argc, char *argv[])
-{
-	int ctl;
-	int x, spanno;
-
-	if ((ctl = open("/dev/zap/ctl", O_RDWR)) < 0) {
-		fprintf(stderr, "Unable to open /dev/zap/ctl: %s\n", strerror(errno));
-		exit(1);
-	}
-	
-	/* If no parameters: loop over all spans */
-	if (argc == 1) {
-		for (spanno = 1; spanno < ZT_MAX_SPANS; spanno++)
-			print_span(spanno, ctl);
-		return 0;
-	}
-
-	/* Parameters provided: use them as span numbers */
-	for (x=1; argv[x]; x++) {
-		/* We can use atoi because span numbers must be > 0 */
-		int spanno = atoi(argv[x]);
-		if (spanno <= 0) {
-			fprintf(stderr, "%s: Error: Invalid span number %d (%s). Aborting\n",
-					argv[0], spanno, argv[x]);
-			exit(2);
-		}
-		print_span(spanno, ctl);
-	}
-
-	return 0;
-}




More information about the zaptel-commits mailing list