aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib
diff options
context:
space:
mode:
authorSom_SP <somashekhar.puttagangaiah@intel.com>2021-10-20 21:59:45 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-10-20 22:07:24 +0200
commit9537261651a4f44fb0d0817bb902b225abb5e5a5 (patch)
treeb7b60924dbb2da17298f3b1de9cd41e9c090eb6b /libmm-glib
parent296b5185f51b5444468059919c3c5cf7ca14247f (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.c65
-rw-r--r--libmm-glib/mm-signal.h39
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