diff options
author | Som_SP <somashekhar.puttagangaiah@intel.com> | 2021-10-20 21:59:45 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-20 22:07:24 +0200 |
commit | 9537261651a4f44fb0d0817bb902b225abb5e5a5 (patch) | |
tree | b7b60924dbb2da17298f3b1de9cd41e9c090eb6b /libmm-glib | |
parent | 296b5185f51b5444468059919c3c5cf7ca14247f (diff) |
libmm-glib,mmcli: add support for 'error-rate' measurements in signal info
Includes updates by Aleksander Morgado to fix mostly coding style issues.
Diffstat (limited to 'libmm-glib')
-rw-r--r-- | libmm-glib/mm-signal.c | 65 | ||||
-rw-r--r-- | libmm-glib/mm-signal.h | 39 |
2 files changed, 77 insertions, 27 deletions
diff --git a/libmm-glib/mm-signal.c b/libmm-glib/mm-signal.c index 64127cd0..fbe44f97 100644 --- a/libmm-glib/mm-signal.c +++ b/libmm-glib/mm-signal.c @@ -10,7 +10,8 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details: * - * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org> + * Copyright (C) 2013-2021 Aleksander Morgado <aleksander@aleksander.es> + * Copyright (C) 2021 Intel Corporation */ #include <string.h> @@ -31,14 +32,15 @@ G_DEFINE_TYPE (MMSignal, mm_signal, G_TYPE_OBJECT) -#define PROPERTY_RSSI "rssi" -#define PROPERTY_RSCP "rscp" -#define PROPERTY_ECIO "ecio" -#define PROPERTY_SINR "sinr" -#define PROPERTY_IO "io" -#define PROPERTY_RSRQ "rsrq" -#define PROPERTY_RSRP "rsrp" -#define PROPERTY_SNR "snr" +#define PROPERTY_RSSI "rssi" +#define PROPERTY_RSCP "rscp" +#define PROPERTY_ECIO "ecio" +#define PROPERTY_SINR "sinr" +#define PROPERTY_IO "io" +#define PROPERTY_RSRQ "rsrq" +#define PROPERTY_RSRP "rsrp" +#define PROPERTY_SNR "snr" +#define PROPERTY_ERROR_RATE "error-rate" struct _MMSignalPrivate { gdouble rssi; @@ -49,6 +51,7 @@ struct _MMSignalPrivate { gdouble rsrq; gdouble rsrp; gdouble snr; + gdouble error_rate; }; /*****************************************************************************/ @@ -322,6 +325,41 @@ mm_signal_set_snr (MMSignal *self, /*****************************************************************************/ /** + * mm_signal_get_error_rate: + * @self: a #MMSignal. + * + * Gets the channel error rate (BER, BLER,... depends on the RAT), in + * percentage. + * + * Applicable to all RAT. + * + * Returns: the error rate, or %MM_SIGNAL_UNKNOWN if unknown. + * + * Since: 1.20 + */ +gdouble +mm_signal_get_error_rate (MMSignal *self) +{ + g_return_val_if_fail (MM_IS_SIGNAL (self), MM_SIGNAL_UNKNOWN); + + return self->priv->error_rate; +} + +/** + * mm_signal_set_error_rate: (skip) + */ +void +mm_signal_set_error_rate (MMSignal *self, + gdouble value) +{ + g_return_if_fail (MM_IS_SIGNAL (self)); + + self->priv->error_rate = value; +} + +/*****************************************************************************/ + +/** * mm_signal_get_dictionary: (skip) */ GVariant * @@ -385,6 +423,12 @@ mm_signal_get_dictionary (MMSignal *self) PROPERTY_SNR, g_variant_new_double (self->priv->snr)); + if (self->priv->error_rate != MM_SIGNAL_UNKNOWN) + g_variant_builder_add (&builder, + "{sv}", + PROPERTY_ERROR_RATE, + g_variant_new_double (self->priv->error_rate)); + return g_variant_ref_sink (g_variant_builder_end (&builder)); } @@ -412,6 +456,8 @@ consume_variant (MMSignal *self, self->priv->rsrq = g_variant_get_double (value); else if (g_str_equal (key, PROPERTY_SNR)) self->priv->snr = g_variant_get_double (value); + else if (g_str_equal (key, PROPERTY_ERROR_RATE)) + self->priv->error_rate = g_variant_get_double (value); else { /* Set error */ g_set_error (error, @@ -499,6 +545,7 @@ mm_signal_init (MMSignal *self) self->priv->rsrq = MM_SIGNAL_UNKNOWN; self->priv->rsrp = MM_SIGNAL_UNKNOWN; self->priv->snr = MM_SIGNAL_UNKNOWN; + self->priv->error_rate = MM_SIGNAL_UNKNOWN; } static void diff --git a/libmm-glib/mm-signal.h b/libmm-glib/mm-signal.h index e970e729..b0950a79 100644 --- a/libmm-glib/mm-signal.h +++ b/libmm-glib/mm-signal.h @@ -10,7 +10,8 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details: * - * Copyright (C) 2013 Aleksander Morgado <aleksander@gnu.org> + * Copyright (C) 2013-2021 Aleksander Morgado <aleksander@aleksander.es> + * Copyright (C) 2021 Intel Corporation */ #ifndef MM_SIGNAL_H @@ -28,7 +29,7 @@ G_BEGIN_DECLS /** * MM_SIGNAL_UNKNOWN: * - * Identifier for an unknown signal value. + * Identifier for an unknown signal or error rate value. * * Since: 1.2 */ @@ -65,14 +66,15 @@ struct _MMSignalClass { GType mm_signal_get_type (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (MMSignal, g_object_unref) -gdouble mm_signal_get_rssi (MMSignal *self); -gdouble mm_signal_get_rscp (MMSignal *self); -gdouble mm_signal_get_ecio (MMSignal *self); -gdouble mm_signal_get_sinr (MMSignal *self); -gdouble mm_signal_get_io (MMSignal *self); -gdouble mm_signal_get_rsrq (MMSignal *self); -gdouble mm_signal_get_rsrp (MMSignal *self); -gdouble mm_signal_get_snr (MMSignal *self); +gdouble mm_signal_get_rssi (MMSignal *self); +gdouble mm_signal_get_rscp (MMSignal *self); +gdouble mm_signal_get_ecio (MMSignal *self); +gdouble mm_signal_get_sinr (MMSignal *self); +gdouble mm_signal_get_io (MMSignal *self); +gdouble mm_signal_get_rsrq (MMSignal *self); +gdouble mm_signal_get_rsrp (MMSignal *self); +gdouble mm_signal_get_snr (MMSignal *self); +gdouble mm_signal_get_error_rate (MMSignal *self); /*****************************************************************************/ /* ModemManager/libmm-glib/mmcli specific methods */ @@ -87,14 +89,15 @@ MMSignal *mm_signal_new (void); MMSignal *mm_signal_new_from_dictionary (GVariant *dictionary, GError **error); -void mm_signal_set_rssi (MMSignal *self, gdouble value); -void mm_signal_set_rscp (MMSignal *self, gdouble value); -void mm_signal_set_ecio (MMSignal *self, gdouble value); -void mm_signal_set_sinr (MMSignal *self, gdouble value); -void mm_signal_set_io (MMSignal *self, gdouble value); -void mm_signal_set_rsrq (MMSignal *self, gdouble value); -void mm_signal_set_rsrp (MMSignal *self, gdouble value); -void mm_signal_set_snr (MMSignal *self, gdouble value); +void mm_signal_set_rssi (MMSignal *self, gdouble value); +void mm_signal_set_rscp (MMSignal *self, gdouble value); +void mm_signal_set_ecio (MMSignal *self, gdouble value); +void mm_signal_set_sinr (MMSignal *self, gdouble value); +void mm_signal_set_io (MMSignal *self, gdouble value); +void mm_signal_set_rsrq (MMSignal *self, gdouble value); +void mm_signal_set_rsrp (MMSignal *self, gdouble value); +void mm_signal_set_snr (MMSignal *self, gdouble value); +void mm_signal_set_error_rate (MMSignal *self, gdouble value); #endif |