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 | |
parent | b72136e806e94ac9351b05e7871fa1a05bc3fb2f (diff) |
libmbim-glib,mbimcli: 'Version' command is part of MBIMEx v2.0
-rw-r--r-- | data/mbim-service-ms-basic-connect-extensions-v2.json | 21 | ||||
-rwxr-xr-x | data/mbim-service-ms-basic-connect-extensions.json | 14 | ||||
-rw-r--r-- | src/libmbim-glib/generated/meson.build | 2 | ||||
-rw-r--r-- | src/libmbim-glib/mbim-cid.h | 2 | ||||
-rw-r--r-- | src/libmbim-glib/mbim-device.c | 4 | ||||
-rw-r--r-- | src/libmbim-glib/mbim-proxy.c | 2 | ||||
-rw-r--r-- | src/mbimcli/mbimcli-ms-basic-connect-extensions.c | 188 |
7 files changed, 120 insertions, 113 deletions
diff --git a/data/mbim-service-ms-basic-connect-extensions-v2.json b/data/mbim-service-ms-basic-connect-extensions-v2.json new file mode 100644 index 0000000..d06d9c8 --- /dev/null +++ b/data/mbim-service-ms-basic-connect-extensions-v2.json @@ -0,0 +1,21 @@ +[ + // ********************************************************************************* + { "type" : "Service", + "name" : "Ms Basic Connect Extensions V2", + "mbimex-service" : "Ms Basic Connect Extensions", + "mbimex-version" : "2.0" }, + + // ********************************************************************************* + + { "name" : "Version", + "type" : "Command", + "since" : "1.28", + "query" : [ { "name" : "MbimVersion", + "format" : "guint16" }, + { "name" : "MbimExtendedVersion", + "format" : "guint16" } ], + "response" : [ { "name" : "MbimVersion", + "format" : "guint16" }, + { "name" : "MbimExtendedVersion", + "format" : "guint16" } ] } +] diff --git a/data/mbim-service-ms-basic-connect-extensions.json b/data/mbim-service-ms-basic-connect-extensions.json index 9c544e8..3e6da96 100755 --- a/data/mbim-service-ms-basic-connect-extensions.json +++ b/data/mbim-service-ms-basic-connect-extensions.json @@ -229,20 +229,6 @@ { "name" : "ExecutorIndex", "format" : "guint32" } ] }, - // ********************************************************************************* - - { "name" : "Version", - "type" : "Command", - "since" : "1.28", - "query" : [ { "name" : "MbimVersion", - "format" : "guint16" }, - { "name" : "MbimExtendedVersion", - "format" : "guint16" } ], - "response" : [ { "name" : "MbimVersion", - "format" : "guint16" }, - { "name" : "MbimExtendedVersion", - "format" : "guint16" } ] }, - //************************************************************************************ { "name" : "Location Info Status", diff --git a/src/libmbim-glib/generated/meson.build b/src/libmbim-glib/generated/meson.build index 744ce48..deae5f9 100644 --- a/src/libmbim-glib/generated/meson.build +++ b/src/libmbim-glib/generated/meson.build @@ -93,7 +93,7 @@ services_data = [ [['basic-connect', 'ms-basic-connect-v2', 'ms-basic-connect-v3'], true], [['dss'], true], [['intel-firmware-update'], true], - [['ms-basic-connect-extensions', 'ms-basic-connect-extensions-v3'], true], + [['ms-basic-connect-extensions', 'ms-basic-connect-extensions-v2', 'ms-basic-connect-extensions-v3'], true], [['ms-uicc-low-level-access'], true], [['ms-firmware-id'], true], [['ms-host-shutdown'], true], diff --git a/src/libmbim-glib/mbim-cid.h b/src/libmbim-glib/mbim-cid.h index 02b0fda..a14849e 100644 --- a/src/libmbim-glib/mbim-cid.h +++ b/src/libmbim-glib/mbim-cid.h @@ -333,7 +333,7 @@ typedef enum { /*< since=1.26 >*/ * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_DEVICE_RESET: Device reset. * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_BASE_STATIONS_INFO: Base stations info. Since 1.28. * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_LOCATION_INFO_STATUS: Location info status. Since 1.28. - * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_VERSION: Protocol version query and report. Since 1.28. + * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_VERSION: Protocol version query and report, defined in MBIMEx v2.0. Since 1.28. * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_REGISTRATION_PARAMETERS: Registration parameters. Since 1.28 * * MBIM commands in the %MBIM_SERVICE_MS_BASIC_CONNECT_EXTENSIONS service. diff --git a/src/libmbim-glib/mbim-device.c b/src/libmbim-glib/mbim-device.c index fce46b4..f8a476f 100644 --- a/src/libmbim-glib/mbim-device.c +++ b/src/libmbim-glib/mbim-device.c @@ -1615,7 +1615,7 @@ ms_ext_version_message_ready (MbimDevice *self, response = mbim_device_command_finish (self, res, &error); if (!response || !mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error) || - !mbim_message_ms_basic_connect_extensions_version_response_parse ( + !mbim_message_ms_basic_connect_extensions_v2_version_response_parse ( response, &mbim_version, &ms_mbimex_version, @@ -1669,7 +1669,7 @@ ms_ext_version_message (GTask *task) else g_assert_not_reached (); - request = mbim_message_ms_basic_connect_extensions_version_query_new (mbim_version, ms_mbimex_version, NULL); + request = mbim_message_ms_basic_connect_extensions_v2_version_query_new (mbim_version, ms_mbimex_version, NULL); g_assert (request); mbim_device_command (self, diff --git a/src/libmbim-glib/mbim-proxy.c b/src/libmbim-glib/mbim-proxy.c index a237305..11c6eb6 100644 --- a/src/libmbim-glib/mbim-proxy.c +++ b/src/libmbim-glib/mbim-proxy.c @@ -1026,7 +1026,7 @@ monitor_ms_basic_connect_extensions_version_response (MbimProxy *self, if (!mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, NULL) || (mbim_message_command_done_get_service (response) != MBIM_SERVICE_MS_BASIC_CONNECT_EXTENSIONS) || (mbim_message_command_done_get_cid (response) != MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_VERSION) || - !mbim_message_ms_basic_connect_extensions_version_response_parse (response, &mbim_version, &ms_mbimex_version, NULL)) + !mbim_message_ms_basic_connect_extensions_v2_version_response_parse (response, &mbim_version, &ms_mbimex_version, NULL)) return; ms_mbimex_version_major = ms_mbimex_version >> 8; 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 (); } |