diff --git a/client/device.c b/client/device.c index 32891360..dfaa6c8b 100644 --- a/client/device.c +++ b/client/device.c @@ -28,6 +28,7 @@ #include "command.h" #include "dbus-proxy.h" +#include "display.h" struct device { bool powered; @@ -35,8 +36,11 @@ struct device { char *address; char *name; char *state; + struct l_queue *ordered_networks; const struct proxy_interface *adapter; const struct proxy_interface *connected_network; + const struct proxy_interface *properties; + const struct proxy_interface *wsc; }; static const void *get_name(const void *data) @@ -159,9 +163,77 @@ static const struct proxy_interface_property device_properties[] = { { } }; +static void ordered_networks_destroy(void *data) +{ +} + +static void *device_create(void) +{ + return l_new(struct device, 1); +} + +static void device_destroy(void *data) +{ + struct device *device = data; + + l_free(device->address); + l_free(device->name); + l_free(device->state); + + l_queue_destroy(device->ordered_networks, ordered_networks_destroy); + + device->adapter = NULL; + device->connected_network = NULL; + device->properties = NULL; + device->wsc = NULL; + + l_free(device); +} + +static bool device_bind_interface(const struct proxy_interface *proxy, + const struct proxy_interface *dependency) +{ + return true; +} + +static bool device_unbind_interface(const struct proxy_interface *proxy, + const struct proxy_interface *dependency) +{ + return true; +} + +static void display_device_inline(const char *margin, const void *data) +{ + const struct device *device = data; + + display("%s%-*s%-*s%-*s%-*s%-*s\n", margin, + 20, device->name ? : "", + 20, device->address ? : "", + 15, device->state ? : "", + 10, proxy_interface_get_identity_str(device->adapter) ? : "-", + 8, device->scanning ? "scanning" : ""); +} + +static const char *device_identity(void *data) +{ + const struct device *device = data; + + return device->name; +} + +static const struct proxy_interface_type_ops device_ops = { + .create = device_create, + .destroy = device_destroy, + .bind_interface = device_bind_interface, + .unbind_interface = device_unbind_interface, + .identity = device_identity, + .display = display_device_inline, +}; + static struct proxy_interface_type device_interface_type = { .interface = IWD_DEVICE_INTERFACE, .properties = device_properties, + .ops = &device_ops, }; static struct command_family device_command_family = {