diff options
author | Som_SP <somashekhar.puttagangaiah@intel.com> | 2021-09-28 23:02:57 +0530 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-06 13:50:17 +0200 |
commit | 60f779ce41b63268d4951e3a4ee8e04711e9dd1e (patch) | |
tree | 44a4612611600d80558417bf2175f8d18bd2fd3f /src | |
parent | a710f7424a2e9534579a622beab352b714ae7db9 (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.c | 13 | ||||
-rw-r--r-- | src/mbimcli/mbimcli-ms-basic-connect-extensions.c | 67 |
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, - <e_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, + <e_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, + <e_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, |