summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-02-15 09:54:43 +0100
committerAleksander Morgado <aleksander@aleksander.es>2019-02-15 09:54:45 +0100
commitfe3fb77616277877b5dc3ce4b5af43027c90777f (patch)
tree93b61a2df4a5dcce2b058ac6bfeafda4473ecf3c
parentf8d5b13946ef8278663d1c8c0b872ea7abab3e48 (diff)
downloadlibqmi-aleksander/unknown-current-rates.tar.gz
wds: handle unknown current rates properlyaleksander/unknown-current-rates
When the modem is not connected, the current rate reported will be 0xFFFFFFFF, which we should detect and not treat as a valid rate. https://gitlab.freedesktop.org/mobile-broadband/libqmi/issues/8
-rw-r--r--docs/reference/libqmi-glib/libqmi-glib-common.sections1
-rw-r--r--src/libqmi-glib/qmi-enums-wds.h10
-rw-r--r--src/qmicli/qmicli-wds.c21
3 files changed, 27 insertions, 5 deletions
diff --git a/docs/reference/libqmi-glib/libqmi-glib-common.sections b/docs/reference/libqmi-glib/libqmi-glib-common.sections
index 639853cc..c153fbc4 100644
--- a/docs/reference/libqmi-glib/libqmi-glib-common.sections
+++ b/docs/reference/libqmi-glib/libqmi-glib-common.sections
@@ -529,6 +529,7 @@ QmiWdsSoEvdoRev0
QmiWdsSoEvdoRevB
QmiWdsTetheredCallType
QmiWdsClientType
+QMI_WDS_RATE_UNAVAILABLE
<SUBSECTION Methods>
qmi_wds_ip_family_get_string
qmi_wds_profile_family_get_string
diff --git a/src/libqmi-glib/qmi-enums-wds.h b/src/libqmi-glib/qmi-enums-wds.h
index b0ba8499..7cea4489 100644
--- a/src/libqmi-glib/qmi-enums-wds.h
+++ b/src/libqmi-glib/qmi-enums-wds.h
@@ -1943,4 +1943,14 @@ typedef enum { /*< underscore_name=qmi_wds_client_type > */
*
* Since: 1.18
*/
+
+/**
+ * QMI_WDS_RATE_UNAVAILABLE:
+ *
+ * The TX/RX rate information is unavailable or cannot be measured.
+ *
+ * Since: 1.24
+ */
+#define QMI_WDS_RATE_UNAVAILABLE 0xFFFFFFFF
+
#endif /* _LIBQMI_GLIB_QMI_ENUMS_WDS_H_ */
diff --git a/src/qmicli/qmicli-wds.c b/src/qmicli/qmicli-wds.c
index 1d8cb676..96f21db0 100644
--- a/src/qmicli/qmicli-wds.c
+++ b/src/qmicli/qmicli-wds.c
@@ -2582,12 +2582,23 @@ get_channel_rates_ready (QmiClientWds *client,
&maxtxrate,
&maxrxrate,
NULL);
- g_print ("\tCurrent TX rate: %ubps\n"
- "\tCurrent RX rate: %ubps\n"
- "\tMax TX rate: %ubps\n"
+
+ /* Current TX/RX rates may not be available if device is disconnected */
+
+ g_print ("\tCurrent TX rate: ");
+ if (txrate != QMI_WDS_RATE_UNAVAILABLE)
+ g_print ("%ubps\n", txrate);
+ else
+ g_print ("n/a\n");
+
+ g_print ("\tCurrent RX rate: ");
+ if (rxrate != QMI_WDS_RATE_UNAVAILABLE)
+ g_print ("%ubps\n", rxrate);
+ else
+ g_print ("n/a\n");
+
+ g_print ("\tMax TX rate: %ubps\n"
"\tMax RX rate: %ubps\n",
- txrate,
- rxrate,
maxtxrate,
maxrxrate);