summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Meyerriecks <rmeyerreicks@digium.com>2010-12-08 22:14:29 +0000
committerRuss Meyerriecks <rmeyerreicks@digium.com>2010-12-08 22:14:29 +0000
commit8a2d7dc1635b9058dcb0c1d70d3e3d3286b4037c (patch)
tree6652d7f497222f4067dcffd9574a18d1fe02bf43
parent3b3cc1ffe37510571d7d048cc4258ee838117d81 (diff)
dahdi_maint: Added the loopup/loopdown functionality
Put back in the loopup and loopdown functionality which had been removed from dahdi_tool According to the spec AT&T TR 54016 we should keep the loopback actuate and release signals on the line for 5 seconds. Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com> Acked-by: Shaun Ruffell <sruffell@digium.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/tools/trunk@9517 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--dahdi_maint.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/dahdi_maint.c b/dahdi_maint.c
index d3019d2..4dd41a9 100644
--- a/dahdi_maint.c
+++ b/dahdi_maint.c
@@ -56,7 +56,9 @@ void display_help(char *argv0, int exitcode)
"networkpayload|off>\n"\
"\t\tlocalhost - loop back towards host\n"\
"\t\tnetworkline - network line loopback\n"\
- "\t\tnetworkpayload - network payload loopback\n");
+ "\t\tnetworkpayload - network payload loopback\n"\
+ "\t\tloopup - transmit loopup signal\n"\
+ "\t\tloopdown - transmit loopdown signal\n");
fprintf(stderr, " -i, --insert <fas|multi|crc|cas|prbs|bipolar>"\
"\n\t\tinsert an error of a specific type\n");
fprintf(stderr, " -r, --reset "\
@@ -163,6 +165,12 @@ int main(int argc, char *argv[])
} else if (!strcasecmp(larg, "networkpayload")) {
printf("Span %d: network payload loopback ON\n", span);
m.command = DAHDI_MAINT_NETWORKPAYLOADLOOP;
+ } else if (!strcasecmp(larg, "loopup")) {
+ printf("Span %d: transmitting loopup signal\n", span);
+ m.command = DAHDI_MAINT_LOOPUP;
+ } else if (!strcasecmp(larg, "loopdown")) {
+ printf("Span %d: transmitting loopdown signal\n", span);
+ m.command = DAHDI_MAINT_LOOPDOWN;
} else if (!strcasecmp(larg, "off")) {
printf("Span %d: loopback OFF\n", span);
m.command = DAHDI_MAINT_NONE;
@@ -171,9 +179,21 @@ int main(int argc, char *argv[])
}
res = ioctl(ctl, DAHDI_MAINT, &m);
- if (res)
+ if (res) {
printf("This type of looping not supported by the"\
" driver for this span\n");
+ return 1;
+ }
+
+ /* Leave the loopup/loopdown signal on the line for
+ * five seconds according to AT&T TR 54016
+ */
+ if ((m.command == DAHDI_MAINT_LOOPUP) ||
+ (m.command == DAHDI_MAINT_LOOPDOWN)) {
+ sleep(5);
+ m.command = DAHDI_MAINT_NONE;
+ ioctl(ctl, DAHDI_MAINT, &m);
+ }
}
if (iflag) {