modem.h: ofono_modem_set_powered_timeout_hint
PATCH 1/2 modem.h: ofono_modem_set_powered_timeout_hint
function to set the powered timeout dynamically.
The function is effective if called before Powered=true, so it is best called in udevng.
If not called, the timeout is set by default to 20 seconds.
--- include/modem.h | 3 +++ 1 file changed, 3 insertions(+)
include/modem.h +3 -0
@@ -127,6 +127,9 @@ void ofono_modem_driver_unregister(const struct ofono_modem_driver *);struct ofono_modem *ofono_modem_find (ofono_modem_compare_cb_t func,void *user_data); +void ofono_modem_set_powered_timeout_hint (struct ofono_modem *modem, +unsigned int seconds); + #ifdef __cplusplus }#endif
Signature · 1 line
2.17.1
PATCH 2/2 src/modem - 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 | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
src/modem.c +14 -2
@@ -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,13 @@ 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 +1915,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);
Signature · 1 line
2.17.1
Hi Giacinto,
Quoted 9 lines · Giacinto Cifelli
function to set the powered timeout dynamically.
The function is effective if called before Powered=true, so it is best called in udevng.
If not called, the timeout is set by default to 20 seconds.--- include/modem.h | 3 +++ 1 file changed, 3 insertions(+)
Both applied after tweaking some style issues & the commit description.
Regards,
-Denis