aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-plugin-base.c1
-rw-r--r--src/mm-serial-port.c18
-rw-r--r--src/mm-serial-port.h13
3 files changed, 25 insertions, 7 deletions
diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c
index 88dd5405..1b5fc64c 100644
--- a/src/mm-plugin-base.c
+++ b/src/mm-plugin-base.c
@@ -872,6 +872,7 @@ mm_plugin_base_probe_port (MMPluginBase *self,
g_object_set (serial,
MM_SERIAL_PORT_SEND_DELAY, send_delay_us,
MM_PORT_CARRIER_DETECT, FALSE,
+ MM_SERIAL_PORT_SPEW_CONTROL, TRUE,
NULL);
mm_at_serial_port_set_response_parser (serial,
diff --git a/src/mm-serial-port.c b/src/mm-serial-port.c
index f05a1aea..ab196140 100644
--- a/src/mm-serial-port.c
+++ b/src/mm-serial-port.c
@@ -44,6 +44,7 @@ enum {
PROP_STOPBITS,
PROP_SEND_DELAY,
PROP_FD,
+ PROP_SPEW_CONTROL,
LAST_PROP
};
@@ -67,6 +68,7 @@ typedef struct {
char parity;
guint stopbits;
guint64 send_delay;
+ gboolean spew_control;
guint queue_id;
guint watch_id;
@@ -657,7 +659,7 @@ data_available (GIOChannel *source,
}
/* Make sure the response doesn't grow too long */
- if (priv->response->len > SERIAL_BUF_SIZE) {
+ if ((priv->response->len > SERIAL_BUF_SIZE) && priv->spew_control) {
/* Notify listeners and then trim the buffer */
g_signal_emit_by_name (self, "buffer-full", priv->response);
g_byte_array_remove_range (priv->response, 0, (SERIAL_BUF_SIZE / 2));
@@ -1250,6 +1252,9 @@ set_property (GObject *object, guint prop_id,
case PROP_SEND_DELAY:
priv->send_delay = g_value_get_uint64 (value);
break;
+ case PROP_SPEW_CONTROL:
+ priv->spew_control = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1281,6 +1286,9 @@ get_property (GObject *object, guint prop_id,
case PROP_SEND_DELAY:
g_value_set_uint64 (value, priv->send_delay);
break;
+ case PROP_SPEW_CONTROL:
+ g_value_set_boolean (value, priv->spew_control);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1383,6 +1391,14 @@ mm_serial_port_class_init (MMSerialPortClass *klass)
0, G_MAXUINT64, 0,
G_PARAM_READWRITE));
+ g_object_class_install_property
+ (object_class, PROP_SPEW_CONTROL,
+ g_param_spec_boolean (MM_SERIAL_PORT_SPEW_CONTROL,
+ "SpewControl",
+ "Spew control",
+ FALSE,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
/* Signals */
g_signal_new ("buffer-full",
G_OBJECT_CLASS_TYPE (object_class),
diff --git a/src/mm-serial-port.h b/src/mm-serial-port.h
index 5fee1b4f..57ef94be 100644
--- a/src/mm-serial-port.h
+++ b/src/mm-serial-port.h
@@ -30,12 +30,13 @@
#define MM_IS_SERIAL_PORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MM_TYPE_SERIAL_PORT))
#define MM_SERIAL_PORT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MM_TYPE_SERIAL_PORT, MMSerialPortClass))
-#define MM_SERIAL_PORT_BAUD "baud"
-#define MM_SERIAL_PORT_BITS "bits"
-#define MM_SERIAL_PORT_PARITY "parity"
-#define MM_SERIAL_PORT_STOPBITS "stopbits"
-#define MM_SERIAL_PORT_SEND_DELAY "send-delay"
-#define MM_SERIAL_PORT_FD "fd" /* Construct-only */
+#define MM_SERIAL_PORT_BAUD "baud"
+#define MM_SERIAL_PORT_BITS "bits"
+#define MM_SERIAL_PORT_PARITY "parity"
+#define MM_SERIAL_PORT_STOPBITS "stopbits"
+#define MM_SERIAL_PORT_SEND_DELAY "send-delay"
+#define MM_SERIAL_PORT_FD "fd" /* Construct-only */
+#define MM_SERIAL_PORT_SPEW_CONTROL "spew-control" /* Construct-only */
typedef struct _MMSerialPort MMSerialPort;
typedef struct _MMSerialPortClass MMSerialPortClass;