From 920fefa8e2c7660422a23d79fa45f7cd488e5198 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 9 Jun 2011 17:45:33 +0200 Subject: 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. --- src/mm-modem-base.c | 11 +++++++++++ src/mm-modem.c | 10 ++++++++++ src/mm-modem.h | 4 +++- 3 files changed, 24 insertions(+), 1 deletion(-) (limited to 'src') 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; @@ -1105,6 +1112,10 @@ mm_modem_base_class_init (MMModemBaseClass *klass) MM_MODEM_PROP_IP_METHOD, 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 @@ -860,6 +860,16 @@ mm_modem_init (gpointer g_iface) MM_MODEM_IP_METHOD_PPP, G_PARAM_READWRITE)); + 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, 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; -- cgit v1.2.3-70-g09d2