[PATCH 7/8] port-serial: remove all default flow control settings

Aleksander Morgado aleksander at aleksander.es
Sat Mar 25 18:32:16 UTC 2017


We won't set XON/XOFF by default and we won't allow setting RTS/CTS
via a property. The serial port by default starts with no flow control
configured.
---
 src/mm-port-serial.c | 34 ++++++----------------------------
 src/mm-port-serial.h |  1 -
 2 files changed, 6 insertions(+), 29 deletions(-)

diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
index e55f9062..04ab17fe 100644
--- a/src/mm-port-serial.c
+++ b/src/mm-port-serial.c
@@ -56,7 +56,6 @@ enum {
     PROP_SEND_DELAY,
     PROP_FD,
     PROP_SPEW_CONTROL,
-    PROP_RTS_CTS,
     PROP_FLASH_OK,
 
     LAST_PROP
@@ -97,7 +96,6 @@ struct _MMPortSerialPrivate {
     guint stopbits;
     guint64 send_delay;
     gboolean spew_control;
-    gboolean rts_cts;
     gboolean flash_ok;
 
     guint queue_id;
@@ -433,21 +431,19 @@ real_config_fd (MMPortSerial *self, int fd, GError **error)
                  errno);
     }
 
-    stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXANY );
+    stbuf.c_cflag &= ~(CBAUD | CSIZE | CSTOPB | PARENB | PARODD | CRTSCTS);
+    stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXOFF | IXANY );
     stbuf.c_oflag &= ~(OPOST | OLCUC | OCRNL | ONLCR | ONLRET);
     stbuf.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHONL);
     stbuf.c_cc[VMIN] = 1;
     stbuf.c_cc[VTIME] = 0;
     stbuf.c_cc[VEOF] = 1;
 
-    /* Use software handshaking and ignore parity/framing errors */
-    stbuf.c_iflag |= (IXON | IXOFF | IXANY | IGNPAR);
+    /* Ignore parity/framing errors */
+    stbuf.c_iflag |= IGNPAR;
 
-    /* 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 |= (bits | CREAD | 0 | parity | stopbits | CLOCAL);
+    /* Set up port speed and serial attributes and enable receiver in local mode */
+    stbuf.c_cflag |= (bits | parity | stopbits | CLOCAL | CREAD);
 
     errno = 0;
     if (cfsetispeed (&stbuf, speed) != 0) {
@@ -1621,10 +1617,6 @@ set_speed (MMPortSerial *self, speed_t speed, GError **error)
     cfsetospeed (&options, speed);
     options.c_cflag |= (CLOCAL | CREAD);
 
-    /* Configure flow control as well here */
-    if (self->priv->rts_cts)
-        options.c_cflag |= (CRTSCTS);
-
     return internal_tcsetattr (self, self->priv->fd, &options, error);
 }
 
@@ -1928,9 +1920,6 @@ set_property (GObject *object,
     case PROP_SPEW_CONTROL:
         self->priv->spew_control = g_value_get_boolean (value);
         break;
-    case PROP_RTS_CTS:
-        self->priv->rts_cts = g_value_get_boolean (value);
-        break;
     case PROP_FLASH_OK:
         self->priv->flash_ok = g_value_get_boolean (value);
         break;
@@ -1970,9 +1959,6 @@ get_property (GObject *object,
     case PROP_SPEW_CONTROL:
         g_value_set_boolean (value, self->priv->spew_control);
         break;
-    case PROP_RTS_CTS:
-        g_value_set_boolean (value, self->priv->rts_cts);
-        break;
     case PROP_FLASH_OK:
         g_value_set_boolean (value, self->priv->flash_ok);
         break;
@@ -2081,14 +2067,6 @@ mm_port_serial_class_init (MMPortSerialClass *klass)
                                G_PARAM_READWRITE));
 
     g_object_class_install_property
-        (object_class, PROP_RTS_CTS,
-         g_param_spec_boolean (MM_PORT_SERIAL_RTS_CTS,
-                               "RTSCTS",
-                               "Enable RTS/CTS flow control",
-                               FALSE,
-                               G_PARAM_READWRITE));
-
-    g_object_class_install_property
         (object_class, PROP_FLASH_OK,
          g_param_spec_boolean (MM_PORT_SERIAL_FLASH_OK,
                                "FlashOk",
diff --git a/src/mm-port-serial.h b/src/mm-port-serial.h
index 223b9ce1..0514e360 100644
--- a/src/mm-port-serial.h
+++ b/src/mm-port-serial.h
@@ -36,7 +36,6 @@
 #define MM_PORT_SERIAL_PARITY       "parity"
 #define MM_PORT_SERIAL_STOPBITS     "stopbits"
 #define MM_PORT_SERIAL_SEND_DELAY   "send-delay"
-#define MM_PORT_SERIAL_RTS_CTS      "rts-cts"
 #define MM_PORT_SERIAL_FD           "fd" /* Construct-only */
 #define MM_PORT_SERIAL_SPEW_CONTROL "spew-control" /* Construct-only */
 #define MM_PORT_SERIAL_FLASH_OK     "flash-ok" /* Construct-only */
-- 
2.12.0



More information about the ModemManager-devel mailing list