aboutsummaryrefslogtreecommitdiff
path: root/cli/mmcli-modem.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-01-01 12:23:33 +0100
committerAleksander Morgado <aleksander@lanedo.com>2013-01-11 10:05:46 +0100
commit669f0928f3a8e2e839de551cc8764f3d607c35a0 (patch)
tree285ee9593783c00c237dadf0dc7ec2141c43c017 /cli/mmcli-modem.c
parent091c47d695bf48541c49e8d5e07647d0901e367b (diff)
cli: new '--set-power-state-on' and '--set-power-state-low' commands
Diffstat (limited to 'cli/mmcli-modem.c')
-rw-r--r--cli/mmcli-modem.c81
1 files changed, 81 insertions, 0 deletions
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 +
@@ -497,6 +509,33 @@ disable_ready (MMModem *modem,
}
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;