X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=libserialport_internal.h;h=6a682cb205c3b2399ef663a03f99eb374946541b;hb=025c264448de771ceb130d4d01aacbb9ca8453ea;hp=9d582f8e72fbef5a1009b2f31d234ddedd737be1;hpb=653cef3ab1a71a76c8c5a503af6ce74b731ecc42;p=libserialport.git diff --git a/libserialport_internal.h b/libserialport_internal.h index 9d582f8..6a682cb 100644 --- a/libserialport_internal.h +++ b/libserialport_internal.h @@ -18,8 +18,13 @@ * along with this program. If not, see . */ +#ifndef LIBSERIALPORT_LIBSERIALPORT_INTERNAL_H +#define LIBSERIALPORT_LIBSERIALPORT_INTERNAL_H + +#include "config.h" + #ifdef __linux__ -#define _BSD_SOURCE // for timeradd, timersub, timercmp +#define _BSD_SOURCE /* For timeradd, timersub, timercmp. */ #endif #include @@ -36,7 +41,11 @@ #include #include #include +#undef DEFINE_GUID +#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + static const GUID name = { l,w1,w2,{ b1,b2,b3,b4,b5,b6,b7,b8 } } #include +#include #else #include #include @@ -74,7 +83,7 @@ #endif /* Non-standard baudrates are not available everywhere. */ -#if defined(HAVE_TERMIOS_SPEED) || defined(HAVE_TERMIOS2_SPEED) +#if (defined(HAVE_TERMIOS_SPEED) || defined(HAVE_TERMIOS2_SPEED)) && defined(HAVE_BOTHER) #define USE_TERMIOS_SPEED #endif @@ -100,6 +109,7 @@ struct sp_port { DWORD events; BYTE pending_byte; BOOL writing; + BOOL wait_running; #else int fd; #endif @@ -151,10 +161,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, ...); @@ -173,18 +180,19 @@ extern void (*sp_debug_handler)(const char *format, ...); #define RETURN() do { \ DEBUG_FMT("%s returning", __func__); \ return; \ -} while(0) +} while (0) #define RETURN_CODE(x) do { \ DEBUG_FMT("%s returning " #x, __func__); \ return x; \ } 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); @@ -216,10 +224,12 @@ 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); /* OS-specific Helper functions. */ SP_PRIV enum sp_return get_port_details(struct sp_port *port); SP_PRIV enum sp_return list_ports(struct sp_port ***list); + +#endif