diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-08-08 16:32:35 +0200 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-08-10 04:26:12 +0000 |
commit | ff6a82f5b754366db042cc602e1ffbbf46682749 (patch) | |
tree | ddb551805e918fc7da0717291b08410db3ff56ae /src | |
parent | cf500014b6db4ab9548d9f6fde35c21ab4c05697 (diff) |
broadband-modem: check if modem implements MBIM_CID_USSD
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 79c2726f..431fda71 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -78,11 +78,14 @@ struct _MMBroadbandModemMbimPrivate { gchar *caps_firmware_info; gchar *caps_hardware_info; + /* Supported features */ + gboolean is_pco_supported; + gboolean is_ussd_supported; + /* Process unsolicited notifications */ guint notification_id; ProcessNotificationFlag setup_flags; ProcessNotificationFlag enable_flags; - gboolean is_pco_supported; /* 3GPP registration helpers */ gchar *current_operator_id; @@ -1751,7 +1754,6 @@ query_device_services_ready (MbimDevice *device, guint32 device_services_count; self = g_task_get_source_object (task); - self->priv->is_pco_supported = FALSE; response = mbim_device_command_finish (device, res, &error); if (response && @@ -1769,18 +1771,29 @@ query_device_services_ready (MbimDevice *device, guint32 j; service = mbim_uuid_to_service (&device_services[i]->device_service_id); - if (service != MBIM_SERVICE_BASIC_CONNECT_EXTENSIONS) - continue; - for (j = 0; j < device_services[i]->cids_count; j++) { - if (device_services[i]->cids[j] == MBIM_CID_BASIC_CONNECT_EXTENSIONS_PCO) { - mm_dbg ("PCO is supported"); - self->priv->is_pco_supported = TRUE; + switch (service) { + case MBIM_SERVICE_BASIC_CONNECT_EXTENSIONS: + for (j = 0; j < device_services[i]->cids_count; j++) { + if (device_services[i]->cids[j] == MBIM_CID_BASIC_CONNECT_EXTENSIONS_PCO) { + mm_dbg ("PCO is supported"); + self->priv->is_pco_supported = TRUE; + break; + } + } + break; + case MBIM_SERVICE_USSD: + for (j = 0; j < device_services[i]->cids_count; j++) { + if (device_services[i]->cids[j] == MBIM_CID_USSD) { + mm_dbg ("USSD is supported"); + self->priv->is_ussd_supported = TRUE; + break; + } + } + break; + default: break; - } } - - break; } mbim_device_service_element_array_free (device_services); } else { |