serial: default to XON/XOFF flow control
This seems to help with Huawei and ZTE devices which often appeared to stop responding on either primary or secondary ports at various times. We had this problem a long time ago, but it was fixed then by always picking the right serial port via the USB interface number (Huawei) or udev rules files (ZTE). Now that we're using the second serial port more extensively the problem came up again, so lets try to fix it for real.
This commit is contained in:
@@ -698,6 +698,9 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self,
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to enable XON/XOFF flow control */
|
||||
mm_serial_port_queue_command (priv->primary, "+IFC=1,1", 3, NULL, NULL);
|
||||
|
||||
/* Get allowed mode */
|
||||
if (MM_GENERIC_GSM_GET_CLASS (self)->get_allowed_mode)
|
||||
MM_GENERIC_GSM_GET_CLASS (self)->get_allowed_mode (self, get_allowed_mode_done, NULL);
|
||||
|
@@ -357,8 +357,14 @@ config_fd (MMSerialPort *self, GError **error)
|
||||
stbuf.c_cc[VTIME] = 0;
|
||||
stbuf.c_cc[VEOF] = 1;
|
||||
|
||||
stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | CLOCAL | PARENB);
|
||||
stbuf.c_cflag |= (speed | bits | CREAD | 0 | parity | stopbits);
|
||||
/* Use software handshaking */
|
||||
stbuf.c_iflag |= (IXON | IXOFF | IXANY);
|
||||
|
||||
/* Set up port speed and serial attributes; also ignore modem control
|
||||
* lines since most drivers don't implement RTS/CTS anyway.
|
||||
*/
|
||||
stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | PARENB | CRTSCTS);
|
||||
stbuf.c_cflag |= (speed | bits | CREAD | 0 | parity | stopbits | CLOCAL);
|
||||
|
||||
if (ioctl (priv->fd, TCSETA, &stbuf) < 0) {
|
||||
g_set_error (error,
|
||||
|
Reference in New Issue
Block a user