diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-07-18 08:27:20 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-08-21 12:34:51 +0200 |
commit | 0502646f9f68a37b00066247beb856bc781c6afa (patch) | |
tree | a6585867c8a25a82df82027e0cb80b1447e87960 /src/mm-iface-modem-signal.c | |
parent | e8ce650ed0bd271681fae881f8b597ebe739fb7b (diff) |
api,introspection: use per-technology dictionaries in the 'Signal' interface
Diffstat (limited to 'src/mm-iface-modem-signal.c')
-rw-r--r-- | src/mm-iface-modem-signal.c | 86 |
1 files changed, 60 insertions, 26 deletions
diff --git a/src/mm-iface-modem-signal.c b/src/mm-iface-modem-signal.c index 7425d32e..bd415efe 100644 --- a/src/mm-iface-modem-signal.c +++ b/src/mm-iface-modem-signal.c @@ -59,19 +59,11 @@ clear_values (MMIfaceModemSignal *self) if (!skeleton) return; - mm_gdbus_modem_signal_set_cdma_rssi (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_cdma_ecio (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_evdo_rssi (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_evdo_ecio (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_evdo_sinr (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_evdo_io (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_gsm_rssi (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_umts_rssi (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_umts_ecio (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_lte_rssi (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_lte_rsrq (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_lte_rsrp (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); - mm_gdbus_modem_signal_set_lte_snr (skeleton, g_variant_new ("(bd)", FALSE, 0.0)); + mm_gdbus_modem_signal_set_cdma (skeleton, NULL); + mm_gdbus_modem_signal_set_evdo (skeleton, NULL); + mm_gdbus_modem_signal_set_gsm (skeleton, NULL); + mm_gdbus_modem_signal_set_umts (skeleton, NULL); + mm_gdbus_modem_signal_set_lte (skeleton, NULL); g_object_unref (skeleton); } @@ -79,6 +71,8 @@ static void load_values_ready (MMIfaceModemSignal *self, GAsyncResult *res) { + MMSignal *info; + GVariant *dictionary; GError *error = NULL; gboolean cdma_available; gdouble cdma_rssi; @@ -137,19 +131,59 @@ load_values_ready (MMIfaceModemSignal *self, return; } - mm_gdbus_modem_signal_set_cdma_rssi (skeleton, g_variant_new ("(bd)", cdma_available, cdma_rssi)); - mm_gdbus_modem_signal_set_cdma_ecio (skeleton, g_variant_new ("(bd)", cdma_available, cdma_ecio)); - mm_gdbus_modem_signal_set_evdo_rssi (skeleton, g_variant_new ("(bd)", evdo_available, evdo_rssi)); - mm_gdbus_modem_signal_set_evdo_ecio (skeleton, g_variant_new ("(bd)", evdo_available, evdo_ecio)); - mm_gdbus_modem_signal_set_evdo_sinr (skeleton, g_variant_new ("(bd)", evdo_available, evdo_sinr)); - mm_gdbus_modem_signal_set_evdo_io (skeleton, g_variant_new ("(bd)", evdo_available, evdo_io)); - mm_gdbus_modem_signal_set_gsm_rssi (skeleton, g_variant_new ("(bd)", gsm_available, gsm_rssi)); - mm_gdbus_modem_signal_set_umts_rssi (skeleton, g_variant_new ("(bd)", umts_available, umts_rssi)); - mm_gdbus_modem_signal_set_umts_ecio (skeleton, g_variant_new ("(bd)", umts_available, umts_ecio)); - mm_gdbus_modem_signal_set_lte_rssi (skeleton, g_variant_new ("(bd)", lte_available, lte_rssi)); - mm_gdbus_modem_signal_set_lte_rsrq (skeleton, g_variant_new ("(bd)", lte_available, lte_rsrq)); - mm_gdbus_modem_signal_set_lte_rsrp (skeleton, g_variant_new ("(bd)", lte_available,lte_rsrp)); - mm_gdbus_modem_signal_set_lte_snr (skeleton, g_variant_new ("(bd)", lte_available, lte_snr)); + if (cdma_available) { + info = mm_signal_new (); + mm_signal_set_rssi (info, cdma_rssi); + mm_signal_set_ecio (info, cdma_ecio); + dictionary = mm_signal_get_dictionary (info); + mm_gdbus_modem_signal_set_cdma (skeleton, dictionary); + g_variant_unref (dictionary); + g_object_unref (info); + } + + if (evdo_available) { + info = mm_signal_new (); + mm_signal_set_rssi (info, evdo_rssi); + mm_signal_set_ecio (info, evdo_ecio); + mm_signal_set_sinr (info, evdo_sinr); + mm_signal_set_io (info, evdo_io); + dictionary = mm_signal_get_dictionary (info); + mm_gdbus_modem_signal_set_evdo (skeleton, dictionary); + g_variant_unref (dictionary); + g_object_unref (info); + } + + if (gsm_available) { + info = mm_signal_new (); + mm_signal_set_rssi (info, gsm_rssi); + dictionary = mm_signal_get_dictionary (info); + mm_gdbus_modem_signal_set_gsm (skeleton, dictionary); + g_variant_unref (dictionary); + g_object_unref (info); + } + + if (umts_available) { + info = mm_signal_new (); + mm_signal_set_rssi (info, umts_rssi); + mm_signal_set_ecio (info, umts_ecio); + dictionary = mm_signal_get_dictionary (info); + mm_gdbus_modem_signal_set_umts (skeleton, dictionary); + g_variant_unref (dictionary); + g_object_unref (info); + } + + if (lte_available) { + info = mm_signal_new (); + mm_signal_set_rssi (info, lte_rssi); + mm_signal_set_rsrq (info, lte_rsrq); + mm_signal_set_rsrp (info, lte_rsrp); + mm_signal_set_snr (info, lte_snr); + dictionary = mm_signal_get_dictionary (info); + mm_gdbus_modem_signal_set_lte (skeleton, dictionary); + g_variant_unref (dictionary); + g_object_unref (info); + } + /* Flush right away */ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (skeleton)); |