summaryrefslogtreecommitdiff
path: root/src/devices/wifi/nm-wifi-ap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/wifi/nm-wifi-ap.c')
-rw-r--r--src/devices/wifi/nm-wifi-ap.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/devices/wifi/nm-wifi-ap.c b/src/devices/wifi/nm-wifi-ap.c
index d70dd9a6d..1485f4c10 100644
--- a/src/devices/wifi/nm-wifi-ap.c
+++ b/src/devices/wifi/nm-wifi-ap.c
@@ -79,6 +79,7 @@ enum {
PROP_MODE,
PROP_MAX_BITRATE,
PROP_STRENGTH,
+ PROP_LAST_SEEN,
LAST_PROP
};
@@ -195,6 +196,12 @@ get_property (GObject *object, guint prop_id,
case PROP_STRENGTH:
g_value_set_schar (value, priv->strength);
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:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -294,6 +301,13 @@ nm_ap_class_init (NMAccessPointClass *ap_class)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
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 (),
G_TYPE_FROM_CLASS (ap_class),
&dbus_glib_nm_access_point_object_info);
@@ -1056,7 +1070,7 @@ void nm_ap_set_broadcast (NMAccessPoint *ap, gboolean broadcast)
gint32
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;
}
@@ -1064,9 +1078,16 @@ nm_ap_get_last_seen (const NMAccessPoint *ap)
void
nm_ap_set_last_seen (NMAccessPoint *ap, gint32 last_seen)
{
+ NMAccessPointPrivate *priv;
+
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