X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=rf433ctl%2Freset_tty.c;fp=rf433ctl%2Freset_tty.c;h=bf1c0a01a72ac26615b34979f6cc0ae7f9eb5a74;hb=fcdc69a2cf4e6751fd75f6ed7504d1de114c0eb5;hp=0000000000000000000000000000000000000000;hpb=25c188a6f7e81250f91e224896d6a6d290f04643;p=svn42.git diff --git a/rf433ctl/reset_tty.c b/rf433ctl/reset_tty.c new file mode 100644 index 0000000..bf1c0a0 --- /dev/null +++ b/rf433ctl/reset_tty.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include +#include +#include + +#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; +} +