summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSom_SP <somashekhar.puttagangaiah@intel.com>2021-09-29 21:33:19 +0530
committerAleksander Morgado <aleksander@aleksander.es>2021-10-25 12:48:51 +0200
commit9eb738c0d632112daad3a5575de0b58d58bd94b2 (patch)
tree0f085606c9face088e1be6076b2b800357eea4fa
parent5b20317ef617315ad5171372282f8dbcf5906a3b (diff)
ms-basic-connect-extensions-v3: implement 'Modem Configuration'
This CID is used to notify the host of the configuration progress and parameters of the device. This CID is added as part of MBIM 3.0 extension. Includes updates by Aleksander Morgado to fix coding style issues, memory handling fixes add missing documentation items.
-rw-r--r--data/mbim-service-ms-basic-connect-extensions-v3.json21
-rwxr-xr-xdocs/reference/libmbim-glib/libmbim-glib-common.sections5
-rw-r--r--src/libmbim-glib/mbim-cid.h2
-rw-r--r--src/libmbim-glib/mbim-enums.h19
-rw-r--r--src/mbimcli/mbimcli-ms-basic-connect-extensions.c58
5 files changed, 104 insertions, 1 deletions
diff --git a/data/mbim-service-ms-basic-connect-extensions-v3.json b/data/mbim-service-ms-basic-connect-extensions-v3.json
index e2042b3..0227b80 100644
--- a/data/mbim-service-ms-basic-connect-extensions-v3.json
+++ b/data/mbim-service-ms-basic-connect-extensions-v3.json
@@ -56,6 +56,27 @@
//**********************************************************************************
+ { "name" : "Modem Configuration",
+ "type" : "Command",
+ "since" : "1.28",
+ "query" : [],
+ "response" : [ { "name" : "ConfigurationStatus",
+ "format" : "guint32",
+ "public-format" : "MbimModemConfigurationStatus" },
+ { "name" : "ConfigurationName",
+ "format" : "tlv-string" },
+ { "name" : "UnnamedIes",
+ "format" : "tlv-list" } ],
+ "notification" : [ { "name" : "ModemConfigurationStatus",
+ "format" : "guint32",
+ "public-format" : "MbimModemConfigurationStatus" },
+ { "name" : "ConfigurationName",
+ "format" : "tlv-string" },
+ { "name" : "UnnamedIes",
+ "format" : "tlv-list" } ] },
+
+ //************************************************************************************
+
{ "name" : "Registration Parameters",
"type" : "Command",
"since" : "1.28",
diff --git a/docs/reference/libmbim-glib/libmbim-glib-common.sections b/docs/reference/libmbim-glib/libmbim-glib-common.sections
index 2f0de68..e8236a2 100755
--- a/docs/reference/libmbim-glib/libmbim-glib-common.sections
+++ b/docs/reference/libmbim-glib/libmbim-glib-common.sections
@@ -380,6 +380,7 @@ MbimDrxCycle
MbimSubscriberReadyStatusFlag
MbimDataClassV3
MbimDataSublass
+MbimModemConfigurationStatus
<SUBSECTION Methods>
mbim_device_type_get_string
mbim_cellular_class_build_string_from_mask
@@ -463,6 +464,7 @@ mbim_drx_cycle_get_string
mbim_subscriber_ready_status_flag_build_string_from_mask
mbim_data_class_v3_build_string_from_mask
mbim_data_subclass_build_string_from_mask
+mbim_modem_configuration_status_get_string
<SUBSECTION Private>
mbim_device_type_build_string_from_mask
mbim_cellular_class_get_string
@@ -548,6 +550,7 @@ mbim_drx_cycle_build_string_from_mask
mbim_subscriber_ready_status_flag_get_string
mbim_data_class_v3_get_string
mbim_data_subclass_get_string
+mbim_modem_configuration_status_build_string_from_mask
<SUBSECTION Standard>
MBIM_TYPE_ACTIVATION_COMMAND
MBIM_TYPE_ACTIVATION_STATE
@@ -636,6 +639,7 @@ MBIM_TYPE_DRX_CYCLE
MBIM_TYPE_SUBSCRIBER_READY_STATUS_FLAG
MBIM_TYPE_DATA_CLASS_V3
MBIM_TYPE_DATA_SUBCLASS
+MBIM_TYPE_MODEM_CONFIGURATION_STATUS
mbim_activation_command_get_type
mbim_activation_state_get_type
mbim_auth_protocol_get_type
@@ -723,6 +727,7 @@ mbim_drx_cycle_get_type
mbim_subscriber_ready_status_flag_get_type
mbim_data_class_v3_get_type
mbim_data_subclass_get_type
+mbim_modem_configuration_status_get_type
</SECTION>
<SECTION>
diff --git a/src/libmbim-glib/mbim-cid.h b/src/libmbim-glib/mbim-cid.h
index 37c80f6..2ccbd04 100644
--- a/src/libmbim-glib/mbim-cid.h
+++ b/src/libmbim-glib/mbim-cid.h
@@ -334,6 +334,7 @@ typedef enum { /*< since=1.26 >*/
* @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, defined in MBIMEx v2.0. Since 1.28.
+ * @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_MODEM_CONFIGURATION: Modem configuration status, defined in MBIMEx v3.0. Since 1.28.
* @MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_REGISTRATION_PARAMETERS: Registration parameters, defined in MBIMEx v3.0. Since 1.28.
*
* MBIM commands in the %MBIM_SERVICE_MS_BASIC_CONNECT_EXTENSIONS service.
@@ -355,6 +356,7 @@ typedef enum { /*< since=1.18 >*/
MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_BASE_STATIONS_INFO = 11,
MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_LOCATION_INFO_STATUS = 12,
MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_VERSION = 15,
+ MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_MODEM_CONFIGURATION = 16,
MBIM_CID_MS_BASIC_CONNECT_EXTENSIONS_REGISTRATION_PARAMETERS = 17,
} MbimCidMsBasicConnectExtensions;
diff --git a/src/libmbim-glib/mbim-enums.h b/src/libmbim-glib/mbim-enums.h
index 5b91060..c129802 100644
--- a/src/libmbim-glib/mbim-enums.h
+++ b/src/libmbim-glib/mbim-enums.h
@@ -1490,6 +1490,25 @@ typedef enum { /*< since=1.26 >*/
} MbimUiccPassThroughStatus;
/*****************************************************************************/
+/* 'Modem Configuration' enums */
+
+/**
+ * MbimModemConfigurationStatus:
+ * @MBIM_MODEM_CONFIGURATION_STATUS_UNKNOWN: Unknown
+ * @MBIM_MODEM_CONFIGURATION_STATUS_STARTED: SIM is ready and configuration started.
+ * @MBIM_MODEM_CONFIGURATION_STATUS_COMPLETED: SIM is ready and configuration completed.
+ *
+ * Modem configuration status.
+ *
+ * Since: 1.28
+ */
+typedef enum {/*< since=1.28 >*/
+ MBIM_MODEM_CONFIGURATION_STATUS_UNKNOWN = 0,
+ MBIM_MODEM_CONFIGURATION_STATUS_STARTED = 1,
+ MBIM_MODEM_CONFIGURATION_STATUS_COMPLETED = 2
+} MbimModemConfigurationStatus;
+
+/*****************************************************************************/
/* 'Packet service v2' enums */
/**
diff --git a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c
index 78a5151..cf4564b 100644
--- a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c
+++ b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c
@@ -48,6 +48,7 @@ static gboolean query_base_stations_flag;
static gchar *query_version_str;
static gboolean query_registration_parameters_flag;
static gchar *set_registration_parameters_str;
+static gboolean query_modem_configuration_flag;
static gboolean query_pco_arg_parse (const gchar *option_name,
const gchar *value,
@@ -120,6 +121,10 @@ static GOptionEntry entries[] = {
"Set registration parameters (required keys: mico-mode, drx-cycle, ladn-info, default-pdu-activation-hint, re-register-if-needed). Since MBIMEx v3.0.",
"[\"key=value,...\"]"
},
+ { "ms-query-modem-configuration", 0, 0, G_OPTION_ARG_NONE, &query_modem_configuration_flag,
+ "Query modem configuration. Since MBIMEx v3.0.",
+ NULL
+ },
{ NULL }
};
@@ -202,7 +207,8 @@ mbimcli_ms_basic_connect_extensions_options_enabled (void)
query_base_stations_flag +
!!query_version_str +
query_registration_parameters_flag +
- !!set_registration_parameters_str);
+ !!set_registration_parameters_str +
+ query_modem_configuration_flag);
if (n_actions > 1) {
g_printerr ("error: too many Microsoft Basic Connect Extensions Service actions requested\n");
@@ -1491,6 +1497,43 @@ registration_parameters_ready (MbimDevice *device,
shutdown (TRUE);
}
+static void
+query_modem_configuration_ready (MbimDevice *device,
+ GAsyncResult *res)
+{
+ g_autoptr(MbimMessage) response = NULL;
+ g_autoptr(GError) error = NULL;
+ MbimModemConfigurationStatus configuration_status;
+ g_autofree gchar *configuration_name = NULL;
+
+ 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;
+ }
+
+ if (!mbim_message_ms_basic_connect_extensions_v3_modem_configuration_response_parse (
+ response,
+ &configuration_status,
+ &configuration_name,
+ NULL, /* ignore unnamed IEs for now */
+ &error)) {
+ g_printerr ("error: couldn't parse response message: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ g_print ("[%s] Modem configuration retrieved: \n",
+ mbim_device_get_path_display (device));
+ g_print ("\tStatus: '%s'\n"
+ "\t Name: '%s'\n",
+ VALIDATE_UNKNOWN (mbim_modem_configuration_status_get_string (configuration_status)),
+ VALIDATE_UNKNOWN (configuration_name));
+
+ shutdown (TRUE);
+}
+
void
mbimcli_ms_basic_connect_extensions_run (MbimDevice *device,
GCancellable *cancellable)
@@ -1844,5 +1887,18 @@ mbimcli_ms_basic_connect_extensions_run (MbimDevice *device,
return;
}
+ /* Request to query modem configuration? */
+ if (query_modem_configuration_flag) {
+ g_debug ("Asynchronously query modem configuration\n");
+ request = mbim_message_ms_basic_connect_extensions_v3_modem_configuration_query_new (NULL);
+ mbim_device_command (ctx->device,
+ request,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)query_modem_configuration_ready,
+ NULL);
+ return;
+ }
+
g_warn_if_reached ();
}