FreeCalypso > hg > freecalypso-tools
annotate miscutil/fc-pulse-dtr.c @ 998:fb7442e3d430
CHANGES: mention flash write protection support
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Mon, 04 Dec 2023 02:17:54 +0000 | 
| parents | 5b8287c655cf | 
| children | 
| rev | line source | 
|---|---|
| 735 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This utility opens a serial port, asserts DTR for 50 ms, then negates it | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * and exits. It is intended for use with FreeCalypso DUART28C adapters. | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 */ | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 #include <sys/types.h> | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include <sys/file.h> | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 #include <sys/ioctl.h> | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 #include <stdio.h> | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 #include <stdlib.h> | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 #include <unistd.h> | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 main(argc, argv) | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 char **argv; | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 { | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 int target_fd; | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 int mctl_arg = TIOCM_DTR; | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 if (argc != 2) { | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 fprintf(stderr, "usage: %s ttyname\n", argv[0]); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 exit(1); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 } | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 target_fd = open(argv[1], O_RDWR|O_NONBLOCK); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 if (target_fd < 0) { | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 perror(argv[1]); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 exit(1); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 } | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 ioctl(target_fd, TIOCMBIS, &mctl_arg); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 usleep(50000); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 ioctl(target_fd, TIOCMBIC, &mctl_arg); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 exit(0); | 
| 
5b8287c655cf
fc-pulse-dtr and fc-pulse-rts utilities implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 } | 
