aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Schrock <steve.schrock@getcruise.com>2024-02-29 09:31:38 -0600
committerDenis Kenzior <denkenz@gmail.com>2024-02-29 10:23:16 -0600
commitfa411b89f282f93da6b75f6f5d824d286e897414 (patch)
treebd955cf694b18cea0a4b03502f55476e2ea53481
parentc2b2c7e7e108ae767afddbb118cb9f7f258f21de (diff)
downloadofono-fa411b89f282f93da6b75f6f5d824d286e897414.tar.gz
qmi: Create a method to find a service by type
-rw-r--r--drivers/qmimodem/qmi.c41
1 files changed, 22 insertions, 19 deletions
diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index ffb263269..d65a1c155 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -953,39 +953,42 @@ static const void *tlv_get(const void *data, uint16_t size,
return NULL;
}
-bool qmi_device_get_service_version(struct qmi_device *device, uint16_t type,
- uint16_t *major, uint16_t *minor)
+static const struct qmi_service_info *__find_service_info_by_type(
+ struct qmi_device *device, uint16_t type)
{
+ const struct qmi_service_info *info = NULL;
const struct l_queue_entry *entry;
for (entry = l_queue_get_entries(device->service_infos);
entry; entry = entry->next) {
- const struct qmi_service_info *info = entry->data;
-
- if (info->service_type != type)
- continue;
+ struct qmi_service_info *data = entry->data;
- *major = info->major;
- *minor = info->minor;
- return true;
+ if (data->service_type == type) {
+ info = data;
+ break;
+ }
}
- return false;
+ return info;
}
-bool qmi_device_has_service(struct qmi_device *device, uint16_t type)
+bool qmi_device_get_service_version(struct qmi_device *device, uint16_t type,
+ uint16_t *major, uint16_t *minor)
{
- const struct l_queue_entry *entry;
+ const struct qmi_service_info *info;
- for (entry = l_queue_get_entries(device->service_infos);
- entry; entry = entry->next) {
- const struct qmi_service_info *info = entry->data;
+ info = __find_service_info_by_type(device, type);
+ if (!info)
+ return false;
- if (info->service_type == type)
- return true;
- }
+ *major = info->major;
+ *minor = info->minor;
+ return true;
+}
- return false;
+bool qmi_device_has_service(struct qmi_device *device, uint16_t type)
+{
+ return __find_service_info_by_type(device, type);
}
struct discover_data {