about summary refs log tree commit diff
path: root/libnm/nm-device-wifi.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2018-06-17 14:54:10 +0200
committerMichael Biebl <biebl@debian.org>2018-06-17 14:54:10 +0200
commit069cb5c3a525ebcc19cc2927964258acaca87b13 (patch)
tree66ac6b21a44d630c0fc281c0df327239d491226a /libnm/nm-device-wifi.c
parent04bc9e1cd3544445d883ad29ea108c1645c8e7b7 (diff)
New upstream version 1.11.90 upstream/1.11.90
Diffstat (limited to 'libnm/nm-device-wifi.c')
-rw-r--r--libnm/nm-device-wifi.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/libnm/nm-device-wifi.c b/libnm/nm-device-wifi.c
index 1f2118fa..848e297c 100644
--- a/libnm/nm-device-wifi.c
+++ b/libnm/nm-device-wifi.c
@@ -59,6 +59,7 @@ typedef struct {
 	NMAccessPoint *active_ap;
 	NMDeviceWifiCapabilities wireless_caps;
 	GPtrArray *aps;
+	gint64 last_scan;
 
 	RequestScanInfo *scan_info;
 } NMDeviceWifiPrivate;
@@ -72,6 +73,7 @@ enum {
 	PROP_ACTIVE_ACCESS_POINT,
 	PROP_WIRELESS_CAPABILITIES,
 	PROP_ACCESS_POINTS,
+	PROP_LAST_SCAN,
 
 	LAST_PROP
 };
@@ -267,6 +269,28 @@ nm_device_wifi_get_access_point_by_path (NMDeviceWifi *device,
 	return ap;
 }
 
+/**
+ * nm_device_wifi_get_last_scan:
+ * @device: a #NMDeviceWifi
+ *
+ * Returns the timestamp (in CLOCK_BOOTTIME milliseconds) for the last finished
+ * network scan. A value of -1 means the device never scanned for access points.
+ *
+ * Use nm_utils_get_timestamp_msec() to obtain current time value suitable for
+ * comparing to this value.
+ *
+ * Returns: the last scan time in seconds
+ *
+ * Since: 1.12
+ **/
+gint64
+nm_device_wifi_get_last_scan (NMDeviceWifi *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), -1);
+
+	return NM_DEVICE_WIFI_GET_PRIVATE (device)->last_scan;
+}
+
 static GVariant *
 prepare_scan_options (GVariant *options)
 {
@@ -666,6 +690,7 @@ nm_device_wifi_init (NMDeviceWifi *device)
 	                  NULL);
 
 	priv->aps = g_ptr_array_new ();
+	priv->last_scan = -1;
 }
 
 static void
@@ -698,6 +723,9 @@ get_property (GObject *object,
 	case PROP_ACCESS_POINTS:
 		g_value_take_boxed (value, _nm_utils_copy_object_array (nm_device_wifi_get_access_points (self)));
 		break;
+	case PROP_LAST_SCAN:
+		g_value_set_int64 (value, nm_device_wifi_get_last_scan (self));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 		break;
@@ -739,6 +767,7 @@ init_dbus (NMObject *object)
 		{ NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT,  &priv->active_ap, NULL, NM_TYPE_ACCESS_POINT },
 		{ NM_DEVICE_WIFI_CAPABILITIES,         &priv->wireless_caps },
 		{ NM_DEVICE_WIFI_ACCESS_POINTS,        &priv->aps, NULL, NM_TYPE_ACCESS_POINT, "access-point" },
+		{ NM_DEVICE_WIFI_LAST_SCAN,            &priv->last_scan },
 		{ NULL },
 	};
 
@@ -898,6 +927,22 @@ nm_device_wifi_class_init (NMDeviceWifiClass *wifi_class)
 		                     G_PARAM_READABLE |
 		                     G_PARAM_STATIC_STRINGS));
 
+	/**
+	 * NMDeviceWifi:last-scan:
+	 *
+	 * The timestamp (in CLOCK_BOOTTIME seconds) for the last finished
+	 * network scan. A value of -1 means the device never scanned for
+	 * access points.
+	 *
+	 * Since: 1.12
+	 **/
+	g_object_class_install_property
+	        (object_class, PROP_LAST_SCAN,
+	         g_param_spec_int64 (NM_DEVICE_WIFI_LAST_SCAN, "", "",
+	                             -1, G_MAXINT64, -1,
+	                             G_PARAM_READABLE |
+	                             G_PARAM_STATIC_STRINGS));
+
 	/* signals */
 
 	/**