[PATCH] mbimcli: new '--set-radio-state' action

Ben Chan benchan at chromium.org
Thu Feb 27 21:43:17 PST 2014


---
 src/mbimcli/mbimcli-basic-connect.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/src/mbimcli/mbimcli-basic-connect.c b/src/mbimcli/mbimcli-basic-connect.c
index a73da19..ad84f38 100644
--- a/src/mbimcli/mbimcli-basic-connect.c
+++ b/src/mbimcli/mbimcli-basic-connect.c
@@ -43,6 +43,7 @@ static Context *ctx;
 static gboolean  query_device_caps_flag;
 static gboolean  query_subscriber_ready_status_flag;
 static gboolean  query_radio_state_flag;
+static gchar    *set_radio_state_str;
 static gboolean  query_device_services_flag;
 static gboolean  query_pin_flag;
 static gchar    *set_pin_enter_str;
@@ -77,6 +78,10 @@ static GOptionEntry entries[] = {
       "Query radio state",
       NULL
     },
+    { "set-radio-state", 0, 0, G_OPTION_ARG_STRING, &set_radio_state_str,
+      "Set radio state",
+      "[(on|off)]"
+    },
     { "query-device-services", 0, 0, G_OPTION_ARG_NONE, &query_device_services_flag,
       "Query device services",
       NULL
@@ -187,6 +192,7 @@ mbimcli_basic_connect_options_enabled (void)
     n_actions = (query_device_caps_flag +
                  query_subscriber_ready_status_flag +
                  query_radio_state_flag +
+                 !!set_radio_state_str +
                  query_device_services_flag +
                  query_pin_flag +
                  !!set_pin_enter_str +
@@ -1296,6 +1302,34 @@ mbimcli_basic_connect_run (MbimDevice   *device,
         return;
     }
 
+    /* Request to set radio state? */
+    if (set_radio_state_str) {
+        MbimMessage *request;
+        MbimRadioSwitchState radio_state;
+
+        if (g_ascii_strcasecmp (set_radio_state_str, "on") == 0) {
+            radio_state = MBIM_RADIO_SWITCH_STATE_ON;
+        } else if (g_ascii_strcasecmp (set_radio_state_str, "off") == 0) {
+            radio_state = MBIM_RADIO_SWITCH_STATE_OFF;
+        } else {
+            g_printerr ("error: invalid radio state: '%s'\n", set_radio_state_str);
+            shutdown (FALSE);
+            return;
+        }
+
+        g_debug ("Asynchronously setting radio state to %s...",
+                 radio_state == MBIM_RADIO_SWITCH_STATE_ON ? "on" : "off");
+        request = mbim_message_radio_state_set_new (radio_state, NULL);
+        mbim_device_command (ctx->device,
+                             request,
+                             10,
+                             ctx->cancellable,
+                             (GAsyncReadyCallback)query_radio_state_ready,
+                             NULL);
+        mbim_message_unref (request);
+        return;
+    }
+
     /* Request to query device services? */
     if (query_device_services_flag) {
         MbimMessage *request;
-- 
1.9.0.279.gdc9e3eb



More information about the libmbim-devel mailing list