[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