diff options
author | qwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-05-14 18:42:25 +0000 |
---|---|---|
committer | qwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-05-14 18:42:25 +0000 |
commit | ca4f8830a9ec748e7e46c500c8de139a381e4006 (patch) | |
tree | c58a70d999d61c0af92eac139d412c5ad6f29c6f /ztscan.c | |
parent | 54269618adf6c7f2618e85d96a56511c353da613 (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.c | 236 |
1 files changed, 107 insertions, 129 deletions
@@ -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(¶ms, 0, sizeof(params)); - params.channo = y; - if (ioctl(ctl, ZT_GET_PARAMS, ¶ms)) { - 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(¶ms, 0, sizeof(params)); + params.channo = y; + if (ioctl(ctl, ZT_GET_PARAMS, ¶ms)) { + 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(¶ms, 0, sizeof(params)); - params.channo = y; - if (ioctl(ctl, ZT_GET_PARAMS, ¶ms)) { - 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(¶ms, 0, sizeof(params)); + params.channo = y; + if (ioctl(ctl, ZT_GET_PARAMS, ¶ms)) { + 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); } |