api,bearer: new 'ProfileId' property

To report which is the currently active profile with this bearer, if
known. If the modem doesn't support profiles, or if the bearer is
disconnected, -1 (MM_3GPP_PROFILE_ID_UNKNOWN) will be reported.

It is guaranteed that no two connected bearers will have the same
ProfileId property value.
This commit is contained in:
Aleksander Morgado
2021-04-03 21:58:25 +02:00
parent 2d43ea48e1
commit 9fd5aced67
7 changed files with 49 additions and 0 deletions

View File

@@ -137,11 +137,16 @@ print_bearer_info (MMBearer *bearer)
MMBearerIpConfig *ipv6_config;
MMBearerProperties *properties;
MMBearerStats *stats;
gint profile_id;
gchar *profile_id_str;
ipv4_config = mm_bearer_get_ipv4_config (bearer);
ipv6_config = mm_bearer_get_ipv6_config (bearer);
properties = mm_bearer_get_properties (bearer);
stats = mm_bearer_get_stats (bearer);
profile_id = mm_bearer_get_profile_id (bearer);
profile_id_str = (profile_id != MM_3GPP_PROFILE_ID_UNKNOWN) ? g_strdup_printf ("%d", profile_id) : NULL;
mmcli_output_string (MMC_F_BEARER_GENERAL_DBUS_PATH, mm_bearer_get_path (bearer));
mmcli_output_string (MMC_F_BEARER_GENERAL_TYPE, mm_bearer_type_get_string (mm_bearer_get_bearer_type (bearer)));
@@ -151,6 +156,7 @@ print_bearer_info (MMBearer *bearer)
mmcli_output_string (MMC_F_BEARER_STATUS_MULTIPLEXED, mm_bearer_get_multiplexed (bearer) ? "yes" : "no");
mmcli_output_string (MMC_F_BEARER_STATUS_INTERFACE, mm_bearer_get_interface (bearer));
mmcli_output_string_take (MMC_F_BEARER_STATUS_IP_TIMEOUT, g_strdup_printf ("%u", mm_bearer_get_ip_timeout (bearer)));
mmcli_output_string_take (MMC_F_BEARER_STATUS_PROFILE_ID, profile_id_str);
/* Properties */
{

View File

@@ -214,6 +214,7 @@ static FieldInfo field_infos[] = {
[MMC_F_BEARER_STATUS_MULTIPLEXED] = { "bearer.status.multiplexed", "multiplexed", MMC_S_BEARER_STATUS, },
[MMC_F_BEARER_STATUS_INTERFACE] = { "bearer.status.interface", "interface", MMC_S_BEARER_STATUS, },
[MMC_F_BEARER_STATUS_IP_TIMEOUT] = { "bearer.status.ip-timeout", "ip timeout", MMC_S_BEARER_STATUS, },
[MMC_F_BEARER_STATUS_PROFILE_ID] = { "bearer.status.profile-id", "profile id", MMC_S_BEARER_STATUS, },
[MMC_F_BEARER_PROPERTIES_APN] = { "bearer.properties.apn", "apn", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_APN_TYPE] = { "bearer.properties.apn-type", "apn type", MMC_S_BEARER_PROPERTIES, },
[MMC_F_BEARER_PROPERTIES_ROAMING] = { "bearer.properties.roaming", "roaming", MMC_S_BEARER_PROPERTIES, },

View File

@@ -231,6 +231,7 @@ typedef enum {
MMC_F_BEARER_STATUS_MULTIPLEXED,
MMC_F_BEARER_STATUS_INTERFACE,
MMC_F_BEARER_STATUS_IP_TIMEOUT,
MMC_F_BEARER_STATUS_PROFILE_ID,
/* Bearer properties section */
MMC_F_BEARER_PROPERTIES_APN,
MMC_F_BEARER_PROPERTIES_APN_TYPE,

View File

@@ -1082,6 +1082,7 @@ mm_bearer_get_suspended
mm_bearer_get_multiplexed
mm_bearer_get_ip_timeout
mm_bearer_get_bearer_type
mm_bearer_get_profile_id
mm_bearer_peek_ipv4_config
mm_bearer_get_ipv4_config
mm_bearer_peek_ipv6_config
@@ -1837,6 +1838,7 @@ mm_gdbus_bearer_get_connected
mm_gdbus_bearer_get_suspended
mm_gdbus_bearer_get_multiplexed
mm_gdbus_bearer_get_bearer_type
mm_gdbus_bearer_get_profile_id
mm_gdbus_bearer_get_stats
mm_gdbus_bearer_dup_stats
<SUBSECTION Methods>
@@ -1856,6 +1858,7 @@ mm_gdbus_bearer_set_ip_timeout
mm_gdbus_bearer_set_properties
mm_gdbus_bearer_set_suspended
mm_gdbus_bearer_set_bearer_type
mm_gdbus_bearer_set_profile_id
mm_gdbus_bearer_set_stats
mm_gdbus_bearer_set_multiplexed
mm_gdbus_bearer_override_properties

View File

@@ -360,6 +360,20 @@
-->
<property name="BearerType" type="u" access="read" />
<!--
ProfileId:
The profile ID this bearer object is associated with, only applicable if
the modem supports profile management operations, and if the bearer is
connected.
If the bearer is disconnected, or if profile management operations are
not supported, -1 will be reported.
Since: 1.18
-->
<property name="ProfileId" type="i" access="read" />
<!--
Properties:

View File

@@ -264,6 +264,28 @@ mm_bearer_get_bearer_type (MMBearer *self)
/*****************************************************************************/
/**
* mm_bearer_get_profile_id:
* @self: A #MMBearer.
*
* Gets profile ID associated to the bearer connection, if known.
*
* If the bearer is disconnected or the modem doesn't support profile management
* features, %MM_3GPP_PROFILE_ID_UNKNOWN.
*
* Returns: a profile id.
*
* Since: 1.18
*/
gint
mm_bearer_get_profile_id (MMBearer *self)
{
g_return_val_if_fail (MM_IS_BEARER (self), MM_3GPP_PROFILE_ID_UNKNOWN);
return mm_gdbus_bearer_get_profile_id (MM_GDBUS_BEARER (self));
}
/*****************************************************************************/
static void
ipv4_config_updated (MMBearer *self,
GParamSpec *pspec)

View File

@@ -84,6 +84,8 @@ guint mm_bearer_get_ip_timeout (MMBearer *self);
MMBearerType mm_bearer_get_bearer_type (MMBearer *self);
gint mm_bearer_get_profile_id (MMBearer *self);
void mm_bearer_connect (MMBearer *self,
GCancellable *cancellable,
GAsyncReadyCallback callback,