Diff between cb7a38247eb0e154643b67e236f65948522391d2 and c65c8bf645af1517016fad1bd14458db3f75ac1b

Changed Files

File Additions Deletions Status
src/adapter.c +2 -0 modified
src/device.c +11 -0 modified
src/device.h +1 -0 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index ffcb968..f5b03c3 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -4298,6 +4298,8 @@ static void update_found_devices(struct btd_adapter *adapter,
 		return;
 	}
 
+	device_update_last_seen(dev, bdaddr_type);
+
 	if (bdaddr_type != BDADDR_BREDR && !(eir_data.flags & EIR_BREDR_UNSUP))
 		device_set_bredr_support(dev, true);
 
diff --git a/src/device.c b/src/device.c
index def4e02..501b5fd 100644
--- a/src/device.c
+++ b/src/device.c
@@ -198,6 +198,9 @@ struct btd_device {
 
 	sdp_list_t	*tmp_records;
 
+	time_t		bredr_seen;
+	time_t		le_seen;
+
 	gboolean	trusted;
 	gboolean	paired;
 	gboolean	blocked;
@@ -2348,6 +2351,14 @@ void device_set_bredr_support(struct btd_device *device, bool bredr)
 	device->bredr = bredr;
 }
 
+void device_update_last_seen(struct btd_device *device, uint8_t bdaddr_type)
+{
+	if (bdaddr_type == BDADDR_BREDR)
+		device->bredr_seen = time(NULL);
+	else
+		device->le_seen = time(NULL);
+}
+
 uint32_t btd_device_get_class(struct btd_device *device)
 {
 	return device->class;
diff --git a/src/device.h b/src/device.h
index 4a41386..7ef0199 100644
--- a/src/device.h
+++ b/src/device.h
@@ -41,6 +41,7 @@ void device_set_class(struct btd_device *device, uint32_t class);
 void device_update_addr(struct btd_device *device, const bdaddr_t *bdaddr,
 							uint8_t bdaddr_type);
 void device_set_bredr_support(struct btd_device *device, bool bredr);
+void device_update_last_seen(struct btd_device *device, uint8_t bdaddr_type);
 uint32_t btd_device_get_class(struct btd_device *device);
 uint16_t btd_device_get_vendor(struct btd_device *device);
 uint16_t btd_device_get_vendor_src(struct btd_device *device);