aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Schrock <steve.schrock@getcruise.com>2024-02-21 22:17:23 +0000
committerDenis Kenzior <denkenz@gmail.com>2024-02-21 16:23:14 -0600
commita42c37eee09e6c77b0a9cc223509bc3b0e635756 (patch)
tree51c3a49b87032a208bce69963fd10889dbedf6ed
parent4947c7980add2dffaf0f43e622fae609362b3bbb (diff)
downloadofono-a42c37eee09e6c77b0a9cc223509bc3b0e635756.tar.gz
qmimodem: Use l_idle and l_timeout for service creation
-rw-r--r--drivers/qmimodem/qmi.c42
1 files changed, 19 insertions, 23 deletions
diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index 1e127d605..150fd343c 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -1930,7 +1930,7 @@ struct service_create_data {
qmi_create_func_t func;
void *user_data;
qmi_destroy_func_t destroy;
- guint timeout;
+ struct l_timeout *timeout;
uint16_t tid;
};
@@ -1938,10 +1938,8 @@ static void service_create_data_free(gpointer user_data)
{
struct service_create_data *data = user_data;
- if (data->timeout) {
- g_source_remove(data->timeout);
- data->timeout = 0;
- }
+ if (data->timeout)
+ l_timeout_remove(data->timeout);
if (data->destroy)
data->destroy(data->user_data);
@@ -1956,19 +1954,18 @@ struct service_create_shared_data {
qmi_create_func_t func;
void *user_data;
qmi_destroy_func_t destroy;
- guint timeout;
+ struct l_idle *idle;
};
-static gboolean service_create_shared_reply(gpointer user_data)
+static void service_create_shared_reply(struct l_idle *idle, void *user_data)
{
struct service_create_shared_data *data = user_data;
- data->timeout = 0;
+ l_idle_remove(data->idle);
+ data->idle = NULL;
data->func(data->service, data->user_data);
__qmi_device_discovery_complete(data->device, &data->super);
-
- return FALSE;
}
static void service_create_shared_pending_reply(struct qmi_device *device,
@@ -1983,26 +1980,29 @@ static void service_create_shared_pending_reply(struct qmi_device *device,
struct service_create_shared_data *shared_data = l->data;
shared_data->service = qmi_service_ref(service);
- shared_data->timeout = g_timeout_add(
- 0, service_create_shared_reply, shared_data);
+ shared_data->idle = l_idle_create(service_create_shared_reply,
+ shared_data, NULL);
}
g_list_free(*shared);
l_free(shared);
}
-static gboolean service_create_reply(gpointer user_data)
+static void service_create_reply(struct l_timeout *timeout, void *user_data)
{
struct service_create_data *data = user_data;
struct qmi_device *device = data->device;
struct qmi_request *req;
+ DBG("");
+
service_create_shared_pending_reply(device, data->type, NULL);
/* remove request from queues */
req = find_control_request(device, data->tid);
- data->timeout = 0;
+ l_timeout_remove(data->timeout);
+ data->timeout = NULL;
if (data->func)
data->func(NULL, data->user_data);
@@ -2011,8 +2011,6 @@ static gboolean service_create_reply(gpointer user_data)
if (req)
__request_free(req);
-
- return FALSE;
}
static void service_create_callback(uint16_t message, uint16_t length,
@@ -2115,7 +2113,7 @@ static bool service_create(struct qmi_device *device,
service_create_callback, data);
data->tid = __request_submit(device, req);
- data->timeout = g_timeout_add_seconds(8, service_create_reply, data);
+ data->timeout = l_timeout_create(8, service_create_reply, data, NULL);
__qmi_device_discovery_started(device, &data->super);
@@ -2130,10 +2128,8 @@ static void service_create_shared_data_free(gpointer user_data)
{
struct service_create_shared_data *data = user_data;
- if (data->timeout) {
- g_source_remove(data->timeout);
- data->timeout = 0;
- }
+ if (data->idle)
+ l_idle_remove(data->idle);
qmi_service_unref(data->service);
@@ -2190,8 +2186,8 @@ bool qmi_service_create_shared(struct qmi_device *device, uint16_t type,
if (!(type_val & 0x80000000)) {
data->service = qmi_service_ref(service);
- data->timeout = g_timeout_add(
- 0, service_create_shared_reply, data);
+ data->idle = l_idle_create(service_create_shared_reply,
+ data, NULL);
} else
*l = g_list_prepend(*l, data);