aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-06-09 17:45:33 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-02-17 13:25:03 +0100
commit920fefa8e2c7660422a23d79fa45f7cd488e5198 (patch)
treed2f8d778dd9d80909cb8494550c5c4824a8d5fc5
parente6d085246f3d47e162084234b1199b5ebb840cca (diff)
modem: new property to allow specifying longer timeouts when configuring IP
This IpTimeout property will be read by NetworkManager, and used as the time to wait for pppd to establish the IP configuration.
-rw-r--r--introspection/org.freedesktop.ModemManager.Modem.xml6
-rw-r--r--src/mm-modem-base.c11
-rw-r--r--src/mm-modem.c10
-rw-r--r--src/mm-modem.h4
4 files changed, 30 insertions, 1 deletions
diff --git a/introspection/org.freedesktop.ModemManager.Modem.xml b/introspection/org.freedesktop.ModemManager.Modem.xml
index 3f80e21f..7da014f0 100644
--- a/introspection/org.freedesktop.ModemManager.Modem.xml
+++ b/introspection/org.freedesktop.ModemManager.Modem.xml
@@ -195,6 +195,12 @@
</tp:docstring>
</property>
+ <property name="IpTimeout" type="u" access="read">
+ <tp:docstring>
+ Maximum time to wait for a successful IP establishment, when PPP is used.
+ </tp:docstring>
+ </property>
+
<!-- Enabled should be folded into this. -->
<property name="State" type="u" access="read" tp:type="MM_MODEM_STATE">
<tp:docstring>
diff --git a/src/mm-modem-base.c b/src/mm-modem-base.c
index 08c098de..b3b1db2c 100644
--- a/src/mm-modem-base.c
+++ b/src/mm-modem-base.c
@@ -60,6 +60,7 @@ typedef struct {
guint32 unlock_retries;
GArray *pin_retry_counts;
guint32 ip_method;
+ guint32 ip_timeout;
gboolean valid;
MMModemState state;
@@ -925,6 +926,9 @@ set_property (GObject *object, guint prop_id,
case MM_MODEM_PROP_IP_METHOD:
priv->ip_method = g_value_get_uint (value);
break;
+ case MM_MODEM_PROP_IP_TIMEOUT:
+ priv->ip_timeout = g_value_get_uint (value);
+ break;
case MM_MODEM_PROP_VALID:
case MM_MODEM_PROP_TYPE:
case MM_MODEM_PROP_ENABLED:
@@ -997,6 +1001,9 @@ get_property (GObject *object, guint prop_id,
case MM_MODEM_PROP_IP_METHOD:
g_value_set_uint (value, priv->ip_method);
break;
+ case MM_MODEM_PROP_IP_TIMEOUT:
+ g_value_set_uint (value, priv->ip_timeout);
+ break;
case MM_MODEM_PROP_VALID:
g_value_set_boolean (value, priv->valid);
break;
@@ -1106,6 +1113,10 @@ mm_modem_base_class_init (MMModemBaseClass *klass)
MM_MODEM_IP_METHOD);
g_object_class_override_property (object_class,
+ MM_MODEM_PROP_IP_TIMEOUT,
+ MM_MODEM_IP_TIMEOUT);
+
+ g_object_class_override_property (object_class,
MM_MODEM_PROP_VALID,
MM_MODEM_VALID);
diff --git a/src/mm-modem.c b/src/mm-modem.c
index a78587b2..adfbeb26 100644
--- a/src/mm-modem.c
+++ b/src/mm-modem.c
@@ -862,6 +862,16 @@ mm_modem_init (gpointer g_iface)
g_object_interface_install_property
(g_iface,
+ g_param_spec_uint (MM_MODEM_IP_TIMEOUT,
+ "IP timeout",
+ "Maximum time to wait for a successful IP establishment, "
+ "when PPP is used. Modems with special needs will set this "
+ "property to a value greater than 0",
+ 0, G_MAXUINT32, 0,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ g_object_interface_install_property
+ (g_iface,
g_param_spec_boolean (MM_MODEM_VALID,
"Valid",
"Modem is valid",
diff --git a/src/mm-modem.h b/src/mm-modem.h
index 2041fa0f..19640ac8 100644
--- a/src/mm-modem.h
+++ b/src/mm-modem.h
@@ -38,6 +38,7 @@
#define MM_MODEM_DRIVER "driver"
#define MM_MODEM_TYPE "type"
#define MM_MODEM_IP_METHOD "ip-method"
+#define MM_MODEM_IP_TIMEOUT "ip-timeout"
#define MM_MODEM_ENABLED "enabled"
#define MM_MODEM_EQUIPMENT_IDENTIFIER "equipment-identifier"
#define MM_MODEM_DEVICE_IDENTIFIER "device-identifier"
@@ -71,7 +72,8 @@ typedef enum {
MM_MODEM_PROP_DEVICE_IDENTIFIER,
MM_MODEM_PROP_HW_VID, /* Not exported */
MM_MODEM_PROP_HW_PID, /* Not exported */
- MM_MODEM_PROP_NETWORK_TIMEZONE
+ MM_MODEM_PROP_NETWORK_TIMEZONE,
+ MM_MODEM_PROP_IP_TIMEOUT
} MMModemProp;
typedef struct _MMModem MMModem;