mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-09 11:48:06 +02:00
wifi: expose the last_seen property for a NMAccessPoint
https://mail.gnome.org/archives/networkmanager-list/2015-April/msg00053.html
This commit is contained in:
parent
1b62ff1d24
commit
cdb8a44a6e
6 changed files with 78 additions and 2 deletions
|
|
@ -30,6 +30,13 @@
|
||||||
<property name="Strength" type="y" access="read">
|
<property name="Strength" type="y" access="read">
|
||||||
<tp:docstring>The current signal quality of the access point, in percent.</tp:docstring>
|
<tp:docstring>The current signal quality of the access point, in percent.</tp:docstring>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="LastSeen" type="i" access="read">
|
||||||
|
<tp:docstring>
|
||||||
|
The timestamp (in CLOCK_BOOTTIME seconds) for the last time the access
|
||||||
|
point was found in scan results. A value of -1 means the access point
|
||||||
|
has never been found in scan results.
|
||||||
|
</tp:docstring>
|
||||||
|
</property>
|
||||||
|
|
||||||
<signal name="PropertiesChanged">
|
<signal name="PropertiesChanged">
|
||||||
<arg name="properties" type="a{sv}" tp:type="String_Variant_Map">
|
<arg name="properties" type="a{sv}" tp:type="String_Variant_Map">
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ global:
|
||||||
nm_access_point_get_flags;
|
nm_access_point_get_flags;
|
||||||
nm_access_point_get_frequency;
|
nm_access_point_get_frequency;
|
||||||
nm_access_point_get_hw_address;
|
nm_access_point_get_hw_address;
|
||||||
|
nm_access_point_get_last_seen;
|
||||||
nm_access_point_get_max_bitrate;
|
nm_access_point_get_max_bitrate;
|
||||||
nm_access_point_get_mode;
|
nm_access_point_get_mode;
|
||||||
nm_access_point_get_rsn_flags;
|
nm_access_point_get_rsn_flags;
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ typedef struct {
|
||||||
NM80211Mode mode;
|
NM80211Mode mode;
|
||||||
guint32 max_bitrate;
|
guint32 max_bitrate;
|
||||||
guint8 strength;
|
guint8 strength;
|
||||||
|
gint32 last_seen;
|
||||||
} NMAccessPointPrivate;
|
} NMAccessPointPrivate;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|
@ -67,6 +68,7 @@ enum {
|
||||||
PROP_MAX_BITRATE,
|
PROP_MAX_BITRATE,
|
||||||
PROP_STRENGTH,
|
PROP_STRENGTH,
|
||||||
PROP_BSSID,
|
PROP_BSSID,
|
||||||
|
PROP_LAST_SEEN,
|
||||||
|
|
||||||
LAST_PROP
|
LAST_PROP
|
||||||
};
|
};
|
||||||
|
|
@ -265,6 +267,27 @@ nm_access_point_get_strength (NMAccessPoint *ap)
|
||||||
return NM_ACCESS_POINT_GET_PRIVATE (ap)->strength;
|
return NM_ACCESS_POINT_GET_PRIVATE (ap)->strength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nm_access_point_get_last_seen:
|
||||||
|
* @ap: a #NMAccessPoint
|
||||||
|
*
|
||||||
|
* Returns the timestamp (in CLOCK_BOOTTIME seconds) for the last time the
|
||||||
|
* access point was found in scan results. A value of -1 means the access
|
||||||
|
* point has not been found in a scan.
|
||||||
|
*
|
||||||
|
* Returns: the last seen time in seconds
|
||||||
|
*
|
||||||
|
* Since: 1.0.6
|
||||||
|
**/
|
||||||
|
gint32
|
||||||
|
nm_access_point_get_last_seen (NMAccessPoint *ap)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), -1);
|
||||||
|
|
||||||
|
_nm_object_ensure_inited (NM_OBJECT (ap));
|
||||||
|
return NM_ACCESS_POINT_GET_PRIVATE (ap)->last_seen;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nm_access_point_connection_valid:
|
* nm_access_point_connection_valid:
|
||||||
* @ap: an #NMAccessPoint to validate @connection against
|
* @ap: an #NMAccessPoint to validate @connection against
|
||||||
|
|
@ -416,6 +439,7 @@ nm_access_point_filter_connections (NMAccessPoint *ap, const GSList *connections
|
||||||
static void
|
static void
|
||||||
nm_access_point_init (NMAccessPoint *ap)
|
nm_access_point_init (NMAccessPoint *ap)
|
||||||
{
|
{
|
||||||
|
NM_ACCESS_POINT_GET_PRIVATE (ap)->last_seen = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -482,6 +506,9 @@ get_property (GObject *object,
|
||||||
case PROP_STRENGTH:
|
case PROP_STRENGTH:
|
||||||
g_value_set_uchar (value, nm_access_point_get_strength (ap));
|
g_value_set_uchar (value, nm_access_point_get_strength (ap));
|
||||||
break;
|
break;
|
||||||
|
case PROP_LAST_SEEN:
|
||||||
|
g_value_set_int (value, nm_access_point_get_last_seen (ap));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
@ -512,6 +539,7 @@ register_properties (NMAccessPoint *ap)
|
||||||
{ NM_ACCESS_POINT_MODE, &priv->mode },
|
{ NM_ACCESS_POINT_MODE, &priv->mode },
|
||||||
{ NM_ACCESS_POINT_MAX_BITRATE, &priv->max_bitrate },
|
{ NM_ACCESS_POINT_MAX_BITRATE, &priv->max_bitrate },
|
||||||
{ NM_ACCESS_POINT_STRENGTH, &priv->strength },
|
{ NM_ACCESS_POINT_STRENGTH, &priv->strength },
|
||||||
|
{ NM_ACCESS_POINT_LAST_SEEN, &priv->last_seen },
|
||||||
{ NULL },
|
{ NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -671,4 +699,20 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
|
||||||
0, G_MAXUINT8, 0,
|
0, G_MAXUINT8, 0,
|
||||||
G_PARAM_READABLE |
|
G_PARAM_READABLE |
|
||||||
G_PARAM_STATIC_STRINGS));
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NMAccessPoint:last-seen:
|
||||||
|
*
|
||||||
|
* The timestamp (in CLOCK_BOOTTIME seconds) for the last time the
|
||||||
|
* access point was found in scan results. A value of -1 means the
|
||||||
|
* access point has not been found in a scan.
|
||||||
|
*
|
||||||
|
* Since: 1.0.6
|
||||||
|
**/
|
||||||
|
g_object_class_install_property
|
||||||
|
(object_class, PROP_LAST_SEEN,
|
||||||
|
g_param_spec_int (NM_ACCESS_POINT_LAST_SEEN, "", "",
|
||||||
|
-1, G_MAXINT, -1,
|
||||||
|
G_PARAM_READABLE |
|
||||||
|
G_PARAM_STATIC_STRINGS));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ G_BEGIN_DECLS
|
||||||
#define NM_ACCESS_POINT_MODE "mode"
|
#define NM_ACCESS_POINT_MODE "mode"
|
||||||
#define NM_ACCESS_POINT_MAX_BITRATE "max-bitrate"
|
#define NM_ACCESS_POINT_MAX_BITRATE "max-bitrate"
|
||||||
#define NM_ACCESS_POINT_STRENGTH "strength"
|
#define NM_ACCESS_POINT_STRENGTH "strength"
|
||||||
|
#define NM_ACCESS_POINT_LAST_SEEN "last-seen"
|
||||||
|
|
||||||
/* DEPRECATED */
|
/* DEPRECATED */
|
||||||
#define NM_ACCESS_POINT_HW_ADDRESS "hw-address"
|
#define NM_ACCESS_POINT_HW_ADDRESS "hw-address"
|
||||||
|
|
@ -80,6 +81,7 @@ guint32 nm_access_point_get_frequency (NMAccessPoint *ap);
|
||||||
NM80211Mode nm_access_point_get_mode (NMAccessPoint *ap);
|
NM80211Mode nm_access_point_get_mode (NMAccessPoint *ap);
|
||||||
guint32 nm_access_point_get_max_bitrate (NMAccessPoint *ap);
|
guint32 nm_access_point_get_max_bitrate (NMAccessPoint *ap);
|
||||||
guint8 nm_access_point_get_strength (NMAccessPoint *ap);
|
guint8 nm_access_point_get_strength (NMAccessPoint *ap);
|
||||||
|
gint32 nm_access_point_get_last_seen (NMAccessPoint *ap);
|
||||||
|
|
||||||
GSList * nm_access_point_filter_connections (NMAccessPoint *ap,
|
GSList * nm_access_point_filter_connections (NMAccessPoint *ap,
|
||||||
const GSList *connections);
|
const GSList *connections);
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@ enum {
|
||||||
PROP_MODE,
|
PROP_MODE,
|
||||||
PROP_MAX_BITRATE,
|
PROP_MAX_BITRATE,
|
||||||
PROP_STRENGTH,
|
PROP_STRENGTH,
|
||||||
|
PROP_LAST_SEEN,
|
||||||
LAST_PROP
|
LAST_PROP
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -195,6 +196,12 @@ get_property (GObject *object, guint prop_id,
|
||||||
case PROP_STRENGTH:
|
case PROP_STRENGTH:
|
||||||
g_value_set_schar (value, priv->strength);
|
g_value_set_schar (value, priv->strength);
|
||||||
break;
|
break;
|
||||||
|
case PROP_LAST_SEEN:
|
||||||
|
g_value_set_int (value,
|
||||||
|
priv->last_seen > 0
|
||||||
|
? (gint) nm_utils_monotonic_timestamp_as_boottime (priv->last_seen, NM_UTILS_NS_PER_SECOND)
|
||||||
|
: -1);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
@ -294,6 +301,13 @@ nm_ap_class_init (NMAccessPointClass *ap_class)
|
||||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
|
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
|
||||||
G_PARAM_STATIC_STRINGS));
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
g_object_class_install_property
|
||||||
|
(object_class, PROP_LAST_SEEN,
|
||||||
|
g_param_spec_int (NM_AP_LAST_SEEN, "", "",
|
||||||
|
-1, G_MAXINT, -1,
|
||||||
|
G_PARAM_READABLE |
|
||||||
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
nm_dbus_manager_register_exported_type (nm_dbus_manager_get (),
|
nm_dbus_manager_register_exported_type (nm_dbus_manager_get (),
|
||||||
G_TYPE_FROM_CLASS (ap_class),
|
G_TYPE_FROM_CLASS (ap_class),
|
||||||
&dbus_glib_nm_access_point_object_info);
|
&dbus_glib_nm_access_point_object_info);
|
||||||
|
|
@ -1056,7 +1070,7 @@ void nm_ap_set_broadcast (NMAccessPoint *ap, gboolean broadcast)
|
||||||
gint32
|
gint32
|
||||||
nm_ap_get_last_seen (const NMAccessPoint *ap)
|
nm_ap_get_last_seen (const NMAccessPoint *ap)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (NM_IS_AP (ap), FALSE);
|
g_return_val_if_fail (NM_IS_AP (ap), 0);
|
||||||
|
|
||||||
return NM_AP_GET_PRIVATE (ap)->last_seen;
|
return NM_AP_GET_PRIVATE (ap)->last_seen;
|
||||||
}
|
}
|
||||||
|
|
@ -1064,9 +1078,16 @@ nm_ap_get_last_seen (const NMAccessPoint *ap)
|
||||||
void
|
void
|
||||||
nm_ap_set_last_seen (NMAccessPoint *ap, gint32 last_seen)
|
nm_ap_set_last_seen (NMAccessPoint *ap, gint32 last_seen)
|
||||||
{
|
{
|
||||||
|
NMAccessPointPrivate *priv;
|
||||||
|
|
||||||
g_return_if_fail (NM_IS_AP (ap));
|
g_return_if_fail (NM_IS_AP (ap));
|
||||||
|
|
||||||
NM_AP_GET_PRIVATE (ap)->last_seen = last_seen;
|
priv = NM_AP_GET_PRIVATE (ap);
|
||||||
|
|
||||||
|
if (priv->last_seen != last_seen) {
|
||||||
|
priv->last_seen = last_seen;
|
||||||
|
g_object_notify (G_OBJECT (ap), NM_AP_LAST_SEEN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@
|
||||||
#define NM_AP_MODE "mode"
|
#define NM_AP_MODE "mode"
|
||||||
#define NM_AP_MAX_BITRATE "max-bitrate"
|
#define NM_AP_MAX_BITRATE "max-bitrate"
|
||||||
#define NM_AP_STRENGTH "strength"
|
#define NM_AP_STRENGTH "strength"
|
||||||
|
#define NM_AP_LAST_SEEN "last-seen"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GObject parent;
|
GObject parent;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue