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);
        |                   ^~~~~
This commit is contained in:
Aleksander Morgado
2020-01-31 15:18:35 +01:00
parent b856f3625d
commit bbeabb495e
7 changed files with 28 additions and 26 deletions
+7 -7
View File
@@ -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,
+8 -8
View File
@@ -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
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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);
}