diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2020-01-30 18:54:23 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-01-31 15:18:35 +0100 |
commit | bbeabb495e1bd2df3d938b850fbce4e61a61d9fa (patch) | |
tree | c2074f172166da03b5a20a4044a1ac2759523b2c | |
parent | b856f3625db670346a248967a53d6d0119e725b7 (diff) |
helpers: new macro to CLAMP high threshold only
Useful when clamping a unsigned integer with low threshold set to 0,
which would give us compiler warnings with -Wtype-limits when using
CLAMP(), e.g.:
via/mm-broadband-modem-via.c: In function ‘handle_evdo_quality_change’:
/usr/include/glib-2.0/glib/gmacros.h:811:63: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
811 | #define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
| ^
via/mm-broadband-modem-via.c:284:19: note: in expansion of macro ‘CLAMP’
284 | quality = CLAMP (quality, 0, 100);
| ^~~~~
-rw-r--r-- | plugins/huawei/mm-broadband-modem-huawei.c | 14 | ||||
-rw-r--r-- | plugins/mtk/mm-broadband-modem-mtk.c | 16 | ||||
-rw-r--r-- | plugins/option/mm-broadband-modem-option.c | 6 | ||||
-rw-r--r-- | plugins/simtech/mm-broadband-modem-simtech.c | 2 | ||||
-rw-r--r-- | plugins/via/mm-broadband-modem-via.c | 2 | ||||
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 8 | ||||
-rw-r--r-- | src/mm-modem-helpers.h | 6 |
7 files changed, 28 insertions, 26 deletions
diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c index a7e40c81..12b518ee 100644 --- a/plugins/huawei/mm-broadband-modem-huawei.c +++ b/plugins/huawei/mm-broadband-modem-huawei.c @@ -1537,11 +1537,11 @@ huawei_signal_changed (MMPortSerialAt *port, quality = 0; } else { /* Normalize the quality */ - quality = CLAMP (quality, 0, 31) * 100 / 31; + quality = MM_CLAMP_HIGH (quality, 31) * 100 / 31; } mm_dbg ("3GPP signal quality: %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void @@ -2373,9 +2373,9 @@ huawei_1x_signal_changed (MMPortSerialAt *port, if (!mm_get_uint_from_match_info (match_info, 1, &quality)) return; - quality = CLAMP (quality, 0, 100); + quality = MM_CLAMP_HIGH (quality, 100); mm_dbg ("1X signal quality: %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void @@ -2388,9 +2388,9 @@ huawei_evdo_signal_changed (MMPortSerialAt *port, if (!mm_get_uint_from_match_info (match_info, 1, &quality)) return; - quality = CLAMP (quality, 0, 100); + quality = MM_CLAMP_HIGH (quality, 100); mm_dbg ("EVDO signal quality: %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } /* Signal quality loading (Modem interface) */ @@ -2459,7 +2459,7 @@ signal_ready (MMBaseModem *self, buf[i++] = *response++; if (mm_get_uint_from_str (buf, &quality)) { - quality = CLAMP (quality, 0, 100); + quality = MM_CLAMP_HIGH (quality, 100); g_task_return_int (task, quality); } else { g_task_return_new_error (task, diff --git a/plugins/mtk/mm-broadband-modem-mtk.c b/plugins/mtk/mm-broadband-modem-mtk.c index dbdd66ac..98620124 100644 --- a/plugins/mtk/mm-broadband-modem-mtk.c +++ b/plugins/mtk/mm-broadband-modem-mtk.c @@ -545,10 +545,10 @@ mtk_80_signal_changed (MMPortSerialAt *port, if (quality == 99) quality = 0; else - quality = CLAMP(quality, 0, 31) * 100 / 31; + quality = MM_CLAMP_HIGH (quality, 31) * 100 / 31; mm_dbg ("6280 signal quality URC received: quality = %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void @@ -564,10 +564,10 @@ mtk_90_2g_signal_changed (MMPortSerialAt *port, if (quality == 99) quality = 0; else - quality = CLAMP (quality, 0, 63) * 100 / 63; + quality = MM_CLAMP_HIGH (quality, 63) * 100 / 63; mm_dbg ("2G signal quality URC received: quality = %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void @@ -580,10 +580,10 @@ mtk_90_3g_signal_changed (MMPortSerialAt *port, if (!mm_get_uint_from_match_info (match_info, 1, &quality)) return; - quality = CLAMP (quality, 0, 96) * 100 / 96; + quality = MM_CLAMP_HIGH (quality, 96) * 100 / 96; mm_dbg ("3G signal quality URC received: quality = %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void @@ -596,10 +596,10 @@ mtk_90_4g_signal_changed (MMPortSerialAt *port, if (!mm_get_uint_from_match_info (match_info, 1, &quality)) return; - quality = CLAMP (quality, 0, 97) * 100 / 97; + quality = MM_CLAMP_HIGH (quality, 97) * 100 / 97; mm_dbg ("4G signal quality URC received: quality = %u", quality); - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void diff --git a/plugins/option/mm-broadband-modem-option.c b/plugins/option/mm-broadband-modem-option.c index 82ec58d0..268cb531 100644 --- a/plugins/option/mm-broadband-modem-option.c +++ b/plugins/option/mm-broadband-modem-option.c @@ -808,7 +808,7 @@ option_signal_changed (MMPortSerialAt *port, MMBroadbandModemOption *self) { gchar *str; - gint quality = 0; + guint quality = 0; str = g_match_info_fetch (match_info, 1); if (str) { @@ -821,10 +821,10 @@ option_signal_changed (MMPortSerialAt *port, quality = 0; } else { /* Normalize the quality */ - quality = CLAMP (quality, 0, 31) * 100 / 31; + quality = MM_CLAMP_HIGH (quality, 31) * 100 / 31; } - mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality); + mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } static void diff --git a/plugins/simtech/mm-broadband-modem-simtech.c b/plugins/simtech/mm-broadband-modem-simtech.c index 21781dc9..246ce682 100644 --- a/plugins/simtech/mm-broadband-modem-simtech.c +++ b/plugins/simtech/mm-broadband-modem-simtech.c @@ -116,7 +116,7 @@ simtech_signal_changed (MMPortSerialAt *port, return; if (quality != 99) - quality = CLAMP (quality, 0, 31) * 100 / 31; + quality = MM_CLAMP_HIGH (quality, 31) * 100 / 31; else quality = 0; diff --git a/plugins/via/mm-broadband-modem-via.c b/plugins/via/mm-broadband-modem-via.c index 968e62da..6e2cfe61 100644 --- a/plugins/via/mm-broadband-modem-via.c +++ b/plugins/via/mm-broadband-modem-via.c @@ -281,7 +281,7 @@ handle_evdo_quality_change (MMPortSerialAt *port, guint quality = 0; if (mm_get_uint_from_match_info (match_info, 1, &quality)) { - quality = CLAMP (quality, 0, 100); + quality = MM_CLAMP_HIGH (quality, 100); mm_dbg ("EVDO signal quality: %u", quality); mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); } diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 80340b69..a6b6ec5f 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -1674,12 +1674,8 @@ signal_state_query_ready (MbimDevice *device, NULL, /* rssi_threshold */ NULL, /* error_rate_threshold */ &error)) { - guint32 quality; - /* Normalize the quality. 99 means unknown, we default it to 0 */ - quality = CLAMP (rssi == 99 ? 0 : (gint)rssi, 0, 31) * 100 / 31; - - g_task_return_int (task, quality); + g_task_return_int (task, MM_CLAMP_HIGH (rssi == 99 ? 0 : rssi, 31) * 100 / 31); } else g_task_return_error (task, error); @@ -2920,7 +2916,7 @@ basic_connect_notification_signal_state (MMBroadbandModemMbim *self, guint32 quality; /* Normalize the quality. 99 means unknown, we default it to 0 */ - quality = CLAMP (rssi == 99 ? 0 : (gint)rssi, 0, 31) * 100 / 31; + quality = MM_CLAMP_HIGH (rssi == 99 ? 0 : rssi, 31) * 100 / 31; mm_dbg ("Signal state indication: %u --> %u%%", rssi, quality); mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); diff --git a/src/mm-modem-helpers.h b/src/mm-modem-helpers.h index c41d1d31..9c1be81f 100644 --- a/src/mm-modem-helpers.h +++ b/src/mm-modem-helpers.h @@ -504,4 +504,10 @@ gboolean mm_parse_supl_address (const gchar *supl, guint16 *out_port, GError **error); +/*****************************************************************************/ + +/* Useful when clamp-ing an unsigned integer with implicit low limit set to 0, + * and in order to avoid -Wtype-limits warnings. */ +#define MM_CLAMP_HIGH(x, high) (((x) > (high)) ? (high) : (x)) + #endif /* MM_MODEM_HELPERS_H */ |