diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-12 23:28:43 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-13 00:02:54 +0200 |
commit | 421ead1f43b9db52a9b846ae4551c3212a3e98e6 (patch) | |
tree | 25920794c64e3e6196919a20441b16429ff988e3 /src/mbimcli | |
parent | b72136e806e94ac9351b05e7871fa1a05bc3fb2f (diff) |
libmbim-glib,mbimcli: 'Version' command is part of MBIMEx v2.0
Diffstat (limited to 'src/mbimcli')
-rw-r--r-- | src/mbimcli/mbimcli-ms-basic-connect-extensions.c | 188 |
1 files changed, 94 insertions, 94 deletions
diff --git a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c index 4240952..e9bda85 100644 --- a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c +++ b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c @@ -42,12 +42,12 @@ static gchar *query_slot_info_status_str; static gboolean query_device_slot_mappings_flag; static gchar *set_device_slot_mappings_str; static gboolean query_location_info_status_flag; -static gchar *query_version_str; static gboolean query_provisioned_contexts_flag; static gchar *set_provisioned_contexts_str; static gboolean query_registration_parameters_flag; static gchar *set_registration_parameters_str; static gboolean query_base_stations_flag; +static gchar *query_version_str; static gboolean query_pco_arg_parse (const gchar *option_name, const gchar *value, @@ -96,10 +96,6 @@ static GOptionEntry entries[] = { "Query location info status", NULL }, - { "ms-query-version", 0, 0,G_OPTION_ARG_STRING , &query_version_str, - "Exchange supported version information", - "[(MBIM version),(MBIM extended version)]" - }, { "ms-set-provisioned-contexts", 0, 0, G_OPTION_ARG_STRING, &set_provisioned_contexts_str, "Set provisioned contexts (allowed keys: operation, context-type, ip-type, state, roaming-control, media-type, source, auth, compression, username, password, access-string)", "[\"key=value,...\"]" @@ -120,6 +116,10 @@ static GOptionEntry entries[] = { "Query base stations info", NULL }, + { "ms-query-version", 0, 0,G_OPTION_ARG_STRING , &query_version_str, + "Exchange supported version information. Since MBIMEx v2.0.", + "[(MBIM version),(MBIM extended version)]" + }, { NULL } }; @@ -197,12 +197,12 @@ mbimcli_ms_basic_connect_extensions_options_enabled (void) !!set_device_slot_mappings_str + query_device_slot_mappings_flag + query_location_info_status_flag + - !!query_version_str + query_provisioned_contexts_flag + !!set_provisioned_contexts_str + query_registration_parameters_flag + !!set_registration_parameters_str + - query_base_stations_flag); + query_base_stations_flag + + !!query_version_str); if (n_actions > 1) { g_printerr ("error: too many Microsoft Basic Connect Extensions Service actions requested\n"); @@ -754,41 +754,6 @@ query_location_info_status_ready (MbimDevice *device, shutdown (TRUE); } -static void -query_version_ready (MbimDevice *device, - GAsyncResult *res) -{ - g_autoptr(MbimMessage) response = NULL; - g_autoptr(GError) error = NULL; - guint16 mbim_version; - guint16 mbim_ext_version; - - response = mbim_device_command_finish (device, res, &error); - if (!response || !mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error)) { - g_printerr ("error: operation failed: %s\n", error->message); - shutdown (FALSE); - return; - } - - g_print ("[%s] Successfully exchanged version information\n", - mbim_device_get_path_display (device)); - if (!mbim_message_ms_basic_connect_extensions_version_response_parse ( - response, - &mbim_version, - &mbim_ext_version, - &error)) { - g_printerr ("error: couldn't parse response message: %s\n", error->message); - shutdown (FALSE); - return; - } - - g_print (" MBIM version : %x.%02x\n", mbim_version >> 8, mbim_version & 0xFF); - g_print (" MBIM extended version : %x.%02x\n", mbim_ext_version >> 8, mbim_ext_version & 0xFF); - - shutdown (TRUE); - return; -} - typedef struct { MbimContextOperation operation; MbimContextIpType ip_type; @@ -1423,6 +1388,41 @@ query_base_stations_ready (MbimDevice *device, shutdown (TRUE); } +static void +query_version_ready (MbimDevice *device, + GAsyncResult *res) +{ + g_autoptr(MbimMessage) response = NULL; + g_autoptr(GError) error = NULL; + guint16 mbim_version; + guint16 mbim_ext_version; + + response = mbim_device_command_finish (device, res, &error); + if (!response || !mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error)) { + g_printerr ("error: operation failed: %s\n", error->message); + shutdown (FALSE); + return; + } + + g_print ("[%s] Successfully exchanged version information\n", + mbim_device_get_path_display (device)); + if (!mbim_message_ms_basic_connect_extensions_v2_version_response_parse ( + response, + &mbim_version, + &mbim_ext_version, + &error)) { + g_printerr ("error: couldn't parse response message: %s\n", error->message); + shutdown (FALSE); + return; + } + + g_print (" MBIM version : %x.%02x\n", mbim_version >> 8, mbim_version & 0xFF); + g_print (" MBIM extended version : %x.%02x\n", mbim_ext_version >> 8, mbim_ext_version & 0xFF); + + shutdown (TRUE); + return; +} + void mbimcli_ms_basic_connect_extensions_run (MbimDevice *device, GCancellable *cancellable) @@ -1574,58 +1574,6 @@ mbimcli_ms_basic_connect_extensions_run (MbimDevice *device, return; } - if (query_version_str) { - guint16 bcd_mbim_version = 0; - guint16 bcd_mbim_extended_version = 0; - guint8 mbim_version_major = 0; - guint8 mbim_version_minor = 0; - guint8 mbim_extended_version_major = 0; - guint8 mbim_extended_version_minor = 0; - g_auto(GStrv) split = NULL; - g_auto(GStrv) mbim_version = NULL; - g_auto(GStrv) mbim_extended_version = NULL; - - split = g_strsplit (query_version_str, ",", -1); - - if (g_strv_length (split) > 2) { - g_printerr ("error: couldn't parse input string, too many arguments\n"); - return; - } - - if (g_strv_length (split) < 2) { - g_printerr ("error: couldn't parse input string, missing arguments\n"); - return; - } - - mbim_version = g_strsplit (split[0], ".", -1); - if (!mbimcli_read_uint8_from_bcd_string (mbim_version[0], &mbim_version_major) || - !mbimcli_read_uint8_from_bcd_string (mbim_version[1], &mbim_version_minor)) { - g_printerr ("error: couldn't parse version string\n"); - return; - } - bcd_mbim_version = mbim_version_major << 8 | mbim_version_minor; - g_debug ("BCD version built: 0x%x", bcd_mbim_version); - - mbim_extended_version = g_strsplit (split[1], ".", -1); - if (!mbimcli_read_uint8_from_bcd_string (mbim_extended_version[0], &mbim_extended_version_major) || - !mbimcli_read_uint8_from_bcd_string (mbim_extended_version[1], &mbim_extended_version_minor)) { - g_printerr ("error: couldn't parse extended version string\n"); - return; - } - bcd_mbim_extended_version = mbim_extended_version_major << 8 | mbim_extended_version_minor; - g_debug ("BCD extended version built: 0x%x", bcd_mbim_extended_version); - - g_debug ("Asynchronously querying Version..."); - request = mbim_message_ms_basic_connect_extensions_version_query_new (bcd_mbim_version, bcd_mbim_extended_version, NULL); - mbim_device_command (ctx->device, - request, - 10, - ctx->cancellable, - (GAsyncReadyCallback)query_version_ready, - NULL); - return; - } - if (set_provisioned_contexts_str) { g_auto(ProvisionedContextProperties) props = { .access_string = NULL, @@ -1775,5 +1723,57 @@ mbimcli_ms_basic_connect_extensions_run (MbimDevice *device, return; } + if (query_version_str) { + guint16 bcd_mbim_version = 0; + guint16 bcd_mbim_extended_version = 0; + guint8 mbim_version_major = 0; + guint8 mbim_version_minor = 0; + guint8 mbim_extended_version_major = 0; + guint8 mbim_extended_version_minor = 0; + g_auto(GStrv) split = NULL; + g_auto(GStrv) mbim_version = NULL; + g_auto(GStrv) mbim_extended_version = NULL; + + split = g_strsplit (query_version_str, ",", -1); + + if (g_strv_length (split) > 2) { + g_printerr ("error: couldn't parse input string, too many arguments\n"); + return; + } + + if (g_strv_length (split) < 2) { + g_printerr ("error: couldn't parse input string, missing arguments\n"); + return; + } + + mbim_version = g_strsplit (split[0], ".", -1); + if (!mbimcli_read_uint8_from_bcd_string (mbim_version[0], &mbim_version_major) || + !mbimcli_read_uint8_from_bcd_string (mbim_version[1], &mbim_version_minor)) { + g_printerr ("error: couldn't parse version string\n"); + return; + } + bcd_mbim_version = mbim_version_major << 8 | mbim_version_minor; + g_debug ("BCD version built: 0x%x", bcd_mbim_version); + + mbim_extended_version = g_strsplit (split[1], ".", -1); + if (!mbimcli_read_uint8_from_bcd_string (mbim_extended_version[0], &mbim_extended_version_major) || + !mbimcli_read_uint8_from_bcd_string (mbim_extended_version[1], &mbim_extended_version_minor)) { + g_printerr ("error: couldn't parse extended version string\n"); + return; + } + bcd_mbim_extended_version = mbim_extended_version_major << 8 | mbim_extended_version_minor; + g_debug ("BCD extended version built: 0x%x", bcd_mbim_extended_version); + + g_debug ("Asynchronously querying Version..."); + request = mbim_message_ms_basic_connect_extensions_v2_version_query_new (bcd_mbim_version, bcd_mbim_extended_version, NULL); + mbim_device_command (ctx->device, + request, + 10, + ctx->cancellable, + (GAsyncReadyCallback)query_version_ready, + NULL); + return; + } + g_warn_if_reached (); } |