autocompile reset_tty fix
[svn42.git] / reset_tty / reset_tty.c
diff --git a/reset_tty/reset_tty.c b/reset_tty/reset_tty.c
new file mode 100644 (file)
index 0000000..bf1c0a0
--- /dev/null
@@ -0,0 +1,42 @@
+#include <stdlib.h>
+#include <termios.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <time.h>
+#include <stdio.h>
+#include <sys/select.h>
+
+#define STATE_OFF 0
+#define STATE_ON  1
+
+void setDTRState (int fd, int state) {
+  int flags;
+
+  ioctl(fd, TIOCMGET, &flags);
+  flags = (state == STATE_ON ? flags | TIOCM_DTR : flags & ~TIOCM_DTR);
+  ioctl(fd, TIOCMSET, &flags);
+}
+
+int
+main(int argc, char* argv[])
+{
+  char* device = argc < 2 ? "/dev/ttyUSB0" : argv[1];
+  int fd = open(device, O_RDWR);
+  if (fd == 0) {
+    fprintf(stderr, "Could not open %s\n", device);
+    return EXIT_FAILURE;
+  }
+  
+  setDTRState(fd, STATE_ON);
+  struct timeval sleeptime = {0, 100000}; // 100ms
+  select(0, NULL, NULL, NULL, &sleeptime);
+  setDTRState(fd, STATE_OFF);
+  sleeptime.tv_sec = 0;
+  sleeptime.tv_usec = 100000;
+  select(0, NULL, NULL, NULL, &sleeptime);
+  setDTRState(fd, STATE_ON);
+  close(fd);
+
+  return EXIT_SUCCESS;
+}
+