From 669f0928f3a8e2e839de551cc8764f3d607c35a0 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 1 Jan 2013 12:23:33 +0100 Subject: cli: new '--set-power-state-on' and '--set-power-state-low' commands --- cli/mmcli-modem.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) (limited to 'cli/mmcli-modem.c') diff --git a/cli/mmcli-modem.c b/cli/mmcli-modem.c index 154414b9..f5981912 100644 --- a/cli/mmcli-modem.c +++ b/cli/mmcli-modem.c @@ -49,6 +49,8 @@ static gboolean info_flag; /* set when no action found */ static gboolean monitor_state_flag; static gboolean enable_flag; static gboolean disable_flag; +static gboolean set_power_state_on_flag; +static gboolean set_power_state_low_flag; static gboolean reset_flag; static gchar *factory_reset_str; static gchar *command_str; @@ -72,6 +74,14 @@ static GOptionEntry entries[] = { "Disable a given modem", NULL }, + { "set-power-state-on", 0, 0, G_OPTION_ARG_NONE, &set_power_state_on_flag, + "Set full power state in the modem", + NULL + }, + { "set-power-state-low", 0, 0, G_OPTION_ARG_NONE, &set_power_state_low_flag, + "Set low power state in the modem", + NULL + }, { "reset", 'r', 0, G_OPTION_ARG_NONE, &reset_flag, "Reset a given modem", NULL @@ -139,6 +149,8 @@ mmcli_modem_options_enabled (void) n_actions = (monitor_state_flag + enable_flag + disable_flag + + set_power_state_on_flag + + set_power_state_low_flag + reset_flag + list_bearers_flag + !!create_bearer_str + @@ -496,6 +508,33 @@ disable_ready (MMModem *modem, mmcli_async_operation_done (); } +static void +set_power_state_process_reply (gboolean result, + const GError *error) +{ + if (!result) { + g_printerr ("error: couldn't set new power state in the modem: '%s'\n", + error ? error->message : "unknown error"); + exit (EXIT_FAILURE); + } + + g_print ("successfully set new power state in the modem\n"); +} + +static void +set_power_state_ready (MMModem *modem, + GAsyncResult *result, + gpointer nothing) +{ + gboolean operation_result; + GError *error = NULL; + + operation_result = mm_modem_set_power_state_finish (modem, result, &error); + set_power_state_process_reply (operation_result, error); + + mmcli_async_operation_done (); +} + static void reset_process_reply (gboolean result, const GError *error) @@ -864,6 +903,28 @@ get_modem_ready (GObject *source, return; } + /* Request to full power the modem? */ + if (set_power_state_on_flag) { + g_debug ("Asynchronously setting full power..."); + mm_modem_set_power_state (ctx->modem, + MM_MODEM_POWER_STATE_ON, + ctx->cancellable, + (GAsyncReadyCallback)set_power_state_ready, + NULL); + return; + } + + /* Request to low power the modem? */ + if (set_power_state_low_flag) { + g_debug ("Asynchronously setting low power..."); + mm_modem_set_power_state (ctx->modem, + MM_MODEM_POWER_STATE_LOW, + ctx->cancellable, + (GAsyncReadyCallback)set_power_state_ready, + NULL); + return; + } + /* Request to reset the modem? */ if (reset_flag) { g_debug ("Asynchronously reseting modem..."); @@ -1047,6 +1108,26 @@ mmcli_modem_run_synchronous (GDBusConnection *connection) return; } + /* Request to set full power state? */ + if (set_power_state_on_flag) { + gboolean result; + + g_debug ("Synchronously setting full power..."); + result = mm_modem_set_power_state_sync (ctx->modem, MM_MODEM_POWER_STATE_ON, NULL, &error); + set_power_state_process_reply (result, error); + return; + } + + /* Request to set low power state? */ + if (set_power_state_low_flag) { + gboolean result; + + g_debug ("Synchronously setting low power..."); + result = mm_modem_set_power_state_sync (ctx->modem, MM_MODEM_POWER_STATE_LOW, NULL, &error); + set_power_state_process_reply (result, error); + return; + } + /* Request to reset the modem? */ if (reset_flag) { gboolean result; -- cgit v1.2.3-70-g09d2