diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-02-15 09:54:43 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-02-15 09:54:45 +0100 |
commit | fe3fb77616277877b5dc3ce4b5af43027c90777f (patch) | |
tree | 93b61a2df4a5dcce2b058ac6bfeafda4473ecf3c | |
parent | f8d5b13946ef8278663d1c8c0b872ea7abab3e48 (diff) | |
download | libqmi-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.sections | 1 | ||||
-rw-r--r-- | src/libqmi-glib/qmi-enums-wds.h | 10 | ||||
-rw-r--r-- | src/qmicli/qmicli-wds.c | 21 |
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); |