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.
This commit is contained in:
Giacinto Cifelli 2018-10-24 07:28:10 +02:00 committed by Denis Kenzior
parent 13467d5dcb
commit f20da0e7f9
1 changed files with 13 additions and 2 deletions

View File

@ -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);