diff options
author | Steve Schrock <steve.schrock@getcruise.com> | 2024-02-29 09:31:38 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2024-02-29 10:23:16 -0600 |
commit | fa411b89f282f93da6b75f6f5d824d286e897414 (patch) | |
tree | bd955cf694b18cea0a4b03502f55476e2ea53481 | |
parent | c2b2c7e7e108ae767afddbb118cb9f7f258f21de (diff) | |
download | ofono-fa411b89f282f93da6b75f6f5d824d286e897414.tar.gz |
qmi: Create a method to find a service by type
-rw-r--r-- | drivers/qmimodem/qmi.c | 41 |
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 { |