diff options
author | Andrew Zaborowski <andrew.zaborowski@intel.com> | 2020-04-23 18:24:30 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2020-04-23 14:49:24 -0500 |
commit | 945abadc8a56a038b23f62b9d4974791124463ad (patch) | |
tree | c1f71400a7d9945bf23051e433e6b0f032e11bd8 | |
parent | 46215a66240c2c587098ba49e49c822f59c6998e (diff) | |
download | iwd-945abadc8a56a038b23f62b9d4974791124463ad.tar.gz |
p2p: Add peer WSC device type properties
-rw-r--r-- | src/p2p.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -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); } |