summaryrefslogtreecommitdiff
path: root/src/mbimcli
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 /src/mbimcli
parentb72136e806e94ac9351b05e7871fa1a05bc3fb2f (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.c188
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 ();
}