diff --git a/client/device.c b/client/device.c index 8f572bfa..477a5e15 100644 --- a/client/device.c +++ b/client/device.c @@ -31,6 +31,7 @@ #include "device.h" #include "display.h" #include "network.h" +#include "properties.h" struct device { bool powered; @@ -672,7 +673,29 @@ static enum cmd_status cmd_list(const char *device_name, char *args) static enum cmd_status cmd_set_property(const char *device_name, char *args) { - return CMD_STATUS_UNSUPPORTED; + char *name; + char *value_str; + const struct proxy_interface *proxy = + get_device_proxy_by_name(device_name); + + if (!proxy) + return CMD_STATUS_INVALID_VALUE; + + if (!properties_parse_args(args, &name, &value_str)) + return CMD_STATUS_INVALID_ARGS; + + if (!proxy_property_set(proxy, name, value_str, + check_errors_method_callback)) { + l_free(name); + l_free(value_str); + + return CMD_STATUS_INVALID_VALUE; + } + + l_free(name); + l_free(value_str); + + return CMD_STATUS_OK; } static enum cmd_status cmd_connect(const char *device_name, char *args)