From 6d210d5aa469cb3bef9c5a0f4fad42875c69ea64 Mon Sep 17 00:00:00 2001 From: Tim Kourt Date: Thu, 27 Apr 2017 12:36:27 -0700 Subject: [PATCH] client: Add properties for adapter interface --- client/adapter.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/client/adapter.c b/client/adapter.c index 3e165eeb..c085c891 100644 --- a/client/adapter.c +++ b/client/adapter.c @@ -29,8 +29,100 @@ #include "command.h" #include "dbus-proxy.h" +struct adapter { + bool powered; + char *model; + char *name; + char *vendor; +}; + +static const char *get_name(const void *data) +{ + const struct adapter *adapter = data; + + return adapter->name; +} + +static void set_name(void *data, struct l_dbus_message_iter *variant) +{ + struct adapter *adapter = data; + const char *value; + + l_free(adapter->name); + + if (!l_dbus_message_iter_get_variant(variant, "s", &value)) { + adapter->name = NULL; + + return; + } + + adapter->name = l_strdup(value); +} + +static void set_vendor(void *data, struct l_dbus_message_iter *variant) +{ + struct adapter *adapter = data; + const char *value; + + l_free(adapter->vendor); + + if (!l_dbus_message_iter_get_variant(variant, "s", &value)) { + adapter->vendor = NULL; + + return; + } + + adapter->vendor = l_strdup(value); +} + +static void set_model(void *data, struct l_dbus_message_iter *variant) +{ + struct adapter *adapter = data; + const char *value; + + l_free(adapter->model); + + if (!l_dbus_message_iter_get_variant(variant, "s", &value)) { + adapter->model = NULL; + + return; + } + + adapter->model = l_strdup(value); +} + +static const char *get_powered_tostr(const void *data) +{ + const struct adapter *adapter = data; + + return adapter->powered ? "on" : "off"; +} + +static void set_powered(void *data, struct l_dbus_message_iter *variant) +{ + struct adapter *adapter = data; + bool value; + + if (!l_dbus_message_iter_get_variant(variant, "b", &value)) { + adapter->powered = false; + + return; + } + + adapter->powered = value; +} + +static const struct proxy_interface_property adapter_properties[] = { + { "Name", "s", set_name, get_name }, + { "Powered", "b", set_powered, get_powered_tostr, true }, + { "Vendor", "s", set_vendor }, + { "Model", "s", set_model }, + { } +}; + static struct proxy_interface_type adapter_interface_type = { .interface = IWD_ADAPTER_INTERFACE, + .properties = adapter_properties, }; static const struct command adapter_commands[] = {