aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Zaborowski <andrew.zaborowski@intel.com>2020-04-23 18:24:30 +0200
committerDenis Kenzior <denkenz@gmail.com>2020-04-23 14:49:24 -0500
commit945abadc8a56a038b23f62b9d4974791124463ad (patch)
treec1f71400a7d9945bf23051e433e6b0f032e11bd8
parent46215a66240c2c587098ba49e49c822f59c6998e (diff)
downloadiwd-945abadc8a56a038b23f62b9d4974791124463ad.tar.gz
p2p: Add peer WSC device type properties
-rw-r--r--src/p2p.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/p2p.c b/src/p2p.c
index f2cdd0115..52ad2808c 100644
--- a/src/p2p.c
+++ b/src/p2p.c
@@ -68,6 +68,7 @@ struct p2p_peer {
struct scan_bss *bss;
struct p2p_device *dev;
char *name;
+ struct wsc_primary_device_type primary_device_type;
};
static struct l_queue *p2p_device_list;
@@ -301,6 +302,46 @@ static bool p2p_peer_get_name(struct l_dbus *dbus,
return true;
}
+static bool p2p_peer_get_category(struct l_dbus *dbus,
+ struct l_dbus_message *message,
+ struct l_dbus_message_builder *builder,
+ void *user_data)
+{
+ struct p2p_peer *peer = user_data;
+ const char *category;
+
+ if (!wsc_device_type_to_dbus_str(&peer->primary_device_type,
+ &category, NULL) ||
+ !category)
+ category = "unknown-device";
+
+ l_dbus_message_builder_append_basic(builder, 's', category);
+ return true;
+}
+
+static bool p2p_peer_get_subcategory(struct l_dbus *dbus,
+ struct l_dbus_message *message,
+ struct l_dbus_message_builder *builder,
+ void *user_data)
+{
+ struct p2p_peer *peer = user_data;
+ const char *subcategory;
+
+ /*
+ * Should we generate subcategory strings with the numerical
+ * values for the subcategories we don't know, such as
+ * "Vendor-specific 00:11:22:33 44" ?
+ */
+
+ if (!wsc_device_type_to_dbus_str(&peer->primary_device_type,
+ NULL, &subcategory) ||
+ !subcategory)
+ return false;
+
+ l_dbus_message_builder_append_basic(builder, 's', subcategory);
+ return true;
+}
+
static bool p2p_peer_get_connected(struct l_dbus *dbus,
struct l_dbus_message *message,
struct l_dbus_message_builder *builder,
@@ -316,6 +357,10 @@ static void p2p_peer_interface_setup(struct l_dbus_interface *interface)
{
l_dbus_interface_property(interface, "Name", 0, "s",
p2p_peer_get_name, NULL);
+ l_dbus_interface_property(interface, "DeviceCategory", 0, "s",
+ p2p_peer_get_category, NULL);
+ l_dbus_interface_property(interface, "DeviceSubcategory", 0, "s",
+ p2p_peer_get_subcategory, NULL);
l_dbus_interface_property(interface, "Connected", 0, "b",
p2p_peer_get_connected, NULL);
}