summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSom_SP <somashekhar.puttagangaiah@intel.com>2021-10-21 11:06:24 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-11-03 12:41:51 +0100
commit511859ef0afe049870581e3a55365bc3d3866566 (patch)
treea27b16356a7e24239224f917e2511e13864a8e64
parentd71a0bcf8eba9d7c6ec7949004c806be4f3f3f0d (diff)
api,bearer: add 'uplink-speed' and 'downlink-speed' stats
These values show the rates that have been negotiated with the network during the PS domain attach. These are not the current ongoing data rates associated to the network usage at some given moment. Includes updates by Aleksander Morgado to fix coding style issues and add missing documentation items.
-rw-r--r--cli/mmcli-bearer.c10
-rw-r--r--cli/mmcli-output.c2
-rw-r--r--cli/mmcli-output.h2
-rw-r--r--docs/reference/libmm-glib/libmm-glib-sections.txt4
-rw-r--r--introspection/org.freedesktop.ModemManager1.Bearer.xml14
-rw-r--r--libmm-glib/mm-bearer-stats.c89
-rw-r--r--libmm-glib/mm-bearer-stats.h10
7 files changed, 126 insertions, 5 deletions
diff --git a/cli/mmcli-bearer.c b/cli/mmcli-bearer.c
index e9718e40..db06dbfa 100644
--- a/cli/mmcli-bearer.c
+++ b/cli/mmcli-bearer.c
@@ -279,6 +279,8 @@ print_bearer_info (MMBearer *bearer)
gchar *total_duration = NULL;
gchar *total_bytes_rx = NULL;
gchar *total_bytes_tx = NULL;
+ gchar *uplink_speed = NULL;
+ gchar *downlink_speed = NULL;
if (stats) {
guint64 val;
@@ -309,6 +311,12 @@ print_bearer_info (MMBearer *bearer)
val = mm_bearer_stats_get_total_tx_bytes (stats);
if (val)
total_bytes_tx = g_strdup_printf ("%" G_GUINT64_FORMAT, val);
+ val = mm_bearer_stats_get_uplink_speed (stats);
+ if (val)
+ uplink_speed = g_strdup_printf ("%" G_GUINT64_FORMAT, val);
+ val = mm_bearer_stats_get_downlink_speed (stats);
+ if (val)
+ downlink_speed = g_strdup_printf ("%" G_GUINT64_FORMAT, val);
}
if (start_date)
@@ -321,6 +329,8 @@ print_bearer_info (MMBearer *bearer)
mmcli_output_string_take (MMC_F_BEARER_STATS_TOTAL_DURATION, total_duration);
mmcli_output_string_take (MMC_F_BEARER_STATS_TOTAL_BYTES_RX, total_bytes_rx);
mmcli_output_string_take (MMC_F_BEARER_STATS_TOTAL_BYTES_TX, total_bytes_tx);
+ mmcli_output_string_take (MMC_F_BEARER_STATS_UPLINK_SPEED, uplink_speed);
+ mmcli_output_string_take (MMC_F_BEARER_STATS_DOWNLINK_SPEED, downlink_speed);
}
mmcli_output_dump ();
diff --git a/cli/mmcli-output.c b/cli/mmcli-output.c
index bacf3949..712018b6 100644
--- a/cli/mmcli-output.c
+++ b/cli/mmcli-output.c
@@ -251,6 +251,8 @@ static FieldInfo field_infos[] = {
[MMC_F_BEARER_IPV6_CONFIG_MTU] = { "bearer.ipv6-config.mtu", "mtu", MMC_S_BEARER_IPV6_CONFIG, },
[MMC_F_BEARER_STATS_START_DATE] = { "bearer.stats.start-date", "start date", MMC_S_BEARER_STATS, },
[MMC_F_BEARER_STATS_DURATION] = { "bearer.stats.duration", "duration", MMC_S_BEARER_STATS, },
+ [MMC_F_BEARER_STATS_UPLINK_SPEED] = { "bearer.stats.uplink-speed", "uplink-speed", MMC_S_BEARER_STATS, },
+ [MMC_F_BEARER_STATS_DOWNLINK_SPEED] = { "bearer.stats.downlink-speed", "downlink-speed", MMC_S_BEARER_STATS, },
[MMC_F_BEARER_STATS_BYTES_RX] = { "bearer.stats.bytes-rx", "bytes rx", MMC_S_BEARER_STATS, },
[MMC_F_BEARER_STATS_BYTES_TX] = { "bearer.stats.bytes-tx", "bytes tx", MMC_S_BEARER_STATS, },
[MMC_F_BEARER_STATS_ATTEMPTS] = { "bearer.stats.attempts", "attempts", MMC_S_BEARER_STATS, },
diff --git a/cli/mmcli-output.h b/cli/mmcli-output.h
index 678b2b61..cc34d536 100644
--- a/cli/mmcli-output.h
+++ b/cli/mmcli-output.h
@@ -269,6 +269,8 @@ typedef enum {
MMC_F_BEARER_IPV6_CONFIG_MTU,
MMC_F_BEARER_STATS_START_DATE,
MMC_F_BEARER_STATS_DURATION,
+ MMC_F_BEARER_STATS_UPLINK_SPEED,
+ MMC_F_BEARER_STATS_DOWNLINK_SPEED,
MMC_F_BEARER_STATS_BYTES_RX,
MMC_F_BEARER_STATS_BYTES_TX,
MMC_F_BEARER_STATS_ATTEMPTS,
diff --git a/docs/reference/libmm-glib/libmm-glib-sections.txt b/docs/reference/libmm-glib/libmm-glib-sections.txt
index f3450893..b0cd0bb3 100644
--- a/docs/reference/libmm-glib/libmm-glib-sections.txt
+++ b/docs/reference/libmm-glib/libmm-glib-sections.txt
@@ -1231,6 +1231,8 @@ mm_bearer_stats_get_failed_attempts
mm_bearer_stats_get_total_duration
mm_bearer_stats_get_total_rx_bytes
mm_bearer_stats_get_total_tx_bytes
+mm_bearer_stats_get_uplink_speed
+mm_bearer_stats_get_downlink_speed
<SUBSECTION Private>
mm_bearer_stats_get_dictionary
mm_bearer_stats_new
@@ -1243,6 +1245,8 @@ mm_bearer_stats_set_failed_attempts
mm_bearer_stats_set_total_duration
mm_bearer_stats_set_total_rx_bytes
mm_bearer_stats_set_total_tx_bytes
+mm_bearer_stats_set_uplink_speed
+mm_bearer_stats_set_downlink_speed
<SUBSECTION Standard>
MMBearerStatsClass
MMBearerStatsPrivate
diff --git a/introspection/org.freedesktop.ModemManager1.Bearer.xml b/introspection/org.freedesktop.ModemManager1.Bearer.xml
index a21f38c8..fa8dcdb0 100644
--- a/introspection/org.freedesktop.ModemManager1.Bearer.xml
+++ b/introspection/org.freedesktop.ModemManager1.Bearer.xml
@@ -358,6 +358,20 @@
<literal>"u"</literal>). Since 1.14.
</listitem>
</varlistentry>
+ <varlistentry><term><literal>"uplink-speed"</literal></term>
+ <listitem>
+ Uplink bit rate negotiated with network, in bits per second, given
+ as an unsigned 64-bit integer value (signature <literal>"t"</literal>).
+ Since 1.20.
+ </listitem>
+ </varlistentry>
+ <varlistentry><term><literal>"downlink-speed"</literal></term>
+ <listitem>
+ Downlink bit rate negotiated with network, in bits per second, given
+ as an unsigned 64-bit integer value (signature <literal>"t"</literal>).
+ Since 1.20.
+ </listitem>
+ </varlistentry>
</variablelist>
Since: 1.6
diff --git a/libmm-glib/mm-bearer-stats.c b/libmm-glib/mm-bearer-stats.c
index f7e339c6..61b24de3 100644
--- a/libmm-glib/mm-bearer-stats.c
+++ b/libmm-glib/mm-bearer-stats.c
@@ -10,8 +10,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
*
- * Copyright (C) 2015 Azimut Electronics
- * Copyright (C) 2015-2020 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2015-2021 Azimut Electronics
+ * Copyright (C) 2015-2021 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2021 Intel Corporation
*/
#include <string.h>
@@ -42,6 +43,8 @@ G_DEFINE_TYPE (MMBearerStats, mm_bearer_stats, G_TYPE_OBJECT)
#define PROPERTY_TOTAL_DURATION "total-duration"
#define PROPERTY_TOTAL_RX_BYTES "total-rx-bytes"
#define PROPERTY_TOTAL_TX_BYTES "total-tx-bytes"
+#define PROPERTY_UPLINK_SPEED "uplink-speed"
+#define PROPERTY_DOWNLINK_SPEED "downlink-speed"
struct _MMBearerStatsPrivate {
guint duration;
@@ -53,6 +56,8 @@ struct _MMBearerStatsPrivate {
guint total_duration;
guint64 total_rx_bytes;
guint64 total_tx_bytes;
+ guint64 uplink_speed;
+ guint64 downlink_speed;
};
/*****************************************************************************/
@@ -349,6 +354,70 @@ mm_bearer_stats_set_total_tx_bytes (MMBearerStats *self,
/*****************************************************************************/
/**
+ * mm_bearer_stats_get_uplink_speed:
+ * @self: a #MMBearerStats.
+ *
+ * Gets the speed of the uplink, in bits per second.
+ *
+ * Returns: a #guint64.
+ *
+ * Since: 1.20
+ */
+guint64
+mm_bearer_stats_get_uplink_speed (MMBearerStats *self)
+{
+ g_return_val_if_fail (MM_IS_BEARER_STATS (self), 0);
+
+ return self->priv->uplink_speed;
+}
+
+/**
+ * mm_bearer_stats_set_uplink_speed: (skip)
+ */
+void
+mm_bearer_stats_set_uplink_speed (MMBearerStats *self,
+ guint64 speed)
+{
+ g_return_if_fail (MM_IS_BEARER_STATS (self));
+
+ self->priv->uplink_speed = speed;
+}
+
+/*****************************************************************************/
+
+/**
+ * mm_bearer_stats_get_downlink_speed:
+ * @self: a #MMBearerStats.
+ *
+ * Gets the speed of the downlink, in bits per second.
+ *
+ * Returns: a #guint64.
+ *
+ * Since: 1.20
+ */
+guint64
+mm_bearer_stats_get_downlink_speed (MMBearerStats *self)
+{
+ g_return_val_if_fail (MM_IS_BEARER_STATS (self), 0);
+
+ return self->priv->downlink_speed;
+}
+
+/**
+ * mm_bearer_stats_set_downlink_speed: (skip)
+ */
+void
+mm_bearer_stats_set_downlink_speed (MMBearerStats *self,
+ guint64 speed)
+{
+ g_return_if_fail (MM_IS_BEARER_STATS (self));
+
+ self->priv->downlink_speed = speed;
+}
+
+/*****************************************************************************/
+
+/**
* mm_bearer_stats_get_dictionary: (skip)
*/
GVariant *
@@ -397,6 +466,14 @@ mm_bearer_stats_get_dictionary (MMBearerStats *self)
"{sv}",
PROPERTY_TOTAL_TX_BYTES,
g_variant_new_uint64 (self->priv->total_tx_bytes));
+ g_variant_builder_add (&builder,
+ "{sv}",
+ PROPERTY_UPLINK_SPEED,
+ g_variant_new_uint64 (self->priv->uplink_speed));
+ g_variant_builder_add (&builder,
+ "{sv}",
+ PROPERTY_DOWNLINK_SPEED,
+ g_variant_new_uint64 (self->priv->downlink_speed));
return g_variant_builder_end (&builder);
}
@@ -466,6 +543,14 @@ mm_bearer_stats_new_from_dictionary (GVariant *dictionary,
mm_bearer_stats_set_total_tx_bytes (
self,
g_variant_get_uint64 (value));
+ } else if (g_str_equal (key, PROPERTY_UPLINK_SPEED)) {
+ mm_bearer_stats_set_uplink_speed (
+ self,
+ g_variant_get_uint64 (value));
+ } else if (g_str_equal (key, PROPERTY_DOWNLINK_SPEED)) {
+ mm_bearer_stats_set_downlink_speed (
+ self,
+ g_variant_get_uint64 (value));
}
g_free (key);
diff --git a/libmm-glib/mm-bearer-stats.h b/libmm-glib/mm-bearer-stats.h
index b993945c..960dc359 100644
--- a/libmm-glib/mm-bearer-stats.h
+++ b/libmm-glib/mm-bearer-stats.h
@@ -10,9 +10,9 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
*
- * Copyright (C) 2015 Azimut Electronics
- *
- * Author: Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2015-2021 Azimut Electronics
+ * Copyright (C) 2015-2021 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2021 Intel Corporation
*/
#ifndef MM_BEARER_STATS_H
@@ -67,6 +67,8 @@ guint mm_bearer_stats_get_failed_attempts (MMBearerStats *self);
guint mm_bearer_stats_get_total_duration (MMBearerStats *self);
guint64 mm_bearer_stats_get_total_rx_bytes (MMBearerStats *self);
guint64 mm_bearer_stats_get_total_tx_bytes (MMBearerStats *self);
+guint64 mm_bearer_stats_get_uplink_speed (MMBearerStats *self);
+guint64 mm_bearer_stats_get_downlink_speed (MMBearerStats *self);
/*****************************************************************************/
/* ModemManager/libmm-glib/mmcli specific methods */
@@ -88,6 +90,8 @@ void mm_bearer_stats_set_failed_attempts (MMBearerStats *self, guint fail
void mm_bearer_stats_set_total_duration (MMBearerStats *self, guint duration);
void mm_bearer_stats_set_total_rx_bytes (MMBearerStats *self, guint64 rx_bytes);
void mm_bearer_stats_set_total_tx_bytes (MMBearerStats *self, guint64 tx_bytes);
+void mm_bearer_stats_set_uplink_speed (MMBearerStats *self, guint64 speed);
+void mm_bearer_stats_set_downlink_speed (MMBearerStats *self, guint64 speed);
GVariant *mm_bearer_stats_get_dictionary (MMBearerStats *self);