aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2016-08-10 08:00:24 +0200
committerAleksander Morgado <aleksander@aleksander.es>2016-10-12 13:24:08 +0200
commit9b3549e375af5d80fa9986cdbddfa51fe16dfe3e (patch)
tree1f621df70d68492f99c1ac4f42317f4710ab50d0
parent4c02fba819d492c75ad4f79914663b43d8972518 (diff)
api,signal: new RSCP item
-rw-r--r--cli/mmcli-modem-signal.c4
-rw-r--r--docs/reference/libmm-glib/libmm-glib-sections.txt2
-rw-r--r--introspection/org.freedesktop.ModemManager1.Modem.Signal.xml8
-rw-r--r--libmm-glib/mm-signal.c38
-rw-r--r--libmm-glib/mm-signal.h2
5 files changed, 53 insertions, 1 deletions
diff --git a/cli/mmcli-modem-signal.c b/cli/mmcli-modem-signal.c
index 009218fb..45478fa1 100644
--- a/cli/mmcli-modem-signal.c
+++ b/cli/mmcli-modem-signal.c
@@ -178,8 +178,10 @@ print_signal_info (void)
if (signal)
g_print (" -------------------------\n"
" UMTS | RSSI: '%.2lf' dBm\n"
- " | EcIo: '%.2lf' dBm\n",
+ " | RSCP: '%.2lf' dBm\n"
+ " | EcIo: '%.2lf' dB\n",
mm_signal_get_rssi (signal),
+ mm_signal_get_rscp (signal),
mm_signal_get_ecio (signal));
/* LTE */
diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt
index 250ae712..46f2d923 100644
--- a/docs/reference/libmm-glib/libmm-glib-sections.txt
+++ b/docs/reference/libmm-glib/libmm-glib-sections.txt
@@ -894,6 +894,7 @@ MMSignal
MM_SIGNAL_UNKNOWN
<SUBSECTION Getters>
mm_signal_get_rssi
+mm_signal_get_rscp
mm_signal_get_ecio
mm_signal_get_sinr
mm_signal_get_io
@@ -905,6 +906,7 @@ mm_signal_new
mm_signal_new_from_dictionary
mm_signal_get_dictionary
mm_signal_set_rssi
+mm_signal_set_rscp
mm_signal_set_ecio
mm_signal_set_sinr
mm_signal_set_io
diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml b/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml
index 29f88311..c2b36ffd 100644
--- a/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml
+++ b/introspection/org.freedesktop.ModemManager1.Modem.Signal.xml
@@ -149,6 +149,14 @@
given as a floating point value (signature <literal>"d"</literal>).
</para>
</listitem>
+ </varlistentry>
+ <varlistentry><term><literal>"rscp"</literal></term>
+ <listitem>
+ <para>
+ The UMTS RSCP (Received Signal Code Power), in dBm, given as a
+ floating point value (signature <literal>"d"</literal>).
+ </para>
+ </listitem>
</varlistentry>
<varlistentry><term><literal>"ecio"</literal></term>
<listitem>
diff --git a/libmm-glib/mm-signal.c b/libmm-glib/mm-signal.c
index 54912a26..1d34d944 100644
--- a/libmm-glib/mm-signal.c
+++ b/libmm-glib/mm-signal.c
@@ -32,6 +32,7 @@
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"
@@ -41,6 +42,7 @@ G_DEFINE_TYPE (MMSignal, mm_signal, G_TYPE_OBJECT)
struct _MMSignalPrivate {
gdouble rssi;
+ gdouble rscp;
gdouble ecio;
gdouble sinr;
gdouble io;
@@ -79,6 +81,33 @@ mm_signal_set_rssi (MMSignal *self,
/*****************************************************************************/
/**
+ * mm_signal_get_rscp:
+ * @self: a #MMSignal.
+ *
+ * Gets the RSCP (Received Signal Code Power), in dBm.
+ *
+ * Returns: the RSCP, or %MM_SIGNAL_UNKNOWN if unknown.
+ */
+gdouble
+mm_signal_get_rscp (MMSignal *self)
+{
+ g_return_val_if_fail (MM_IS_SIGNAL (self), MM_SIGNAL_UNKNOWN);
+
+ return self->priv->rscp;
+}
+
+void
+mm_signal_set_rscp (MMSignal *self,
+ gdouble value)
+{
+ g_return_if_fail (MM_IS_SIGNAL (self));
+
+ self->priv->rscp = value;
+}
+
+/*****************************************************************************/
+
+/**
* mm_signal_get_ecio:
* @self: a #MMSignal.
*
@@ -279,6 +308,12 @@ mm_signal_get_dictionary (MMSignal *self)
PROPERTY_RSSI,
g_variant_new_double (self->priv->rssi));
+ if (self->priv->rscp != MM_SIGNAL_UNKNOWN)
+ g_variant_builder_add (&builder,
+ "{sv}",
+ PROPERTY_RSCP,
+ g_variant_new_double (self->priv->rscp));
+
if (self->priv->ecio != MM_SIGNAL_UNKNOWN)
g_variant_builder_add (&builder,
"{sv}",
@@ -328,6 +363,8 @@ consume_variant (MMSignal *self,
{
if (g_str_equal (key, PROPERTY_RSSI))
self->priv->rssi = g_variant_get_double (value);
+ else if (g_str_equal (key, PROPERTY_RSCP))
+ self->priv->rscp = g_variant_get_double (value);
else if (g_str_equal (key, PROPERTY_ECIO))
self->priv->ecio = g_variant_get_double (value);
else if (g_str_equal (key, PROPERTY_SINR))
@@ -424,6 +461,7 @@ mm_signal_init (MMSignal *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, MM_TYPE_SIGNAL, MMSignalPrivate);
self->priv->rssi = MM_SIGNAL_UNKNOWN;
+ self->priv->rscp = MM_SIGNAL_UNKNOWN;
self->priv->ecio = MM_SIGNAL_UNKNOWN;
self->priv->sinr = MM_SIGNAL_UNKNOWN;
self->priv->io = MM_SIGNAL_UNKNOWN;
diff --git a/libmm-glib/mm-signal.h b/libmm-glib/mm-signal.h
index 47391f0e..f7e8e61f 100644
--- a/libmm-glib/mm-signal.h
+++ b/libmm-glib/mm-signal.h
@@ -63,6 +63,7 @@ struct _MMSignalClass {
GType mm_signal_get_type (void);
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);
@@ -84,6 +85,7 @@ 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);