diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-11-04 16:43:53 +0100 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-11-07 17:04:56 +0000 |
commit | a7b6be938af94cf2d54d4352d899831394276b6e (patch) | |
tree | 5950574027b2708cf1083cbec48ef365bb3a388b | |
parent | dc3c5923fa19620360b198bc1ce66fed16ec97ff (diff) | |
download | libmbim-aleksander/lte-attach.tar.gz |
ms-basic-connect-extensions: implement 'LTE attach state'aleksander/lte-attach
-rw-r--r-- | data/mbim-service-ms-basic-connect-extensions.json | 36 | ||||
-rw-r--r-- | docs/reference/libmbim-glib/libmbim-glib-common.sections | 5 | ||||
-rw-r--r-- | src/libmbim-glib/mbim-enums.h | 12 | ||||
-rw-r--r-- | src/mbimcli/mbimcli-ms-basic-connect-extensions.c | 71 |
4 files changed, 122 insertions, 2 deletions
diff --git a/data/mbim-service-ms-basic-connect-extensions.json b/data/mbim-service-ms-basic-connect-extensions.json index 4562237..cce9cac 100644 --- a/data/mbim-service-ms-basic-connect-extensions.json +++ b/data/mbim-service-ms-basic-connect-extensions.json @@ -80,5 +80,39 @@ { "name" : "Configurations", "format" : "ref-struct-array" , "struct-type" : "MbimLteAttachConfiguration", - "array-size-field" : "ConfigurationCount" } ] } + "array-size-field" : "ConfigurationCount" } ] }, + + // ********************************************************************************* + + { "name" : "MbimLteAttachStatus", + "type" : "Struct", + "contents" : [ { "name" : "LteAttachState", + "format" : "guint32", + "public-format" : "MbimLteAttachState" }, + { "name" : "IpType", + "format" : "guint32", + "public-format" : "MbimContextIpType" }, + { "name" : "AccessString", + "format" : "string" }, + { "name" : "UserName", + "format" : "string" }, + { "name" : "Password", + "format" : "string" }, + { "name" : "Compression", + "format" : "guint32", + "public-format" : "MbimCompression" }, + { "name" : "AuthProtocol", + "format" : "guint32", + "public-format" : "MbimAuthProtocol" } ] }, + + { "name" : "Lte Attach Status", + "service" : "Ms Basic Connect Extensions", + "type" : "Command", + "query" : [], + "response" : [ { "name" : "LteAttachStatus", + "format" : "struct", + "struct-type" : "MbimLteAttachStatus" } ], + "notification" : [ { "name" : "LteAttachStatus", + "format" : "struct", + "struct-type" : "MbimLteAttachStatus" } ] } ] diff --git a/docs/reference/libmbim-glib/libmbim-glib-common.sections b/docs/reference/libmbim-glib/libmbim-glib-common.sections index 180cb60..7634a7b 100644 --- a/docs/reference/libmbim-glib/libmbim-glib-common.sections +++ b/docs/reference/libmbim-glib/libmbim-glib-common.sections @@ -318,6 +318,7 @@ MbimPcoType MbimContextSource MbimLteAttachContextOperation MbimLteAttachContextRoamingControl +MbimLteAttachState <SUBSECTION Methods> mbim_device_type_get_string mbim_cellular_class_build_string_from_mask @@ -373,6 +374,7 @@ mbim_pco_type_get_string mbim_context_source_get_string mbim_lte_attach_context_operation_get_string mbim_lte_attach_context_roaming_control_get_string +mbim_lte_attach_state_get_string <SUBSECTION Private> mbim_device_type_build_string_from_mask mbim_cellular_class_get_string @@ -430,6 +432,7 @@ mbim_pco_type_build_string_from_mask mbim_context_source_build_string_from_mask mbim_lte_attach_context_operation_build_string_from_mask mbim_lte_attach_context_roaming_control_build_string_from_mask +mbim_lte_attach_state_build_string_from_mask <SUBSECTION Standard> MBIM_TYPE_ACTIVATION_COMMAND MBIM_TYPE_ACTIVATION_STATE @@ -490,6 +493,7 @@ MBIM_TYPE_PCO_TYPE MBIM_TYPE_CONTEXT_SOURCE MBIM_TYPE_LTE_ATTACH_CONTEXT_OPERATION MBIM_TYPE_LTE_ATTACH_CONTEXT_ROAMING_CONTROL +MBIM_TYPE_LTE_ATTACH_STATE mbim_activation_command_get_type mbim_activation_state_get_type mbim_auth_protocol_get_type @@ -549,6 +553,7 @@ mbim_pco_type_get_type mbim_context_source_get_type mbim_lte_attach_context_operation_get_type mbim_lte_attach_context_roaming_control_get_type +mbim_lte_attach_state_get_type </SECTION> <SECTION> diff --git a/src/libmbim-glib/mbim-enums.h b/src/libmbim-glib/mbim-enums.h index 2e66c4f..c85243a 100644 --- a/src/libmbim-glib/mbim-enums.h +++ b/src/libmbim-glib/mbim-enums.h @@ -1082,6 +1082,18 @@ typedef enum { MBIM_CONTEXT_SOURCE_DEVICE = 4 } MbimContextSource; +/** + * MbimLteAttachState: + * @MBIM_LTE_ATTACH_STATE_DETACHED: Detached. + * @MBIM_LTE_ATTACH_STATE_ATTACHED: Attached. + * + * LTE attach state. + */ +typedef enum { + MBIM_LTE_ATTACH_STATE_DETACHED = 0, + MBIM_LTE_ATTACH_STATE_ATTACHED = 1 +} MbimLteAttachState; + G_END_DECLS #endif /* _LIBMBIM_GLIB_MBIM_ENUMS_H_ */ diff --git a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c index e4c5444..092afbb 100644 --- a/src/mbimcli/mbimcli-ms-basic-connect-extensions.c +++ b/src/mbimcli/mbimcli-ms-basic-connect-extensions.c @@ -45,6 +45,7 @@ static Context *ctx; /* Options */ static gchar *query_pco_str; static gboolean query_lte_attach_configuration_flag; +static gboolean query_lte_attach_status_flag; static gboolean query_pco_arg_parse (const char *option_name, const char *value, @@ -60,6 +61,10 @@ static GOptionEntry entries[] = { "Query LTE attach configuration", NULL }, + { "ms-query-lte-attach-status", 0, 0, G_OPTION_ARG_NONE, &query_lte_attach_status_flag, + "Query LTE attach status", + NULL + }, { NULL } }; @@ -129,7 +134,8 @@ mbimcli_ms_basic_connect_extensions_options_enabled (void) return !!n_actions; n_actions = (!!query_pco_str + - query_lte_attach_configuration_flag); + query_lte_attach_configuration_flag + + query_lte_attach_status_flag); if (n_actions > 1) { g_printerr ("error: too many Microsoft Basic Connect Extensions Service actions requested\n"); @@ -265,6 +271,53 @@ query_lte_attach_configuration_ready (MbimDevice *device, shutdown (TRUE); } +static void +query_lte_attach_status_ready (MbimDevice *device, + GAsyncResult *res) +{ + MbimMessage *response; + GError *error = NULL; + MbimLteAttachStatus *lte_attach_status = 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); + g_error_free (error); + if (response) + mbim_message_unref (response); + shutdown (FALSE); + return; + } + + g_print ("[%s] Successfully queried LTE attach status\n", + mbim_device_get_path_display (device)); + + if (!mbim_message_ms_basic_connect_extensions_lte_attach_status_response_parse ( + response, + <e_attach_status, + &error)) { + g_printerr ("error: couldn't parse response message: %s\n", error->message); + g_error_free (error); + mbim_message_unref (response); + shutdown (FALSE); + return; + } + +#define VALIDATE_NA(str) (str ? str : "n/a") + g_print (" Attach state: %s\n", mbim_lte_attach_state_get_string (lte_attach_status->lte_attach_state)); + g_print (" IP type: %s\n", mbim_context_ip_type_get_string (lte_attach_status->ip_type)); + g_print (" Access string: %s\n", VALIDATE_NA (lte_attach_status->access_string)); + g_print (" Username: %s\n", VALIDATE_NA (lte_attach_status->user_name)); + g_print (" Password: %s\n", VALIDATE_NA (lte_attach_status->password)); + g_print (" Compression: %s\n", mbim_compression_get_string (lte_attach_status->compression)); + g_print (" Auth protocol: %s\n", mbim_auth_protocol_get_string (lte_attach_status->auth_protocol)); +#undef VALIDATE_NA + + mbim_lte_attach_status_free (lte_attach_status); + mbim_message_unref (response); + shutdown (TRUE); +} + void mbimcli_ms_basic_connect_extensions_run (MbimDevice *device, GCancellable *cancellable) @@ -319,5 +372,21 @@ mbimcli_ms_basic_connect_extensions_run (MbimDevice *device, return; } + /* Request to query LTE attach status? */ + if (query_lte_attach_status_flag) { + MbimMessage *request; + + g_debug ("Asynchronously querying LTE attach status..."); + request = mbim_message_ms_basic_connect_extensions_lte_attach_status_query_new (NULL); + mbim_device_command (ctx->device, + request, + 10, + ctx->cancellable, + (GAsyncReadyCallback)query_lte_attach_status_ready, + NULL); + mbim_message_unref (request); + return; + } + g_warn_if_reached (); } |