X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libserialport_internal.h;h=669152b675339927e5b0dda0e993230c637fbe7c;hb=0c3f38b81b8968d78806a7a41ed351a870882b5e;hp=d5ce00814fce5470f8d577852785af701131891d;hpb=dc422c04af5c63e31de6af2eedcebbfc961ee9e2;p=libserialport.git diff --git a/libserialport_internal.h b/libserialport_internal.h index d5ce008..669152b 100644 --- a/libserialport_internal.h +++ b/libserialport_internal.h @@ -21,10 +21,11 @@ #ifndef LIBSERIALPORT_LIBSERIALPORT_INTERNAL_H #define LIBSERIALPORT_LIBSERIALPORT_INTERNAL_H -#include "config.h" #ifdef __linux__ -#define _BSD_SOURCE /* For timeradd, timersub, timercmp. */ +/* For timeradd, timersub, timercmp. */ +#define _BSD_SOURCE 1 /* for glibc < 2.19 */ +#define _DEFAULT_SOURCE 1 /* for glibc >= 2.20 */ #endif #include @@ -36,6 +37,7 @@ #include #include #include +#include #ifdef _WIN32 #include #include @@ -69,7 +71,7 @@ #include "linux_termios.h" /* TCGETX/TCSETX is not available everywhere. */ -#if defined(TCGETX) && defined(TCSETX) && defined(HAVE_TERMIOX) +#if defined(TCGETX) && defined(TCSETX) && defined(HAVE_STRUCT_TERMIOX) #define USE_TERMIOX #endif #endif @@ -83,7 +85,7 @@ #endif /* Non-standard baudrates are not available everywhere. */ -#if (defined(HAVE_TERMIOS_SPEED) || defined(HAVE_TERMIOS2_SPEED)) && defined(HAVE_BOTHER) +#if (defined(HAVE_TERMIOS_SPEED) || defined(HAVE_TERMIOS2_SPEED)) && defined(HAVE_DECL_BOTHER) #define USE_TERMIOS_SPEED #endif @@ -109,6 +111,7 @@ struct sp_port { DWORD events; BYTE pending_byte; BOOL writing; + BOOL wait_running; #else int fd; #endif @@ -160,10 +163,7 @@ struct std_baudrate { int value; }; -extern const struct std_baudrate std_baudrates[]; - #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) -#define NUM_STD_BAUDRATES ARRAY_SIZE(std_baudrates) extern void (*sp_debug_handler)(const char *format, ...); @@ -189,11 +189,12 @@ extern void (*sp_debug_handler)(const char *format, ...); } while (0) #define RETURN_CODEVAL(x) do { \ switch (x) { \ - case SP_OK: RETURN_CODE(SP_OK); \ - case SP_ERR_ARG: RETURN_CODE(SP_ERR_ARG); \ - case SP_ERR_FAIL: RETURN_CODE(SP_ERR_FAIL); \ - case SP_ERR_MEM: RETURN_CODE(SP_ERR_MEM); \ - case SP_ERR_SUPP: RETURN_CODE(SP_ERR_SUPP); \ + case SP_OK: RETURN_CODE(SP_OK); \ + case SP_ERR_ARG: RETURN_CODE(SP_ERR_ARG); \ + case SP_ERR_FAIL: RETURN_CODE(SP_ERR_FAIL); \ + case SP_ERR_MEM: RETURN_CODE(SP_ERR_MEM); \ + case SP_ERR_SUPP: RETURN_CODE(SP_ERR_SUPP); \ + default: RETURN_CODE(SP_ERR_FAIL); \ } \ } while (0) #define RETURN_OK() RETURN_CODE(SP_OK); @@ -225,7 +226,7 @@ extern void (*sp_debug_handler)(const char *format, ...); #define TRACE(fmt, ...) DEBUG_FMT("%s(" fmt ") called", __func__, __VA_ARGS__) #define TRACE_VOID() DEBUG_FMT("%s() called", __func__) -#define TRY(x) do { int ret = x; if (ret != SP_OK) RETURN_CODEVAL(ret); } while (0) +#define TRY(x) do { int retval = x; if (retval != SP_OK) RETURN_CODEVAL(retval); } while (0) SP_PRIV struct sp_port **list_append(struct sp_port **list, const char *portname);