From f20da0e7f9e62d0eacf96f1acd90eda5d114eed4 Mon Sep 17 00:00:00 2001 From: Giacinto Cifelli Date: Wed, 24 Oct 2018 07:28:10 +0200 Subject: [PATCH] modem: Implement ofono_modem_set_timeout_hint this patch provides the handling for the modem-depending powered timeout It provides the trivial implementation for ofono_modem_set_powered_timeout_hint, introducing the ofono_modem variable timeout_hint, used together with the existing ofono_modem variable timeout. The default value, previously hardcoded as a magic number, is provided by the DEFAULT_POWERED_TIMEOUT define and set as soon as the ofono_modem struct is created, and then can be overwritten by the aforementioned ofono_modem_set_powered_timeout_hint. --- src/modem.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/modem.c b/src/modem.c index 9e254482..838967bf 100644 --- a/src/modem.c +++ b/src/modem.c @@ -34,6 +34,8 @@ #include "common.h" +#define DEFAULT_POWERED_TIMEOUT (20) + static GSList *g_devinfo_drivers = NULL; static GSList *g_driver_list = NULL; static GSList *g_modem_list = NULL; @@ -75,6 +77,7 @@ struct ofono_modem { char *lock_owner; guint lock_watch; guint timeout; + guint timeout_hint; ofono_bool_t online; struct ofono_watchlist *online_watches; struct ofono_watchlist *powered_watches; @@ -1055,7 +1058,7 @@ static DBusMessage *set_property_lockdown(struct ofono_modem *modem, } modem->pending = dbus_message_ref(msg); - modem->timeout = g_timeout_add_seconds(20, + modem->timeout = g_timeout_add_seconds(modem->timeout_hint, set_powered_timeout, modem); return NULL; } @@ -1133,7 +1136,8 @@ static DBusMessage *modem_set_property(DBusConnection *conn, return __ofono_error_failed(msg); modem->pending = dbus_message_ref(msg); - modem->timeout = g_timeout_add_seconds(20, + modem->timeout = g_timeout_add_seconds( + modem->timeout_hint, set_powered_timeout, modem); return NULL; } @@ -1843,6 +1847,12 @@ ofono_bool_t ofono_modem_get_boolean(struct ofono_modem *modem, const char *key) return value; } +void ofono_modem_set_powered_timeout_hint(struct ofono_modem *modem, + unsigned int seconds) +{ + modem->timeout_hint = seconds; +} + void ofono_modem_set_name(struct ofono_modem *modem, const char *name) { if (modem->name) @@ -1904,6 +1914,7 @@ struct ofono_modem *ofono_modem_create(const char *name, const char *type) modem->driver_type = g_strdup(type); modem->properties = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, unregister_property); + modem->timeout_hint = DEFAULT_POWERED_TIMEOUT; g_modem_list = g_slist_prepend(g_modem_list, modem);