summaryrefslogtreecommitdiff
path: root/ztscan.c
diff options
context:
space:
mode:
authorqwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-05-14 18:42:25 +0000
committerqwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-05-14 18:42:25 +0000
commitca4f8830a9ec748e7e46c500c8de139a381e4006 (patch)
treec58a70d999d61c0af92eac139d412c5ad6f29c6f /ztscan.c
parent54269618adf6c7f2618e85d96a56511c353da613 (diff)
Temporarily revert revisions 4006 and 4009, until a better decision can be made about channels on spans. Closes issue #12635
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@4285 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'ztscan.c')
-rw-r--r--ztscan.c236
1 files changed, 107 insertions, 129 deletions
diff --git a/ztscan.c b/ztscan.c
index d821092..64298ee 100644
--- a/ztscan.c
+++ b/ztscan.c
@@ -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 @@ void print_span(int spanno, int ctl)
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 += spaninfo.totalchans;
-}
-
-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);
+
+ basechan += s.totalchans;
}
- return 0;
+ exit(0);
}