summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-08-05 14:24:25 +0200
committerAleksander Morgado <aleksander@aleksander.es>2018-09-22 10:09:18 +0200
commit9541fc20a6991e35b3c0a67fb4fd4d38adc0f014 (patch)
tree8adc50d778e40e6d3c7adffd60e569a67250bfba
parentb90c142ad8f107963a99d59e3a3e499705c1901e (diff)
downloadModemManager-9541fc20a6991e35b3c0a67fb4fd4d38adc0f014.tar.gz
signal: cleanup previous extended info if no new one given
E.g. if the modem switches from 4G to 3G while the extended signal information is enabled, we should no longer expose LTE specific signal quality values, only the UMTS specific ones. E.g. to avoid this: $ mmcli -m 1 --signal-get ------------------------- UMTS | RSSI: '0,00' dBm | RSCP: '-92,00' dBm | EcIo: '-13,00' dB ------------------------- LTE | RSSI: '0,00' dBm | RSRQ: '-6,50' dB | RSRP: '-96,00' dBm | SNR: '0,00' dB (cherry picked from commit ae9efa05c855c94122ef25ab6ee43dee13c1a64c)
-rw-r--r--src/mm-iface-modem-signal.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/mm-iface-modem-signal.c b/src/mm-iface-modem-signal.c
index 99096a957..c43b1b9f2 100644
--- a/src/mm-iface-modem-signal.c
+++ b/src/mm-iface-modem-signal.c
@@ -113,35 +113,40 @@ load_values_ready (MMIfaceModemSignal *self,
mm_gdbus_modem_signal_set_cdma (skeleton, dictionary);
g_variant_unref (dictionary);
g_object_unref (cdma);
- }
+ } else
+ mm_gdbus_modem_signal_set_cdma (skeleton, NULL);
if (evdo) {
dictionary = mm_signal_get_dictionary (evdo);
mm_gdbus_modem_signal_set_evdo (skeleton, dictionary);
g_variant_unref (dictionary);
g_object_unref (evdo);
- }
+ } else
+ mm_gdbus_modem_signal_set_evdo (skeleton, NULL);
if (gsm) {
dictionary = mm_signal_get_dictionary (gsm);
mm_gdbus_modem_signal_set_gsm (skeleton, dictionary);
g_variant_unref (dictionary);
g_object_unref (gsm);
- }
+ } else
+ mm_gdbus_modem_signal_set_gsm (skeleton, NULL);
if (umts) {
dictionary = mm_signal_get_dictionary (umts);
mm_gdbus_modem_signal_set_umts (skeleton, dictionary);
g_variant_unref (dictionary);
g_object_unref (umts);
- }
+ } else
+ mm_gdbus_modem_signal_set_umts (skeleton, NULL);
if (lte) {
dictionary = mm_signal_get_dictionary (lte);
mm_gdbus_modem_signal_set_lte (skeleton, dictionary);
g_variant_unref (dictionary);
g_object_unref (lte);
- }
+ } else
+ mm_gdbus_modem_signal_set_lte (skeleton, NULL);
/* Flush right away */
g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (skeleton));