diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 6 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 54 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 4 | ||||
-rw-r--r-- | src/mm-iface-modem-signal.c | 12 | ||||
-rw-r--r-- | src/mm-iface-modem-signal.h | 1 |
5 files changed, 59 insertions, 18 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 8954889b..4bf941d5 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -4342,6 +4342,7 @@ typedef struct { MMSignal *gsm; MMSignal *umts; MMSignal *lte; + MMSignal *nr5g; } SignalLoadValuesResult; static void @@ -4361,6 +4362,7 @@ modem_signal_load_values_finish (MMIfaceModemSignal *self, MMSignal **gsm, MMSignal **umts, MMSignal **lte, + MMSignal **nr5g, GError **error) { SignalLoadValuesResult *result; @@ -4391,6 +4393,8 @@ modem_signal_load_values_finish (MMIfaceModemSignal *self, *cdma = NULL; if (evdo) *evdo = NULL; + if (nr5g) + *nr5g = NULL; return TRUE; } @@ -4489,7 +4493,7 @@ parent_signal_load_values_ready (MMIfaceModemSignal *self, result = g_slice_new0 (SignalLoadValuesResult); if (!iface_modem_signal_parent->load_values_finish (self, res, NULL, NULL, - &result->gsm, &result->umts, &result->lte, + &result->gsm, &result->umts, &result->lte, &result->nr5g, &error)) { signal_load_values_result_free (result); g_task_return_error (task, error); diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index e3a616ae..4169fa15 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -8463,6 +8463,7 @@ typedef struct { MMSignal *gsm; MMSignal *umts; MMSignal *lte; + MMSignal *nr5g; } SignalLoadValuesResult; typedef struct { @@ -8509,14 +8510,15 @@ get_db_from_sinr_level (MMBroadbandModemQmi *self, } static gboolean -signal_load_values_finish (MMIfaceModemSignal *self, - GAsyncResult *res, - MMSignal **cdma, - MMSignal **evdo, - MMSignal **gsm, - MMSignal **umts, - MMSignal **lte, - GError **error) +signal_load_values_finish (MMIfaceModemSignal *self, + GAsyncResult *res, + MMSignal **cdma, + MMSignal **evdo, + MMSignal **gsm, + MMSignal **umts, + MMSignal **lte, + MMSignal **nr5g, + GError **error) { SignalLoadValuesResult *values_result; @@ -8529,6 +8531,7 @@ signal_load_values_finish (MMIfaceModemSignal *self, *gsm = values_result->gsm ? g_object_ref (values_result->gsm) : NULL; *umts = values_result->umts ? g_object_ref (values_result->umts) : NULL; *lte = values_result->lte ? g_object_ref (values_result->lte) : NULL; + *nr5g = values_result->nr5g ? g_object_ref (values_result->nr5g) : NULL; signal_load_values_result_free (values_result); return TRUE; } @@ -8693,15 +8696,16 @@ signal_load_values_get_signal_info_ready (QmiClientNas *client, GAsyncResult *res, GTask *task) { - MMBroadbandModemQmi *self; - SignalLoadValuesContext *ctx; - gint8 rssi; - gint16 ecio; - QmiNasEvdoSinrLevel sinr_level; - gint32 io; - gint8 rsrq; - gint16 rsrp; - gint16 snr; + MMBroadbandModemQmi *self; + SignalLoadValuesContext *ctx; + gint8 rssi; + gint16 ecio; + QmiNasEvdoSinrLevel sinr_level; + gint32 io; + gint8 rsrq; + gint16 rsrp; + gint16 snr; + gint16 rsrq_5g; g_autoptr(QmiMessageNasGetSignalInfoOutput) output = NULL; self = g_task_get_source_object (task); @@ -8774,6 +8778,22 @@ signal_load_values_get_signal_info_ready (QmiClientNas *client, mm_signal_set_snr (ctx->values_result->lte, (0.1) * ((gdouble)snr)); } + /* 5G */ + if (qmi_message_nas_get_signal_info_output_get_5g_signal_strength (output, + &rsrp, + &snr, + NULL)) { + ctx->values_result->nr5g = mm_signal_new (); + mm_signal_set_rsrp (ctx->values_result->nr5g, (gdouble)rsrp); + mm_signal_set_snr (ctx->values_result->nr5g, (gdouble)snr); + } + + if (qmi_message_nas_get_signal_info_output_get_5g_signal_strength_extended (output, + &rsrq_5g, + NULL)) { + mm_signal_set_rsrq (ctx->values_result->nr5g, (gdouble)rsrq_5g); + } + /* Keep on */ ctx->step++; signal_load_values_context_step (task); diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 6977fe33..f3b19402 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -9981,6 +9981,7 @@ modem_signal_load_values_finish (MMIfaceModemSignal *self, MMSignal **gsm, MMSignal **umts, MMSignal **lte, + MMSignal **nr5g, GError **error) { const gchar *response; @@ -9994,6 +9995,9 @@ modem_signal_load_values_finish (MMIfaceModemSignal *self, *cdma = NULL; if (evdo) *evdo = NULL; + if (nr5g) + *nr5g = NULL; + return TRUE; } diff --git a/src/mm-iface-modem-signal.c b/src/mm-iface-modem-signal.c index 03e4ce1f..447b7cf2 100644 --- a/src/mm-iface-modem-signal.c +++ b/src/mm-iface-modem-signal.c @@ -68,6 +68,7 @@ clear_values (MMIfaceModemSignal *self) mm_gdbus_modem_signal_set_gsm (skeleton, NULL); mm_gdbus_modem_signal_set_umts (skeleton, NULL); mm_gdbus_modem_signal_set_lte (skeleton, NULL); + mm_gdbus_modem_signal_set_nr5g (skeleton, NULL); g_object_unref (skeleton); } @@ -82,6 +83,7 @@ load_values_ready (MMIfaceModemSignal *self, MMSignal *gsm = NULL; MMSignal *umts = NULL; MMSignal *lte = NULL; + MMSignal *nr5g = NULL; MmGdbusModemSignal *skeleton; if (!MM_IFACE_MODEM_SIGNAL_GET_INTERFACE (self)->load_values_finish ( @@ -92,6 +94,7 @@ load_values_ready (MMIfaceModemSignal *self, &gsm, &umts, <e, + &nr5g, &error)) { mm_obj_warn (self, "couldn't load extended signal information: %s", error->message); g_error_free (error); @@ -147,6 +150,15 @@ load_values_ready (MMIfaceModemSignal *self, } else mm_gdbus_modem_signal_set_lte (skeleton, NULL); + if (nr5g) { + dictionary = mm_signal_get_dictionary (nr5g); + mm_gdbus_modem_signal_set_nr5g (skeleton, dictionary); + g_variant_unref (dictionary); + g_object_unref (nr5g); + } else + mm_gdbus_modem_signal_set_nr5g (skeleton, NULL); + + /* Flush right away */ g_dbus_interface_skeleton_flush (G_DBUS_INTERFACE_SKELETON (skeleton)); diff --git a/src/mm-iface-modem-signal.h b/src/mm-iface-modem-signal.h index 1d49e5f3..15874b3f 100644 --- a/src/mm-iface-modem-signal.h +++ b/src/mm-iface-modem-signal.h @@ -54,6 +54,7 @@ struct _MMIfaceModemSignal { MMSignal **gsm, MMSignal **umts, MMSignal **lte, + MMSignal **nr5g, GError **error); }; |