diff options
author | Pavel Vymetálek <pavel@vym.cz> | 2020-04-03 17:06:54 +0200 |
---|---|---|
committer | Pavel Vymetálek <pavel@vym.cz> | 2020-04-03 17:06:54 +0200 |
commit | da3ab5ca185ebdf80a84893b2033c62a0aed8fd2 (patch) | |
tree | 3ea9ce14ffabf8e37af10690b2b5f4ef6a1dba51 /sercp.c | |
parent | 45c8724e89c7c0d84fa42d2877f5b71c0f70749e (diff) | |
download | sercp-pc-0.3.2.tar.gz |
Change open serial port for __APPLE__: CCTS_OFLOW | CRTS_IFLOWv0.3.2
Diffstat (limited to 'sercp.c')
-rw-r--r-- | sercp.c | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -27,6 +27,7 @@ #include <fcntl.h> #include <windows.h> #include <getopt.h> + #include <strings.h> #include <signal.h> #include <fcntl.h> #include <errno.h> @@ -39,14 +40,15 @@ #include <utime.h> #else #include <stdio.h> - #include <unistd.h> #include <stdlib.h> #include <string.h> + #include <strings.h> #include <errno.h> #include <stdint.h> #include <libgen.h> #include <getopt.h> #include <termios.h> + #include <unistd.h> #include <err.h> #include <sys/stat.h> #include <sys/ioctl.h> @@ -64,7 +66,7 @@ #define true 1 #define TRUE 1 -const char* _version = "v0.3.1"; +const char* _version = "v0.3.2"; // SERIAL FILE *tapout_fd = NULL; int is_outfile = 0; @@ -521,20 +523,20 @@ void sercpSend(void) { struct tm *timdat; no = stat(sercp_file, &st); - if (no != 0) { + if (no == -1) { printf ("can't stat input file\n"); exit (EXIT_FAILURE); } + if (st.st_size == 0) { + printf ("Zero length of file. End\n"); + exit (EXIT_FAILURE); + } tap_fd = fopen(sercp_file, "rb"); if (tap_fd == NULL) { printf ("can't open input file\n"); exit (EXIT_FAILURE); } - if (st.st_size == 0) { - printf ("Zero length of file. End\n"); - return; - } // FIXME do this more sophisticated and crossplatform, for example by __SIZE_WIDTH__ #if defined (__linux__) || defined(_WIN32) @@ -672,7 +674,7 @@ int OpenUart() { return(-1); } tcgetattr(serial_fd, &oldtio); /* save current port settings */ - explicit_bzero(&newtio, sizeof (newtio)); + bzero(&newtio, sizeof (newtio)); switch (baud_rate){ case 115200: newtio.c_cflag = B115200; @@ -705,7 +707,11 @@ int OpenUart() { } cfmakeraw(&newtio); cfsetspeed(&newtio, baud_rate); - newtio.c_cflag |= CS8 | CLOCAL | CREAD | CRTSCTS; // CSTOPB - two stop bits NOT +#ifdef __APPLE__ + newtio.c_cflag = CS8 | CLOCAL | CREAD | CCTS_OFLOW | CRTS_IFLOW; // CSTOPB - two stop bits NOT +#else + newtio.c_cflag = CS8 | CLOCAL | CREAD | CRTSCTS; // CSTOPB - two stop bits NOT +#endif printf ("Serial device: %s, communication speed is: %d Bd\n", MODEMDEVICE, baud_rate); newtio.c_cc[VMIN] = 1; newtio.c_cc[VTIME] = 0; |