From: Bastian Dehn Date: Wed, 8 Oct 2025 17:05:17 +0000 (+0200) Subject: refactor reset options set X-Git-Tag: v1.1.9^2~1^2 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=71c32904d936b9d31127dff970f7c1f94180497a;p=sane-kds-s2000w-net.git refactor reset options set --- diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index 3e12847..73b0934 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -79,6 +79,36 @@ void _kds_s2000w_handler_opts_set_autostart_on(json_object* config) _kds_s2000w_handler_opts_write_value_to_json(value_object, SANE_TYPE_INT, &auto_start_value); } +void _kds_s2000w_handler_opts_set_option_to_default(handler* h) +{ + response* resp = kds_s2000w_client_response_init(); + kds_s2000w_client_get_capabilities(resp); + json_object* capabilities = json_tokener_parse(resp->data); + json_object* default_values = json_object_object_get(capabilities, "Defaults"); + json_object* default_config = json_object_new_object(); + json_object_object_add(default_config, CONFIGURATION, default_values); + + json_object_put(h->current_scanner_config); + h->current_scanner_config = NULL; + + h->current_scanner_config = default_config; + + kds_s2000w_client_response_free(resp); + resp = NULL; +} + +json_object* _kds_s2000w_handler_opts_reset(option_descriptor* descriptor, handler* h) +{ + if (strcmp(descriptor->config_name, RESET) != 0) + return json_object_object_get(h->current_scanner_config, CONFIGURATION); + + _kds_s2000w_handler_opts_set_option_to_default(h); + json_object* config = json_object_object_get(h->current_scanner_config, CONFIGURATION); + _kds_s2000w_handler_opts_set_autostart_on(config); + + return config; +} + void _kds_s2000w_handler_opts_set_options(handler* h) { const char* json_string = json_object_to_json_string_ext(h->current_scanner_config, JSON_C_TO_STRING_PLAIN); @@ -148,24 +178,6 @@ void _kds_s2000w_handler_opts_set_valid_coord_y(option_descriptor* descriptor, h json_object_set_int(value_object, h->coord->height); } -void _kds_s2000w_handler_opts_set_option_to_default(handler* h) -{ - response* resp = kds_s2000w_client_response_init(); - kds_s2000w_client_get_capabilities(resp); - json_object* capabilities = json_tokener_parse(resp->data); - json_object* default_values = json_object_object_get(capabilities, "Defaults"); - json_object* default_config = json_object_new_object(); - json_object_object_add(default_config, CONFIGURATION, default_values); - - json_object_put(h->current_scanner_config); - h->current_scanner_config = NULL; - - h->current_scanner_config = default_config; - - kds_s2000w_client_response_free(resp); - resp = NULL; -} - void _kds_s2000w_handler_opts_set_enable_cropping_image(json_object* config) { json_object* cropping_mode = json_object_object_get(config, CROPPING_MODE); @@ -531,13 +543,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value _kds_s2000w_handler_opts_write_value_to_json(value_object, descriptor->descriptor->type, value); _kds_s2000w_handler_opts_set_scan_source(descriptor, h, value); - - if (strcmp(descriptor->config_name, RESET) == 0) { - _kds_s2000w_handler_opts_set_option_to_default(h); - config = json_object_object_get(h->current_scanner_config, CONFIGURATION); - - _kds_s2000w_handler_opts_set_autostart_on(config); - } + config = _kds_s2000w_handler_opts_reset(descriptor, h); if (h->profile > PROFILE_MIN) _kds_s2000w_handler_opts_set_depends_opts(h, descriptor->config_name, config);