qmicli: new '--get-service-version-info'

$ sudo qmicli -d /dev/cdc-wdm0 --get-service-version-info
  [/dev/cdc-wdm0] Supported versions:
          ctl (1.3)
          wds (1.2)
          dms (1.1)
          nas (1.0)
          wms (1.0)
          pds (1.0)
          auth (1.0)
          cat (1.0)
          rms (1.0)
This commit is contained in:
Aleksander Morgado 2013-07-03 22:11:21 +02:00
parent 96d0e9bbe1
commit 4bc0798c3e
1 changed files with 60 additions and 1 deletions

View File

@ -46,6 +46,7 @@ static gboolean operation_status;
/* Main options */
static gchar *device_str;
static gboolean get_service_version_info_flag;
static gchar *device_set_instance_id_str;
static gboolean device_open_version_info_flag;
static gboolean device_open_sync_flag;
@ -60,6 +61,10 @@ static GOptionEntry main_entries[] = {
"Specify device path",
"[PATH]"
},
{ "get-service-version-info", 0, 0, G_OPTION_ARG_NONE, &get_service_version_info_flag,
"Get service version info",
NULL
},
{ "device-set-instance-id", 0, 0, G_OPTION_ARG_STRING, &device_set_instance_id_str,
"Set instance ID",
"[Instance ID]"
@ -191,7 +196,8 @@ generic_options_enabled (void)
if (checked)
return !!n_actions;
n_actions = !!device_set_instance_id_str;
n_actions = (!!device_set_instance_id_str +
get_service_version_info_flag);
if (n_actions > 1) {
g_printerr ("error: too many generic actions requested\n");
@ -369,6 +375,57 @@ device_set_instance_id (QmiDevice *dev)
NULL);
}
static void
get_service_version_info_ready (QmiDevice *dev,
GAsyncResult *res)
{
GError *error = NULL;
GArray *services;
guint i;
services = qmi_device_get_service_version_info_finish (dev, res, &error);
if (!services) {
g_printerr ("error: couldn't get service version info: %s\n",
error->message);
exit (EXIT_FAILURE);
}
g_print ("[%s] Supported versions:\n",
qmi_device_get_path_display (dev));
for (i = 0; i < services->len; i++) {
QmiDeviceServiceVersionInfo *info;
const gchar *service_str;
info = &g_array_index (services, QmiDeviceServiceVersionInfo, i);
service_str = qmi_service_get_string (info->service);
if (service_str)
g_print ("\t%s (%u.%u)\n",
service_str,
info->major_version,
info->minor_version);
else
g_print ("\tunknown [0x%02x] (%u.%u)\n",
info->service,
info->major_version,
info->minor_version);
}
g_array_unref (services);
/* We're done now */
qmicli_async_operation_done (TRUE);
}
static void
device_get_service_version_info (QmiDevice *dev)
{
g_debug ("Getting service version info...");
qmi_device_get_service_version_info (dev,
10,
cancellable,
(GAsyncReadyCallback)get_service_version_info_ready,
NULL);
}
static void
device_open_ready (QmiDevice *dev,
GAsyncResult *res)
@ -386,6 +443,8 @@ device_open_ready (QmiDevice *dev,
if (device_set_instance_id_str)
device_set_instance_id (dev);
else if (get_service_version_info_flag)
device_get_service_version_info (dev);
else
device_allocate_client (dev);
}