diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-02-15 09:54:43 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@gnu.org> | 2019-03-02 12:25:37 +0000 |
commit | 635303216bb0af784d58f14d6983ef39322210aa (patch) | |
tree | 9d1852c165e4a636faa9203b38034f0b03b93faa | |
parent | bfdea5d8158abbf9b4235fe96267beb21c88667d (diff) | |
download | libqmi-635303216bb0af784d58f14d6983ef39322210aa.tar.gz |
wds: handle unknown current rates properly
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 99d20dfc..f2363a45 100644 --- a/docs/reference/libqmi-glib/libqmi-glib-common.sections +++ b/docs/reference/libqmi-glib/libqmi-glib-common.sections @@ -539,6 +539,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 d6d82fbe..4b560539 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); |