summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArman Uguray <armansito@chromium.org>2013-03-20 12:28:31 -0700
committerAleksander Morgado <aleksander@lanedo.com>2013-03-21 09:50:10 +0100
commit8f8edb7cd388a9519423166e2614f49b99f39df5 (patch)
treeb6f56474105d8b0c1929b2e691a2898341f9b63e
parent11f35f578cbae97ee87b5ae5904b23d89a1f30a1 (diff)
cli: Add --dms-activate-manual
Added the --dms-activate-manual option to the client, which triggers manual activation.
-rw-r--r--cli/qmicli-dms.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/cli/qmicli-dms.c b/cli/qmicli-dms.c
index 86e1ff5..65e8bec 100644
--- a/cli/qmicli-dms.c
+++ b/cli/qmicli-dms.c
@@ -67,6 +67,7 @@ static gboolean get_time_flag;
static gboolean get_prl_version_flag;
static gboolean get_activation_state_flag;
static gchar *activate_automatic_str;
+static gchar *activate_manual_str;
static gboolean get_user_lock_state_flag;
static gchar *set_user_lock_state_str;
static gchar *set_user_lock_code_str;
@@ -184,6 +185,10 @@ static GOptionEntry entries[] = {
"Request automatic service activation",
"[Activation Code]"
},
+ { "dms-activate-manual", 0, 0, G_OPTION_ARG_STRING, &activate_manual_str,
+ "Request manual service activation",
+ "[SPC,SID,MDN,MIN]"
+ },
{ "dms-get-user-lock-state", 0, 0, G_OPTION_ARG_NONE, &get_user_lock_state_flag,
"Get the state of the user lock",
NULL,
@@ -296,6 +301,7 @@ qmicli_dms_options_enabled (void)
get_prl_version_flag +
get_activation_state_flag +
!!activate_automatic_str +
+ !!activate_manual_str +
get_user_lock_state_flag +
!!set_user_lock_state_str +
!!set_user_lock_code_str +
@@ -1704,6 +1710,66 @@ get_activation_state_ready (QmiClientDms *client,
shutdown (TRUE);
}
+static QmiMessageDmsActivateManualInput *
+activate_manual_input_create (const gchar *str)
+{
+ QmiMessageDmsActivateManualInput *input;
+ gchar **split;
+ GError *error = NULL;
+
+ split = g_strsplit (str, ",", -1);
+ if (g_strv_length (split) != 4) {
+ g_printerr ("error: incorrect number of arguments given\n");
+ g_strfreev (split);
+ return NULL;
+ }
+
+ input = qmi_message_dms_activate_manual_input_new ();
+ if (!qmi_message_dms_activate_manual_input_set_info (
+ input,
+ split[0],
+ split[1],
+ split[2],
+ split[3],
+ &error)) {
+ g_printerr ("error: couldn't create input data bundle: '%s'\n",
+ error->message);
+ g_error_free (error);
+ qmi_message_dms_activate_manual_input_unref (input);
+ input = NULL;
+ }
+
+ g_strfreev(split);
+ return input;
+}
+
+static void
+activate_manual_ready (QmiClientDms *client,
+ GAsyncResult *res)
+{
+ QmiMessageDmsActivateManualOutput *output;
+ GError *error = NULL;
+
+ output = qmi_client_dms_activate_manual_finish (client, res, &error);
+ if (!output) {
+ g_printerr ("error: operation failed: %s\n", error->message);
+ g_error_free (error);
+ shutdown (FALSE);
+ return;
+ }
+
+ if (!qmi_message_dms_activate_manual_output_get_result (output, &error)) {
+ g_printerr ("error: couldn't request manual service activation: %s\n", error->message);
+ g_error_free (error);
+ qmi_message_dms_activate_manual_output_unref (output);
+ shutdown (FALSE);
+ return;
+ }
+
+ qmi_message_dms_activate_manual_output_unref (output);
+ shutdown (TRUE);
+}
+
static QmiMessageDmsActivateAutomaticInput *
activate_automatic_input_create (const gchar *str)
{
@@ -3211,6 +3277,26 @@ qmicli_dms_run (QmiDevice *device,
return;
}
+ /* Request to activate manually? */
+ if (activate_manual_str) {
+ QmiMessageDmsActivateManualInput *input;
+
+ g_debug ("Asynchronously requesting manual activation...");
+ input = activate_manual_input_create (activate_manual_str);
+ if (!input) {
+ shutdown (FALSE);
+ return;
+ }
+ qmi_client_dms_activate_manual (ctx->client,
+ input,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)activate_manual_ready,
+ NULL);
+ qmi_message_dms_activate_manual_input_unref (input);
+ return;
+ }
+
/* Request to get the activation state? */
if (get_user_lock_state_flag) {
g_debug ("Asynchronously getting user lock state...");