aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-03-31 10:39:43 +0200
committerDan Williams <dcbw@redhat.com>2011-04-04 21:46:51 -0500
commite520c2d448eb44464e0c932ac71a4895f7c8ea32 (patch)
tree9ecdeb41ad13def08719525d7acb16cf5ba8df0a /src
parent95b0863f8751fe4fc80782f8232bce7ef5d1ca0c (diff)
generic-gsm: make flow control setup command a property
Diffstat (limited to 'src')
-rw-r--r--src/mm-generic-gsm.c21
-rw-r--r--src/mm-generic-gsm.h2
2 files changed, 21 insertions, 2 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index 98713b0d..b3452b8d 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -1352,6 +1352,7 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self,
MMCallbackInfo *info)
{
MMGenericGsmPrivate *priv;
+ gchar *cmd = NULL;
g_return_if_fail (self != NULL);
g_return_if_fail (MM_IS_GENERIC_GSM (self));
@@ -1377,8 +1378,11 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self,
}
}
- /* Try to enable XON/XOFF flow control */
- mm_at_serial_port_queue_command (priv->primary, "+IFC=1,1", 3, NULL, NULL);
+ /* Try to enable flow control */
+ g_object_get (G_OBJECT (info->modem), MM_GENERIC_GSM_FLOW_CONTROL_CMD, &cmd, NULL);
+ if (cmd && strlen (cmd))
+ mm_at_serial_port_queue_command (priv->primary, cmd, 3, NULL, NULL);
+ g_free (cmd);
mm_at_serial_port_queue_command (priv->primary, "+CIND=?", 3, cind_cb, self);
@@ -4825,6 +4829,7 @@ set_property (GObject *object, guint prop_id,
case MM_GENERIC_GSM_PROP_USSD_STATE:
case MM_GENERIC_GSM_PROP_USSD_NETWORK_REQUEST:
case MM_GENERIC_GSM_PROP_USSD_NETWORK_NOTIFICATION:
+ case MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD:
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -4932,6 +4937,10 @@ get_property (GObject *object, guint prop_id,
case MM_GENERIC_GSM_PROP_USSD_NETWORK_NOTIFICATION:
g_value_set_string (value, "");
break;
+ case MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD:
+ /* By default, try to set XOFF/XON flow control */
+ g_value_set_string (value, "+IFC=1,1");
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -5075,5 +5084,13 @@ mm_generic_gsm_class_init (MMGenericGsmClass *klass)
"Optional initialization command (errors ignored)",
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_class_install_property
+ (object_class, MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD,
+ g_param_spec_string (MM_GENERIC_GSM_FLOW_CONTROL_CMD,
+ "FlowControlCommand",
+ "Flow control configuration command (errors ignored)",
+ "+IFC=1,1",
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
}
diff --git a/src/mm-generic-gsm.h b/src/mm-generic-gsm.h
index 57126600..c6cb7fb2 100644
--- a/src/mm-generic-gsm.h
+++ b/src/mm-generic-gsm.h
@@ -37,6 +37,7 @@
#define MM_GENERIC_GSM_POWER_DOWN_CMD "power-down-cmd"
#define MM_GENERIC_GSM_INIT_CMD "init-cmd"
#define MM_GENERIC_GSM_INIT_CMD_OPTIONAL "init-cmd-optional"
+#define MM_GENERIC_GSM_FLOW_CONTROL_CMD "flow-control-cmd"
typedef enum {
MM_GENERIC_GSM_PROP_FIRST = 0x2000,
@@ -57,6 +58,7 @@ typedef enum {
MM_GENERIC_GSM_PROP_USSD_STATE,
MM_GENERIC_GSM_PROP_USSD_NETWORK_REQUEST,
MM_GENERIC_GSM_PROP_USSD_NETWORK_NOTIFICATION,
+ MM_GENERIC_GSM_PROP_FLOW_CONTROL_CMD
} MMGenericGsmProp;
typedef enum {