aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;