summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSom_SP <somashekhar.puttagangaiah@intel.com>2021-09-28 23:02:57 +0530
committerAleksander Morgado <aleksander@aleksander.es>2021-10-06 13:50:17 +0200
commit60f779ce41b63268d4951e3a4ee8e04711e9dd1e (patch)
tree44a4612611600d80558417bf2175f8d18bd2fd3f /src
parenta710f7424a2e9534579a622beab352b714ae7db9 (diff)
ms-basic-connect-extensions-v3: implement 'lte-attach-info'
This CID is an extension for the MBIM_CID_MS_LTE_ATTACH_STATUS already defined in the MBIM specification revision 1.0.
Diffstat (limited to 'src')
-rw-r--r--src/libmbim-glib/mbim-message.c13
-rw-r--r--src/mbimcli/mbimcli-ms-basic-connect-extensions.c67
2 files changed, 62 insertions, 18 deletions
diff --git a/src/libmbim-glib/mbim-message.c b/src/libmbim-glib/mbim-message.c
index 08fc04b..c99e70f 100644
--- a/src/libmbim-glib/mbim-message.c
+++ b/src/libmbim-glib/mbim-message.c
@@ -36,6 +36,7 @@
#include "mbim-ms-uicc-low-level-access.h"
#include "mbim-ms-basic-connect-v2.h"
#include "mbim-ms-basic-connect-v3.h"
+#include "mbim-ms-basic-connect-extensions-v3.h"
/*****************************************************************************/
@@ -1647,7 +1648,17 @@ mbim_message_get_printable_full (const MbimMessage *self,
fields_printable = __mbim_message_qdu_get_printable_fields (self, line_prefix, &inner_error);
break;
case MBIM_SERVICE_MS_BASIC_CONNECT_EXTENSIONS:
- fields_printable = __mbim_message_ms_basic_connect_extensions_get_printable_fields (self, line_prefix, &inner_error);
+ if (mbimex_version_major < 3)
+ fields_printable = __mbim_message_ms_basic_connect_extensions_get_printable_fields (self, line_prefix, &inner_error);
+ else if (mbimex_version_major == 3) {
+ fields_printable = __mbim_message_ms_basic_connect_extensions_v3_get_printable_fields (self, line_prefix, &inner_error);
+ /* attempt fallback to v1 printable */
+ if (g_error_matches (inner_error, MBIM_CORE_ERROR, MBIM_CORE_ERROR_UNSUPPORTED)) {
+ g_clear_error (&inner_error);
+ fields_printable = __mbim_message_ms_basic_connect_extensions_get_printable_fields (self, line_prefix, &inner_error);
+ }
+ } else
+ g_assert_not_reached ();
break;
case MBIM_SERVICE_MS_UICC_LOW_LEVEL_ACCESS:
fields_printable = __mbim_message_ms_uicc_low_level_access_get_printable_fields (self, line_prefix, &inner_error);
diff --git a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c
index 66ea5f8..923a148 100644
--- a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c
+++ b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c
@@ -23,6 +23,7 @@
#include "mbim-common.h"
#include "mbimcli.h"
#include "mbimcli-helpers.h"
+#include "mbim-ms-basic-connect-extensions-v3.h"
/* Context */
typedef struct {
@@ -330,6 +331,7 @@ query_lte_attach_info_ready (MbimDevice *device,
g_autofree gchar *password = NULL;
guint32 compression;
guint32 auth_protocol;
+ MbimNwError nw_error = 0;
response = mbim_device_command_finish (device, res, &error);
if (!response || !mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error)) {
@@ -338,22 +340,45 @@ query_lte_attach_info_ready (MbimDevice *device,
return;
}
- g_print ("[%s] Successfully queried LTE attach info\n",
- mbim_device_get_path_display (device));
- if (!mbim_message_ms_basic_connect_extensions_lte_attach_info_response_parse (
- response,
- &lte_attach_state,
- &ip_type,
- &access_string,
- &user_name,
- &password,
- &compression,
- &auth_protocol,
- &error)) {
- g_printerr ("error: couldn't parse response message: %s\n", error->message);
- shutdown (FALSE);
- return;
+ /* MBIMEx 3.0 support */
+ if (mbim_device_check_ms_mbimex_version (device, 3, 0)) {
+ if (!mbim_message_ms_basic_connect_extensions_v3_lte_attach_info_response_parse (
+ response,
+ &lte_attach_state,
+ &ip_type,
+ &access_string,
+ &user_name,
+ &password,
+ &compression,
+ &auth_protocol,
+ &nw_error,
+ &error)) {
+ g_printerr ("error: couldn't parse response message: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+ g_print ("[%s] Successfully received v3.0 LTE attach info\n",
+ mbim_device_get_path_display (device));
+ }
+ /* MBIM 1.0 support */
+ else {
+ if (!mbim_message_ms_basic_connect_extensions_lte_attach_info_response_parse (
+ response,
+ &lte_attach_state,
+ &ip_type,
+ &access_string,
+ &user_name,
+ &password,
+ &compression,
+ &auth_protocol,
+ &error)) {
+ g_printerr ("error: couldn't parse response message: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+ g_print ("[%s] Successfully received v1.0 LTE attach info\n",
+ mbim_device_get_path_display (device));
}
#define VALIDATE_NA(str) (str ? str : "n/a")
@@ -364,6 +389,8 @@ query_lte_attach_info_ready (MbimDevice *device,
g_print (" Password: %s\n", VALIDATE_NA (password));
g_print (" Compression: %s\n", mbim_compression_get_string (compression));
g_print (" Auth protocol: %s\n", mbim_auth_protocol_get_string (auth_protocol));
+ if (mbim_device_check_ms_mbimex_version (device, 3, 0))
+ g_print (" Network error: %s\n", mbim_nw_error_get_string (nw_error));
#undef VALIDATE_NA
shutdown (TRUE);
@@ -1072,8 +1099,14 @@ mbimcli_ms_basic_connect_extensions_run (MbimDevice *device,
}
if (query_lte_attach_status_flag || query_lte_attach_info_flag) {
- g_debug ("Asynchronously querying LTE attach info...");
- request = mbim_message_ms_basic_connect_extensions_lte_attach_info_query_new (NULL);
+ if (mbim_device_check_ms_mbimex_version (device, 3, 0)) {
+ g_debug ("Asynchronously querying v3.0 LTE attach info...");
+ request = mbim_message_ms_basic_connect_extensions_v3_lte_attach_info_query_new (NULL);
+ }
+ else {
+ g_debug ("Asynchronously querying v1.0 LTE attach info...");
+ request = mbim_message_ms_basic_connect_extensions_lte_attach_info_query_new (NULL);
+ }
mbim_device_command (ctx->device,
request,
10,