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

Aleksander Morgado aleksander at aleksander.es
Tue Apr 18 17:10:35 UTC 2017


On 25/03/17 19:32, Aleksander Morgado wrote:
> 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.

This has been merged to git master.

> ---
>  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 */
> 


-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list