summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsom <somashekhar.puttagangaiah@intel.com>2022-09-14 21:31:11 +0530
committerAleksander Morgado <aleksander@aleksander.es>2022-09-16 12:01:38 +0000
commita1cf6c31d5e5de52a2983464b40e92c4866f8009 (patch)
tree2fdcc32f356635dbad687dc3afbae714841220cb
parentecb98017b40252315dc95796acb2d3a8b481ea99 (diff)
downloadlibmbim-a1cf6c31d5e5de52a2983464b40e92c4866f8009.tar.gz
mbimcli: Add service activation option in cli
This commit provides option to test service activation using mbimcli option. Co-author: Bestha, Lakshminarayana
-rw-r--r--src/mbimcli/mbimcli-basic-connect.c77
1 files changed, 76 insertions, 1 deletions
diff --git a/src/mbimcli/mbimcli-basic-connect.c b/src/mbimcli/mbimcli-basic-connect.c
index 280a049..ce22146 100644
--- a/src/mbimcli/mbimcli-basic-connect.c
+++ b/src/mbimcli/mbimcli-basic-connect.c
@@ -66,6 +66,7 @@ static gchar *set_network_idle_hint_str;
static gboolean query_network_idle_hint_flag;
static gchar *set_emergency_mode_str;
static gboolean query_emergency_mode_flag;
+static gchar *set_service_activation_str;
static gboolean query_connection_state_arg_parse (const char *option_name,
const char *value,
@@ -230,6 +231,10 @@ static GOptionEntry entries[] = {
"Query emergency mode",
NULL
},
+ { "set-service-activation", 0, 0, G_OPTION_ARG_STRING, &set_service_activation_str,
+ "Set service activation",
+ "[Data]"
+ },
{ NULL }
};
@@ -331,7 +336,8 @@ mbimcli_basic_connect_options_enabled (void)
!!set_network_idle_hint_str +
query_network_idle_hint_flag +
!!set_emergency_mode_str +
- query_emergency_mode_flag);
+ query_emergency_mode_flag +
+ !!set_service_activation_str);
if (n_actions > 1) {
g_printerr ("error: too many Basic Connect actions requested\n");
@@ -2312,6 +2318,45 @@ emergency_mode_ready (MbimDevice *device,
shutdown (TRUE);
}
+static void
+set_service_activation_ready (MbimDevice *device,
+ GAsyncResult *res)
+{
+ g_autoptr(MbimMessage) response = NULL;
+ g_autoptr(GError) error = NULL;
+ MbimNwError nw_error;
+ guint32 result_data_size;
+ const guint8 *result_data = NULL;
+ g_autofree gchar *result_data_str = 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_service_activation_response_parse (response,
+ &nw_error,
+ &result_data_size,
+ &result_data,
+ &error)) {
+ g_printerr ("error: couldn't parse response message: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ result_data_str = mbim_common_str_hex (result_data, result_data_size, ':');
+ g_print ("[%s] Service activation response received successfully:\n"
+ "\t Network error: '%s'\n"
+ "\t Data: '%s'\n",
+ mbim_device_get_path_display (device),
+ VALIDATE_UNKNOWN (mbim_nw_error_get_string (nw_error)),
+ result_data_str);
+
+ shutdown (TRUE);
+}
+
void
mbimcli_basic_connect_run (MbimDevice *device,
GCancellable *cancellable)
@@ -3034,5 +3079,35 @@ mbimcli_basic_connect_run (MbimDevice *device,
return;
}
+ /* Request to set service activation */
+ if (set_service_activation_str) {
+ guint8 *data = NULL;
+ gsize data_size = 0;
+
+ data = mbimcli_read_buffer_from_string (set_service_activation_str, -1, &data_size, &error);
+ if (!data) {
+ g_printerr ("error: couldn't parse the input: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ request = mbim_message_service_activation_set_new (data_size,
+ data,
+ &error);
+ if (!request) {
+ g_printerr ("error: couldn't create request: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ mbim_device_command (ctx->device,
+ request,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)set_service_activation_ready,
+ NULL);
+ return;
+ }
+
g_warn_if_reached ();
}