summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-10-12 23:28:43 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-10-13 00:02:54 +0200
commit421ead1f43b9db52a9b846ae4551c3212a3e98e6 (patch)
tree25920794c64e3e6196919a20441b16429ff988e3
parentb72136e806e94ac9351b05e7871fa1a05bc3fb2f (diff)
libmbim-glib,mbimcli: 'Version' command is part of MBIMEx v2.0
-rw-r--r--data/mbim-service-ms-basic-connect-extensions-v2.json21
-rwxr-xr-xdata/mbim-service-ms-basic-connect-extensions.json14
-rw-r--r--src/libmbim-glib/generated/meson.build2
-rw-r--r--src/libmbim-glib/mbim-cid.h2
-rw-r--r--src/libmbim-glib/mbim-device.c4
-rw-r--r--src/libmbim-glib/mbim-proxy.c2
-rw-r--r--src/mbimcli/mbimcli-ms-basic-connect-extensions.c188
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 ();
}