diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qmicli/qmicli-dms.c | 21 | ||||
-rw-r--r-- | src/qmicli/qmicli-nas.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-pbm.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-pdc.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-uim.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-voice.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-wda.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-wds.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli-wms.c | 2 | ||||
-rw-r--r-- | src/qmicli/qmicli.c | 17 | ||||
-rw-r--r-- | src/qmicli/qmicli.h | 3 |
11 files changed, 39 insertions, 18 deletions
diff --git a/src/qmicli/qmicli-dms.c b/src/qmicli/qmicli-dms.c index 062a83a..cb4f780 100644 --- a/src/qmicli/qmicli-dms.c +++ b/src/qmicli/qmicli-dms.c @@ -404,7 +404,17 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); +} + +static void +operation_shutdown_skip_cid_release (gboolean operation_status) +{ + /* Cleanup context and finish async operation. Explicitly ask not to release + * the client CID. This is so that the qmicli operation doesn't fail after + * this step, e.g. if the device just reboots after the action. */ + context_free (ctx); + qmicli_async_operation_done (operation_status, TRUE); } static void @@ -3392,8 +3402,15 @@ hp_change_device_mode_ready (QmiClientDms *client, return; } + g_print ("[%s] Successfully changed HP device mode\n", + qmi_device_get_path_display (ctx->device)); + qmi_message_dms_hp_change_device_mode_output_unref (output); - operation_shutdown (TRUE); + + /* Changing the mode will end up power cycling the device right away, so + * just ignore any error from now on and don't even try to release the + * client CID */ + operation_shutdown_skip_cid_release (TRUE); } static void diff --git a/src/qmicli/qmicli-nas.c b/src/qmicli/qmicli-nas.c index 73125ac..b056bea 100644 --- a/src/qmicli/qmicli-nas.c +++ b/src/qmicli/qmicli-nas.c @@ -203,7 +203,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static gboolean diff --git a/src/qmicli/qmicli-pbm.c b/src/qmicli/qmicli-pbm.c index 66fd1fb..3b4379d 100644 --- a/src/qmicli/qmicli-pbm.c +++ b/src/qmicli/qmicli-pbm.c @@ -110,7 +110,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static void diff --git a/src/qmicli/qmicli-pdc.c b/src/qmicli/qmicli-pdc.c index a7b137d..879ec04 100644 --- a/src/qmicli/qmicli-pdc.c +++ b/src/qmicli/qmicli-pdc.c @@ -228,7 +228,7 @@ operation_shutdown (gboolean operation_status) /* Cleanup context and finish async operation */ context_free (ctx); ctx = NULL; - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } /******************************************************************************/ diff --git a/src/qmicli/qmicli-uim.c b/src/qmicli/qmicli-uim.c index 453b46d..a54b082 100644 --- a/src/qmicli/qmicli-uim.c +++ b/src/qmicli/qmicli-uim.c @@ -159,7 +159,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static QmiMessageUimSetPinProtectionInput * diff --git a/src/qmicli/qmicli-voice.c b/src/qmicli/qmicli-voice.c index 3c60901..53a7fff 100644 --- a/src/qmicli/qmicli-voice.c +++ b/src/qmicli/qmicli-voice.c @@ -117,7 +117,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static void diff --git a/src/qmicli/qmicli-wda.c b/src/qmicli/qmicli-wda.c index b88b16e..7db5d87 100644 --- a/src/qmicli/qmicli-wda.c +++ b/src/qmicli/qmicli-wda.c @@ -123,7 +123,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static gboolean diff --git a/src/qmicli/qmicli-wds.c b/src/qmicli/qmicli-wds.c index 5973b11..9ba1063 100644 --- a/src/qmicli/qmicli-wds.c +++ b/src/qmicli/qmicli-wds.c @@ -222,7 +222,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static void diff --git a/src/qmicli/qmicli-wms.c b/src/qmicli/qmicli-wms.c index 4599905..48c30a8 100644 --- a/src/qmicli/qmicli-wms.c +++ b/src/qmicli/qmicli-wms.c @@ -117,7 +117,7 @@ operation_shutdown (gboolean operation_status) { /* Cleanup context and finish async operation */ context_free (ctx); - qmicli_async_operation_done (operation_status); + qmicli_async_operation_done (operation_status, FALSE); } static void diff --git a/src/qmicli/qmicli.c b/src/qmicli/qmicli.c index 00b4aad..630fd9c 100644 --- a/src/qmicli/qmicli.c +++ b/src/qmicli/qmicli.c @@ -266,7 +266,8 @@ release_client_ready (QmiDevice *dev, } void -qmicli_async_operation_done (gboolean reported_operation_status) +qmicli_async_operation_done (gboolean reported_operation_status, + gboolean skip_cid_release) { QmiDeviceReleaseClientFlags flags = QMI_DEVICE_RELEASE_CLIENT_FLAGS_NONE; @@ -282,7 +283,9 @@ qmicli_async_operation_done (gboolean reported_operation_status) return; } - if (!client_no_release_cid_flag) + if (skip_cid_release) + g_debug ("Skipped CID release"); + else if (!client_no_release_cid_flag) flags |= QMI_DEVICE_RELEASE_CLIENT_FLAGS_RELEASE_CID; else g_print ("[%s] Client ID not released:\n" @@ -398,7 +401,7 @@ set_instance_id_ready (QmiDevice *dev, link_id); /* We're done now */ - qmicli_async_operation_done (TRUE); + qmicli_async_operation_done (TRUE, FALSE); } static void @@ -467,7 +470,7 @@ get_service_version_info_ready (QmiDevice *dev, g_array_unref (services); /* We're done now */ - qmicli_async_operation_done (TRUE); + qmicli_async_operation_done (TRUE, FALSE); } static void @@ -499,7 +502,7 @@ device_set_expected_data_format_cb (QmiDevice *dev) qmi_device_expected_data_format_get_string (expected)); /* We're done now */ - qmicli_async_operation_done (!error); + qmicli_async_operation_done (!error, FALSE); g_object_unref (dev); return FALSE; @@ -526,7 +529,7 @@ device_get_expected_data_format_cb (QmiDevice *dev) g_print ("%s\n", qmi_device_expected_data_format_get_string (expected)); /* We're done now */ - qmicli_async_operation_done (!error); + qmicli_async_operation_done (!error, FALSE); g_object_unref (dev); return FALSE; @@ -551,7 +554,7 @@ device_get_wwan_iface_cb (QmiDevice *dev) g_print ("%s\n", wwan_iface); /* We're done now */ - qmicli_async_operation_done (!!wwan_iface); + qmicli_async_operation_done (!!wwan_iface, FALSE); g_object_unref (dev); return FALSE; diff --git a/src/qmicli/qmicli.h b/src/qmicli/qmicli.h index 7672490..5ebd988 100644 --- a/src/qmicli/qmicli.h +++ b/src/qmicli/qmicli.h @@ -24,7 +24,8 @@ #define __QMICLI_H__ /* Common */ -void qmicli_async_operation_done (gboolean operation_status); +void qmicli_async_operation_done (gboolean reported_operation_status, + gboolean skip_cid_release); /* DMS group */ GOptionGroup *qmicli_dms_get_option_group (void); |