aboutsummaryrefslogtreecommitdiff
path: root/src/clear_rts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/clear_rts.c')
-rw-r--r--src/clear_rts.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/clear_rts.c b/src/clear_rts.c
index 52da3f5..c50a9fc 100644
--- a/src/clear_rts.c
+++ b/src/clear_rts.c
@@ -1,9 +1,9 @@
/* Compile with:
- gcc -o toggle_rts toggle_rts.c
+ gcc -o clear_rts clear_rts.c
Change PORT if necessary.
*/
-#define PORT "/dev/ttyS0"
+#define PORT "/dev/ttyUSB0"
#include <sys/types.h>
#include <sys/stat.h>
@@ -16,8 +16,14 @@
#include <sys/ioctl.h>
#include <linux/serial.h>
-int main() {
+int main(int argc, char **argv) {
int fd, status;
+ char *port;
+
+ if(argc == 2)
+ port = argv[1];
+ else
+ port = PORT;
fd = open(PORT, O_RDWR);
if(fd < 0) {
@@ -25,18 +31,21 @@ int main() {
return 1;
}
- // fprintf(stderr, "ioctl(fd, TIOCMGET, &status);\n");
ioctl(fd, TIOCMGET, &status);
+
+ /* This always says it was on. Opening the port sets it? */
/*
+ fprintf(stderr, "%s: RTS was ", port);
if(status & TIOCM_RTS) {
- fprintf(stderr, "RTS set\n");
+ fputs("on", stderr);
} else {
- fprintf(stderr, "RTS clear\n");
+ fputs("already off", stderr);
}
+ fputc('\n', stderr);
*/
+
status &= ~TIOCM_RTS;
ioctl(fd, TIOCMSET, &status);
- // fprintf(stderr, "ioctl(fd, TIOCMSET, &status);\n");
- fprintf(stderr, "RTS forced off (Tucker SIO2PC)\n");
+ fprintf(stderr, "%s: RTS forced off (Tucker SIO2PC)\n", port);
return 0;
}