diff options
-rw-r--r-- | cli/mmcli-modem-signal.c | 4 | ||||
-rw-r--r-- | docs/reference/libmm-glib/libmm-glib-sections.txt | 2 | ||||
-rw-r--r-- | introspection/org.freedesktop.ModemManager1.Modem.Signal.xml | 8 | ||||
-rw-r--r-- | libmm-glib/mm-signal.c | 38 | ||||
-rw-r--r-- | libmm-glib/mm-signal.h | 2 |
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); |