X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=linux_termios.c;h=9e25f2797b6c5431535fe9663590f72d0cf59d79;hb=da2ede60e441566b074d512ad70b51b5751834ae;hp=328c4d39b4024bc06fc218a52a69e7ac2cbd079c;hpb=33fd8804b8a81da4cc3ffcf43ded2288381aad49;p=libserialport.git diff --git a/linux_termios.c b/linux_termios.c index 328c4d3..9e25f27 100644 --- a/linux_termios.c +++ b/linux_termios.c @@ -33,8 +33,6 @@ * TCSETX/TCGETX ioctls used with struct termiox, others do not. */ -#if defined(__linux__) && !defined(__ANDROID__) - #include #include "linux_termios.h" @@ -65,6 +63,7 @@ int get_termios_size(void) #endif } +#if defined(HAVE_TERMIOS_SPEED) || defined(HAVE_TERMIOS2_SPEED) int get_termios_speed(void *data) { #ifdef HAVE_TERMIOS2 @@ -89,6 +88,7 @@ void set_termios_speed(void *data, int speed) term->c_cflag |= BOTHER; term->c_ispeed = term->c_ospeed = speed; } +#endif #ifdef HAVE_TERMIOX int get_termiox_size(void) @@ -96,38 +96,32 @@ int get_termiox_size(void) return sizeof(struct termiox); } -int get_termiox_flow(void *data) +int get_termiox_flow(void *data, int *rts, int *cts, int *dtr, int *dsr) { struct termiox *termx = (struct termiox *) data; int flags = 0; - if (termx->x_cflag & RTSXOFF) - flags |= RTS_FLOW; - if (termx->x_cflag & CTSXON) - flags |= CTS_FLOW; - if (termx->x_cflag & DTRXOFF) - flags |= DTR_FLOW; - if (termx->x_cflag & DSRXON) - flags |= DSR_FLOW; + *rts = (termx->x_cflag & RTSXOFF); + *cts = (termx->x_cflag & CTSXON); + *dtr = (termx->x_cflag & DTRXOFF); + *dsr = (termx->x_cflag & DSRXON); return flags; } -void set_termiox_flow(void *data, int flags) +void set_termiox_flow(void *data, int rts, int cts, int dtr, int dsr) { struct termiox *termx = (struct termiox *) data; termx->x_cflag &= ~(RTSXOFF | CTSXON | DTRXOFF | DSRXON); - if (flags & RTS_FLOW) + if (rts) termx->x_cflag |= RTSXOFF; - if (flags & CTS_FLOW) + if (cts) termx->x_cflag |= CTSXON; - if (flags & DTR_FLOW) + if (dtr) termx->x_cflag |= DTRXOFF; - if (flags & DSR_FLOW) + if (dsr) termx->x_cflag |= DSRXON; } #endif - -#endif