diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-07-26 08:45:41 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-29 17:26:42 +0200 |
commit | 56721d687f0f6844bfddb558072c88d1e60665ff (patch) | |
tree | b5873441362b939b00c6cb91562617fa4ee8c0e4 /src | |
parent | 40f96158af253e3efcee274e8e09430e364e1c14 (diff) |
broadband-modem-qmi: log gathered signal strength/rssi values
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 65 |
1 files changed, 43 insertions, 22 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 3c08f286..41eec558 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -1123,7 +1123,7 @@ modem_load_supported_bands (MMIfaceModem *self, /* Limit the value betweeen [-113,-51] and scale it to a percentage */ #define STRENGTH_TO_QUALITY(strength) \ - (100 - ((CLAMP (strength, -113, -51) + 51) * 100 / (-113 + 51))) + (guint8)(100 - ((CLAMP (strength, -113, -51) + 51) * 100 / (-113 + 51))) typedef struct { MMBroadbandModemQmi *self; @@ -1161,32 +1161,41 @@ signal_info_get_quality (MMBroadbandModemQmi *self, { gint8 rssi_max = 0; gint8 rssi; + guint8 quality; /* We do not report per-technology signal quality, so just get the highest * one of the ones reported. */ - if (qmi_message_nas_get_signal_info_output_get_cdma_signal_strength (output, &rssi, NULL, NULL) && - rssi > rssi_max) - rssi_max = rssi; + if (qmi_message_nas_get_signal_info_output_get_cdma_signal_strength (output, &rssi, NULL, NULL)) { + mm_dbg ("RSSI (CDMA): %d dBm", rssi); + rssi = MAX (rssi, rssi_max); + } - if (qmi_message_nas_get_signal_info_output_get_hdr_signal_strength (output, &rssi, NULL, NULL, NULL, NULL) && - rssi > rssi_max) - rssi_max = rssi; + if (qmi_message_nas_get_signal_info_output_get_hdr_signal_strength (output, &rssi, NULL, NULL, NULL, NULL)) { + mm_dbg ("RSSI (HDR): %d dBm", rssi); + rssi = MAX (rssi, rssi_max); + } - if (qmi_message_nas_get_signal_info_output_get_gsm_signal_strength (output, &rssi, NULL) && - rssi > rssi_max) - rssi_max = rssi; + if (qmi_message_nas_get_signal_info_output_get_gsm_signal_strength (output, &rssi, NULL)) { + mm_dbg ("RSSI (GSM): %d dBm", rssi); + rssi = MAX (rssi, rssi_max); + } - if (qmi_message_nas_get_signal_info_output_get_wcdma_signal_strength (output, &rssi, NULL, NULL) && - rssi > rssi_max) - rssi_max = rssi; + if (qmi_message_nas_get_signal_info_output_get_wcdma_signal_strength (output, &rssi, NULL, NULL)) { + mm_dbg ("RSSI (WCDMA): %d dBm", rssi); + rssi = MAX (rssi, rssi_max); + } - if (qmi_message_nas_get_signal_info_output_get_lte_signal_strength (output, &rssi, NULL, NULL, NULL, NULL) && - rssi > rssi_max) - rssi_max = rssi; + if (qmi_message_nas_get_signal_info_output_get_lte_signal_strength (output, &rssi, NULL, NULL, NULL, NULL)) { + mm_dbg ("RSSI (LTE): %d dBm", rssi); + rssi = MAX (rssi, rssi_max); + } /* This RSSI comes as negative dBms */ - return STRENGTH_TO_QUALITY (rssi_max); + quality = STRENGTH_TO_QUALITY (rssi_max); + + mm_dbg ("RSSI: %d dBm --> %u%%", rssi_max, quality); + return quality; } static void @@ -1238,13 +1247,18 @@ signal_strength_get_quality (MMBroadbandModemQmi *self, QmiMessageNasGetSignalStrengthOutput *output) { GArray *array = NULL; - gint8 signal_max = 0; + gint8 signal_max; + QmiNasRadioInterface main_interface; + guint8 quality; /* We do not report per-technology signal quality, so just get the highest * one of the ones reported. */ /* The mandatory one is always present */ - qmi_message_nas_get_signal_strength_output_get_signal_strength (output, &signal_max, NULL, NULL); + qmi_message_nas_get_signal_strength_output_get_signal_strength (output, &signal_max, &main_interface, NULL); + mm_dbg ("Signal strength (%s): %d dBm", + qmi_nas_radio_interface_get_string (main_interface), + signal_max); /* On multimode devices we may get more */ if (qmi_message_nas_get_signal_strength_output_get_strength_list (output, &array, NULL)) { @@ -1254,13 +1268,20 @@ signal_strength_get_quality (MMBroadbandModemQmi *self, QmiMessageNasGetSignalStrengthOutputStrengthListElement *element; element = &g_array_index (array, QmiMessageNasGetSignalStrengthOutputStrengthListElement, i); - if (element->strength > signal_max) - signal_max = element->strength; + + mm_dbg ("Signal strength (%s): %d dBm", + qmi_nas_radio_interface_get_string (element->radio_interface), + element->strength); + + signal_max = MAX (element->strength, signal_max); } } /* This signal strength comes as negative dBms */ - return STRENGTH_TO_QUALITY (signal_max); + quality = STRENGTH_TO_QUALITY (signal_max); + + mm_dbg ("Signal strength: %d dBm --> %u%%", signal_max, quality); + return quality; } static void |