Diff between 389d4f1c80e8afdd55b2aeec28cc785b55a0a43d and 89bf85768c4fcabb704c957cae56f839ecbbde70

Changed Files

File Additions Deletions Status
src/device.c +67 -0 modified
src/device.h +2 -0 modified

Full Patch

diff --git a/src/device.c b/src/device.c
index 0635dee..2268602 100644
--- a/src/device.c
+++ b/src/device.c
@@ -184,6 +184,9 @@ struct btd_device {
 	gboolean	bonded;
 	gboolean	auto_connect;
 
+	bool		legacy;
+	int8_t		rssi;
+
 	gint		ref;
 
 	GIOChannel      *att_io;
@@ -625,6 +628,36 @@ static gboolean dev_property_get_paired(const GDBusPropertyTable *property,
 	return TRUE;
 }
 
+static gboolean dev_property_get_legacy(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *data)
+{
+	struct btd_device *device = data;
+	dbus_bool_t val = device->legacy;
+
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &val);
+
+	return TRUE;
+}
+
+static gboolean dev_property_get_rssi(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *data)
+{
+	struct btd_device *dev = data;
+	dbus_int16_t val = dev->rssi;
+
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_INT16, &val);
+
+	return TRUE;
+}
+
+static gboolean dev_property_exists_rssi(const GDBusPropertyTable *property,
+								void *data)
+{
+	struct btd_device *dev = data;
+
+	return dev->rssi ? TRUE : FALSE;
+}
+
 static gboolean dev_property_get_trusted(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *data)
 {
@@ -1272,6 +1305,8 @@ static const GDBusPropertyTable device_properties[] = {
 	{ "Paired", "b", dev_property_get_paired },
 	{ "Trusted", "b", dev_property_get_trusted, dev_property_set_trusted },
 	{ "Blocked", "b", dev_property_get_blocked, dev_property_set_blocked },
+	{ "LegacyPairing", "b", dev_property_get_legacy },
+	{ "RSSI", "n", dev_property_get_rssi, NULL, dev_property_exists_rssi },
 	{ "Connected", "b", dev_property_get_connected },
 	{ "UUIDs", "as", dev_property_get_uuids },
 	{ "Services", "ao", dev_property_get_services },
@@ -2763,6 +2798,38 @@ void device_set_bonded(struct btd_device *device, gboolean bonded)
 	device->bonded = bonded;
 }
 
+void device_set_legacy(struct btd_device *device, bool legacy)
+{
+	if (!device)
+		return;
+
+	DBG("legacy %d", legacy);
+
+	if (device->legacy == legacy)
+		return;
+
+	device->legacy = legacy;
+
+	g_dbus_emit_property_changed(btd_get_dbus_connection(), device->path,
+					DEVICE_INTERFACE, "LegacyPairing");
+}
+
+void device_set_rssi(struct btd_device *device, int8_t rssi)
+{
+	if (!device)
+		return;
+
+	DBG("rssi %d", rssi);
+
+	if (device->rssi == rssi)
+		return;
+
+	device->rssi = rssi;
+
+	g_dbus_emit_property_changed(btd_get_dbus_connection(), device->path,
+						DEVICE_INTERFACE, "RSSI");
+}
+
 void device_set_auto_connect(struct btd_device *device, gboolean enable)
 {
 	char addr[18];
diff --git a/src/device.h b/src/device.h
index 46cecb4..99322b6 100644
--- a/src/device.h
+++ b/src/device.h
@@ -71,6 +71,8 @@ gboolean device_is_trusted(struct btd_device *device);
 void device_set_paired(struct btd_device *device, gboolean paired);
 void device_set_temporary(struct btd_device *device, gboolean temporary);
 void device_set_bonded(struct btd_device *device, gboolean bonded);
+void device_set_legacy(struct btd_device *device, bool legacy);
+void device_set_rssi(struct btd_device *device, int8_t rssi);
 void device_set_auto_connect(struct btd_device *device, gboolean enable);
 gboolean device_is_connected(struct btd_device *device);
 DBusMessage *device_create_bonding(struct btd_device *device, DBusMessage *msg,