]> sigrok.org Git - libsigrok.git/blobdiff - hardware/common/serial.c
serial: Added flags CLOCAL (ignore modem status lines) and CREAD (start receiver).
[libsigrok.git] / hardware / common / serial.c
index fb5d0b6a21c1065ddd3e835b9c7106936166a658..d8a912b28b08f27847badb48c164c4f04a78fbb2 100644 (file)
@@ -548,7 +548,7 @@ SR_PRIV int serial_set_params(struct sr_serial_dev_inst *serial, int baudrate,
                return SR_ERR;
        }
 
-       term.c_iflag &= ~(IXON | IXOFF);
+       term.c_iflag &= ~(IXON | IXOFF | IXANY);
        term.c_cflag &= ~CRTSCTS;
        switch (flowcontrol) {
        case 0:
@@ -561,7 +561,7 @@ SR_PRIV int serial_set_params(struct sr_serial_dev_inst *serial, int baudrate,
                break;
        case 2:
                sr_spew("Configuring XON/XOFF flow control.");
-               term.c_iflag |= IXON | IXOFF;
+               term.c_iflag |= (IXON | IXOFF | IXANY);
                break;
        default:
                sr_err("Unsupported flow control setting %d.", flowcontrol);
@@ -598,6 +598,9 @@ SR_PRIV int serial_set_params(struct sr_serial_dev_inst *serial, int baudrate,
        /* Disable canonical mode, and don't echo input characters. */
        term.c_lflag &= ~(ICANON | ECHO);
 
+       /* Ignore modem status lines; enable receiver */
+       term.c_cflag |= (CLOCAL | CREAD);
+
        /* Write the configured settings. */
        if (tcsetattr(serial->fd, TCSADRAIN, &term) < 0) {
                sr_err("tcsetattr() error: %s.", strerror(errno));