[PATCH 3/4] Use macros instead of strings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Chen Ganir <chen.ganir@xxxxxx>

Use macros instead of strings when calling notify_property_changed.
Use a helper array to get the correct D-BUS Property name.
---
 src/device.c |   96 ++++++++++++++++++++++++++++++++++++++++------------------
 src/device.h |   18 +++++++++++
 2 files changed, 84 insertions(+), 30 deletions(-)

diff --git a/src/device.c b/src/device.c
index fbed9f8..dbabd87 100644
--- a/src/device.c
+++ b/src/device.c
@@ -187,13 +187,37 @@ static uint16_t uuid_list[] = {
 
 static GSList *device_drivers = NULL;
 
-
-static void notify_property_changed(DBusConnection *conn,
+const char *property_name[] = { "Address",
+								"Name",
+								"Vendor",
+								"Product",
+								"Version",
+								"Icon",
+								"Class",
+								"UUIDs",
+								"Services",
+								"Paired",
+								"Connected",
+								"Trusted",
+								"Blocked",
+								"Alias",
+								"Nodes",
+								"Adapter",
+								"LegacyPairing"};
+
+static void notify_property_changed(struct btd_device *device,
+					DBusConnection *conn,
 					const char *path,
-					const char *name,
+					const uint16_t property,
 					int type, void *value, int num)
 {
 	const char *interface = DEVICE_INTERFACE;
+	const char *name = "";
+
+	if (property > 0 && property <= DEVICE_PROPERTY_CHANGED_LEGACYPAIRING)
+		name = property_name[property-1];
+	else
+		name = "UNKNOWN";
 
 	if (num == 0)
 		emit_property_changed(conn, path,
@@ -480,8 +504,9 @@ static DBusMessage *set_alias(DBusConnection *conn, DBusMessage *msg,
 	g_free(device->alias);
 	device->alias = g_str_equal(alias, "") ? NULL : g_strdup(alias);
 
-	notify_property_changed(conn, dbus_message_get_path(msg),
-				"Alias", DBUS_TYPE_STRING, &alias, 0);
+	notify_property_changed(device, conn, dbus_message_get_path(msg),
+						DEVICE_PROPERTY_CHANGED_ALIAS,
+						DBUS_TYPE_STRING, &alias, 0);
 
 	return dbus_message_new_method_return(msg);
 }
@@ -508,8 +533,9 @@ static DBusMessage *set_trust(DBusConnection *conn, DBusMessage *msg,
 
 	device->trusted = value;
 
-	notify_property_changed(conn, dbus_message_get_path(msg),
-				"Trusted", DBUS_TYPE_BOOLEAN, &value, 0);
+	notify_property_changed(device, conn, dbus_message_get_path(msg),
+				DEVICE_PROPERTY_CHANGED_TRUSTED,
+				DBUS_TYPE_BOOLEAN, &value, 0);
 
 	return dbus_message_new_method_return(msg);
 }
@@ -565,8 +591,9 @@ int device_block(DBusConnection *conn, struct btd_device *device,
 
 	device_set_temporary(device, FALSE);
 
-	notify_property_changed(conn, device->path, "Blocked",
-					DBUS_TYPE_BOOLEAN, &device->blocked, 0);
+	notify_property_changed(device, conn, device->path,
+					DEVICE_PROPERTY_CHANGED_BLOCKED, DBUS_TYPE_BOOLEAN,
+					&device->blocked, 0);
 
 	return 0;
 }
@@ -596,8 +623,10 @@ int device_unblock(DBusConnection *conn, struct btd_device *device,
 		error("write_blocked(): %s (%d)", strerror(-err), -err);
 
 	if (!silent) {
-		notify_property_changed(conn, device->path,
-					"Blocked", DBUS_TYPE_BOOLEAN, &device->blocked, 0);
+		notify_property_changed(device, conn, device->path,
+					DEVICE_PROPERTY_CHANGED_BLOCKED,
+					DBUS_TYPE_BOOLEAN, &device->blocked, 0);
+
 		device_probe_drivers(device, device->uuids);
 	}
 
@@ -922,8 +951,10 @@ void device_add_connection(struct btd_device *device, DBusConnection *conn)
 
 	device->connected = TRUE;
 
-	notify_property_changed(conn, device->path,
-					"Connected", DBUS_TYPE_BOOLEAN, &device->connected, 0);
+	notify_property_changed(device, conn, device->path,
+					DEVICE_PROPERTY_CHANGED_CONNECTED,
+					DBUS_TYPE_BOOLEAN, &device->connected, 0);
+
 }
 
 void device_remove_connection(struct btd_device *device, DBusConnection *conn)
@@ -952,8 +983,9 @@ void device_remove_connection(struct btd_device *device, DBusConnection *conn)
 	if (device_is_paired(device) && !device_is_bonded(device))
 		device_set_paired(device, FALSE);

-	notify_property_changed(conn, device->path,
-					"Connected", DBUS_TYPE_BOOLEAN, &device->connected, 0);
+	notify_property_changed(device, conn, device->path,
+					DEVICE_PROPERTY_CHANGED_CONNECTED,
+					DBUS_TYPE_BOOLEAN, &device->connected, 0);
 }
 
 guint device_add_disconnect_watch(struct btd_device *device,
@@ -1001,8 +1033,8 @@ static void device_set_vendor(struct btd_device *device, uint16_t value)

 	device->vendor = value;

-	notify_property_changed(conn, device->path, "Vendor",
-				DBUS_TYPE_UINT16, &value, 0);
+	notify_property_changed(device, conn, device->path,
+				DEVICE_PROPERTY_CHANGED_VENDOR,	DBUS_TYPE_UINT16, &value, 0);
 }
 
 static void device_set_product(struct btd_device *device, uint16_t value)
@@ -1014,8 +1046,8 @@ static void device_set_product(struct btd_device *device, uint16_t value)
 
 	device->product = value;
 
-	notify_property_changed(conn, device->path, "Product",
-				DBUS_TYPE_UINT16, &value, 0);
+	notify_property_changed(device, conn, device->path,
+				DEVICE_PROPERTY_CHANGED_PRODUCT, DBUS_TYPE_UINT16, &value, 0);
 }
 
 static void device_set_version(struct btd_device *device, uint16_t value)
@@ -1027,8 +1059,8 @@ static void device_set_version(struct btd_device *device, uint16_t value)
 
 	device->version = value;
 
-	notify_property_changed(conn, device->path, "Version",
-				DBUS_TYPE_UINT16, &value, 0);
+	notify_property_changed(device, conn, device->path,
+				DEVICE_PROPERTY_CHANGED_VERSION, DBUS_TYPE_UINT16, &value, 0);
 }
 
 struct btd_device *device_create(DBusConnection *conn,
@@ -1102,14 +1134,17 @@ void device_set_name(struct btd_device *device, const char *name)
 
 	strncpy(device->name, name, MAX_NAME_LENGTH);
 
-	notify_property_changed(conn, device->path,
-				"Name",	DBUS_TYPE_STRING, &name, 0);
+	notify_property_changed(device, conn, device->path,
+				DEVICE_PROPERTY_CHANGED_NAME,
+				DBUS_TYPE_STRING, &name, 0);
 
 	if (device->alias != NULL)
 		return;
 
-	notify_property_changed(conn, device->path,
-				"Alias", DBUS_TYPE_STRING, &name, 0);
+	notify_property_changed(device, conn, device->path,
+				DEVICE_PROPERTY_CHANGED_ALIAS,
+				DBUS_TYPE_STRING, &name, 0);
+
 }
 
 void device_get_name(struct btd_device *device, char *name, size_t len)
@@ -1399,7 +1434,8 @@ static void services_changed(struct btd_device *device)
 	for (i = 0, l = device->uuids; l; l = l->next, i++)
 		uuids[i] = l->data;
 
-	notify_property_changed(conn, device->path, "UUIDs",
+	notify_property_changed(device, conn, device->path,
+					DEVICE_PROPERTY_CHANGED_UUIDS,
 					DBUS_TYPE_STRING, &uuids, i);
 
 	g_free(uuids);
@@ -2333,8 +2369,8 @@ void device_set_paired(struct btd_device *device, gboolean value)
 
 	device->paired = value;
 
-	notify_property_changed(conn, device->path, "Paired",
-				DBUS_TYPE_BOOLEAN, &value, 0);
+	notify_property_changed(device, conn, device->path,
+			DEVICE_PROPERTY_CHANGED_PAIRED,	DBUS_TYPE_BOOLEAN, &value, 0);
 }
 
 static void device_agent_removed(struct agent *agent, void *user_data)
@@ -2920,8 +2956,8 @@ void device_set_class(struct btd_device *device, uint32_t value)
 {
 	DBusConnection *conn = get_dbus_connection();
 
-	notify_property_changed(conn, device->path, "Class",
-				DBUS_TYPE_UINT32, &value, 0);
+	notify_property_changed(device, conn, device->path,
+				DEVICE_PROPERTY_CHANGED_CLASS, DBUS_TYPE_UINT32, &value, 0);
 }
 
 static gboolean notify_attios(gpointer user_data)
diff --git a/src/device.h b/src/device.h
index ba9ed32..ce0a83a 100644
--- a/src/device.h
+++ b/src/device.h
@@ -28,6 +28,24 @@ struct btd_device;
 
 typedef void (*dev_property_changed_cb)(uint16_t property, uint8_t *value, uint16_t len);
 
+#define DEVICE_PROPERTY_CHANGED_ADDRESS			0x01
+#define DEVICE_PROPERTY_CHANGED_NAME			0x02
+#define DEVICE_PROPERTY_CHANGED_VENDOR			0x03
+#define DEVICE_PROPERTY_CHANGED_PRODUCT			0x04
+#define DEVICE_PROPERTY_CHANGED_VERSION			0x05
+#define DEVICE_PROPERTY_CHANGED_ICON			0x06
+#define DEVICE_PROPERTY_CHANGED_CLASS			0x07
+#define DEVICE_PROPERTY_CHANGED_UUIDS			0x08
+#define DEVICE_PROPERTY_CHANGED_SERVICES		0x09
+#define DEVICE_PROPERTY_CHANGED_PAIRED			0x0A
+#define DEVICE_PROPERTY_CHANGED_CONNECTED       0x0B
+#define DEVICE_PROPERTY_CHANGED_TRUSTED			0x0C
+#define DEVICE_PROPERTY_CHANGED_BLOCKED			0x0D
+#define DEVICE_PROPERTY_CHANGED_ALIAS			0x0E
+#define DEVICE_PROPERTY_CHANGED_NODES			0x0F
+#define DEVICE_PROPERTY_CHANGED_ADAPTER			0x10
+#define DEVICE_PROPERTY_CHANGED_LEGACYPAIRING	0x11
+
 typedef enum {
 	AUTH_TYPE_PINCODE,
 	AUTH_TYPE_PASSKEY,
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux