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:
@@ -1537,11 +1537,11 @@ huawei_signal_changed (MMPortSerialAt *port,
|
|||||||
quality = 0;
|
quality = 0;
|
||||||
} else {
|
} else {
|
||||||
/* Normalize the quality */
|
/* 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_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
|
static void
|
||||||
@@ -2373,9 +2373,9 @@ huawei_1x_signal_changed (MMPortSerialAt *port,
|
|||||||
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
quality = CLAMP (quality, 0, 100);
|
quality = MM_CLAMP_HIGH (quality, 100);
|
||||||
mm_dbg ("1X signal quality: %u", quality);
|
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
|
static void
|
||||||
@@ -2388,9 +2388,9 @@ huawei_evdo_signal_changed (MMPortSerialAt *port,
|
|||||||
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
quality = CLAMP (quality, 0, 100);
|
quality = MM_CLAMP_HIGH (quality, 100);
|
||||||
mm_dbg ("EVDO signal quality: %u", quality);
|
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) */
|
/* Signal quality loading (Modem interface) */
|
||||||
@@ -2459,7 +2459,7 @@ signal_ready (MMBaseModem *self,
|
|||||||
buf[i++] = *response++;
|
buf[i++] = *response++;
|
||||||
|
|
||||||
if (mm_get_uint_from_str (buf, &quality)) {
|
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);
|
g_task_return_int (task, quality);
|
||||||
} else {
|
} else {
|
||||||
g_task_return_new_error (task,
|
g_task_return_new_error (task,
|
||||||
|
@@ -545,10 +545,10 @@ mtk_80_signal_changed (MMPortSerialAt *port,
|
|||||||
if (quality == 99)
|
if (quality == 99)
|
||||||
quality = 0;
|
quality = 0;
|
||||||
else
|
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_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
|
static void
|
||||||
@@ -564,10 +564,10 @@ mtk_90_2g_signal_changed (MMPortSerialAt *port,
|
|||||||
if (quality == 99)
|
if (quality == 99)
|
||||||
quality = 0;
|
quality = 0;
|
||||||
else
|
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_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
|
static void
|
||||||
@@ -580,10 +580,10 @@ mtk_90_3g_signal_changed (MMPortSerialAt *port,
|
|||||||
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
||||||
return;
|
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_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
|
static void
|
||||||
@@ -596,10 +596,10 @@ mtk_90_4g_signal_changed (MMPortSerialAt *port,
|
|||||||
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
if (!mm_get_uint_from_match_info (match_info, 1, &quality))
|
||||||
return;
|
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_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
|
static void
|
||||||
|
@@ -808,7 +808,7 @@ option_signal_changed (MMPortSerialAt *port,
|
|||||||
MMBroadbandModemOption *self)
|
MMBroadbandModemOption *self)
|
||||||
{
|
{
|
||||||
gchar *str;
|
gchar *str;
|
||||||
gint quality = 0;
|
guint quality = 0;
|
||||||
|
|
||||||
str = g_match_info_fetch (match_info, 1);
|
str = g_match_info_fetch (match_info, 1);
|
||||||
if (str) {
|
if (str) {
|
||||||
@@ -821,10 +821,10 @@ option_signal_changed (MMPortSerialAt *port,
|
|||||||
quality = 0;
|
quality = 0;
|
||||||
} else {
|
} else {
|
||||||
/* Normalize the quality */
|
/* 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
|
static void
|
||||||
|
@@ -116,7 +116,7 @@ simtech_signal_changed (MMPortSerialAt *port,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (quality != 99)
|
if (quality != 99)
|
||||||
quality = CLAMP (quality, 0, 31) * 100 / 31;
|
quality = MM_CLAMP_HIGH (quality, 31) * 100 / 31;
|
||||||
else
|
else
|
||||||
quality = 0;
|
quality = 0;
|
||||||
|
|
||||||
|
@@ -281,7 +281,7 @@ handle_evdo_quality_change (MMPortSerialAt *port,
|
|||||||
guint quality = 0;
|
guint quality = 0;
|
||||||
|
|
||||||
if (mm_get_uint_from_match_info (match_info, 1, &quality)) {
|
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_dbg ("EVDO signal quality: %u", quality);
|
||||||
mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality);
|
mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality);
|
||||||
}
|
}
|
||||||
|
@@ -1674,12 +1674,8 @@ signal_state_query_ready (MbimDevice *device,
|
|||||||
NULL, /* rssi_threshold */
|
NULL, /* rssi_threshold */
|
||||||
NULL, /* error_rate_threshold */
|
NULL, /* error_rate_threshold */
|
||||||
&error)) {
|
&error)) {
|
||||||
guint32 quality;
|
|
||||||
|
|
||||||
/* Normalize the quality. 99 means unknown, we default it to 0 */
|
/* 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, MM_CLAMP_HIGH (rssi == 99 ? 0 : rssi, 31) * 100 / 31);
|
||||||
|
|
||||||
g_task_return_int (task, quality);
|
|
||||||
} else
|
} else
|
||||||
g_task_return_error (task, error);
|
g_task_return_error (task, error);
|
||||||
|
|
||||||
@@ -2920,7 +2916,7 @@ basic_connect_notification_signal_state (MMBroadbandModemMbim *self,
|
|||||||
guint32 quality;
|
guint32 quality;
|
||||||
|
|
||||||
/* Normalize the quality. 99 means unknown, we default it to 0 */
|
/* 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_dbg ("Signal state indication: %u --> %u%%", rssi, quality);
|
||||||
mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality);
|
mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality);
|
||||||
|
@@ -504,4 +504,10 @@ gboolean mm_parse_supl_address (const gchar *supl,
|
|||||||
guint16 *out_port,
|
guint16 *out_port,
|
||||||
GError **error);
|
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 */
|
#endif /* MM_MODEM_HELPERS_H */
|
||||||
|
Reference in New Issue
Block a user