summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsom <somashekhar.puttagangaiah@intel.com>2022-09-14 21:25:19 +0530
committerAleksander Morgado <aleksander@aleksander.es>2022-09-16 12:01:38 +0000
commitd66f82bdf4eb71a5ea00bd56189dbdf0cb907a20 (patch)
tree74da7bdf5491a5009bd139c6b2822213d55a7792
parentaed30edc065c6b7b8c75ad1933696f0697aa67f8 (diff)
mbimcli: Add network idle hint option in cli
This commit provides option to test network idle hint using mbimcli option. Co-author: Bestha, Lakshminarayana
-rw-r--r--src/mbimcli/mbimcli-basic-connect.c84
-rw-r--r--src/mbimcli/mbimcli-helpers.h1
2 files changed, 84 insertions, 1 deletions
diff --git a/src/mbimcli/mbimcli-basic-connect.c b/src/mbimcli/mbimcli-basic-connect.c
index a7e2951..6744780 100644
--- a/src/mbimcli/mbimcli-basic-connect.c
+++ b/src/mbimcli/mbimcli-basic-connect.c
@@ -62,6 +62,8 @@ static gchar *set_ip_packet_filters_str;
static gboolean query_provisioned_contexts_flag;
static gchar *set_provisioned_contexts_str;
static gchar *set_signal_state_str;
+static gchar *set_network_idle_hint_str;
+static gboolean query_network_idle_hint_flag;
static gboolean query_connection_state_arg_parse (const char *option_name,
const char *value,
@@ -210,6 +212,14 @@ static GOptionEntry entries[] = {
"Set signal state (allowed keys: signal-strength-interval, rssi-threshold, error-rate-threshold)",
"[\"key=value,...\"]"
},
+ { "set-network-idle-hint", 0, 0, G_OPTION_ARG_STRING, &set_network_idle_hint_str,
+ "Set network idle hint",
+ "[(enabled|disabled)]"
+ },
+ { "query-network-idle-hint", 0, 0, G_OPTION_ARG_NONE, &query_network_idle_hint_flag,
+ "Query network idle hint",
+ NULL
+ },
{ NULL }
};
@@ -307,7 +317,9 @@ mbimcli_basic_connect_options_enabled (void)
!!set_ip_packet_filters_str +
query_provisioned_contexts_flag +
!!set_provisioned_contexts_str +
- !!set_signal_state_str);
+ !!set_signal_state_str +
+ !!set_network_idle_hint_str +
+ query_network_idle_hint_flag);
if (n_actions > 1) {
g_printerr ("error: too many Basic Connect actions requested\n");
@@ -2222,6 +2234,39 @@ set_signal_state_foreach_cb (const gchar *key,
return TRUE;
}
+static void
+network_idle_hint_ready (MbimDevice *device,
+ GAsyncResult *res)
+{
+ g_autoptr(MbimMessage) response = NULL;
+ g_autoptr(GError) error = NULL;
+ MbimNetworkIdleHintState network_state;
+ const gchar *network_state_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_network_idle_hint_response_parse (
+ response,
+ &network_state,
+ &error)) {
+ g_printerr ("error: couldn't parse response message: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ network_state_str = mbim_network_idle_hint_state_get_string (network_state);
+ g_print ("[%s] Network idle hint state: '%s'\n",
+ mbim_device_get_path_display (device),
+ VALIDATE_UNKNOWN (network_state_str));
+
+ shutdown (TRUE);
+}
+
void
mbimcli_basic_connect_run (MbimDevice *device,
GCancellable *cancellable)
@@ -2870,5 +2915,42 @@ mbimcli_basic_connect_run (MbimDevice *device,
return;
}
+ /* Set network idle hint state */
+ if (set_network_idle_hint_str) {
+ MbimNetworkIdleHintState network_state;
+
+ if (!mbimcli_read_network_idle_hint_state_from_string (set_network_idle_hint_str, &network_state)) {
+ shutdown (FALSE);
+ return;
+ }
+
+ request = mbim_message_network_idle_hint_set_new (network_state, &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)network_idle_hint_ready,
+ NULL);
+ return;
+ }
+
+ /* Get network idle hint state */
+ if (query_network_idle_hint_flag) {
+ request = mbim_message_network_idle_hint_query_new (NULL);
+ mbim_device_command (ctx->device,
+ request,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)network_idle_hint_ready,
+ NULL);
+ return;
+ }
+
g_warn_if_reached ();
}
diff --git a/src/mbimcli/mbimcli-helpers.h b/src/mbimcli/mbimcli-helpers.h
index b512005..2db5122 100644
--- a/src/mbimcli/mbimcli-helpers.h
+++ b/src/mbimcli/mbimcli-helpers.h
@@ -65,6 +65,7 @@ gboolean mbimcli_parse_sar_config_state_array (const gchar *str,
MBIMCLI_ENUM_LIST_ITEM (MbimLadnInfo, ladn_info, "ladn info") \
MBIMCLI_ENUM_LIST_ITEM (MbimDefaultPduActivationHint, default_pdu_activation_hint, "default pdu activation hint") \
MBIMCLI_ENUM_LIST_ITEM (MbimAccessMediaType, access_media_type, "access media type") \
+ MBIMCLI_ENUM_LIST_ITEM (MbimNetworkIdleHintState, network_idle_hint_state, "network idle hint state") \
MBIMCLI_ENUM_LIST_ITEM (MbimIntelBootMode, intel_boot_mode, "intel boot mode")
#define MBIMCLI_ENUM_LIST_ITEM(TYPE,TYPE_UNDERSCORE,DESCR) \