]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change refactor load config
authorBastian Dehn <hhaalo@arcor.de>
Wed, 8 Oct 2025 16:45:52 +0000 (18:45 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Wed, 8 Oct 2025 16:45:52 +0000 (18:45 +0200)
src/kds_s2000w_handler_opts.c

index 93bb0fda9a79b629412ba93a56b3cb038f84dec7..f9692e406bae342c1e2c69e9f5ecabb9d5e9c1f0 100644 (file)
@@ -38,6 +38,63 @@ void _kds_s2000w_handler_opts_write_value(json_object* value_object, SANE_Value_
        }
 }
 
+void _kds_s2000w_handler_opts_load_options(handler* h)
+{
+       json_object_put(h->current_scanner_config);
+       h->current_scanner_config = NULL;
+
+       response* resp = kds_s2000w_client_response_init();
+       uint8_t result = kds_s2000w_client_get_option(h->sessionid, resp);
+
+       if (result != 0 || resp->code != 200) {
+               kds_s2000w_debug_printf_int(ERROR, "load options response code", resp->code);
+               kds_s2000w_client_response_free(resp);
+               resp = NULL;
+               return;
+       }
+
+       h->current_scanner_config = json_tokener_parse(resp->data);
+
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+}
+
+void _kds_s2000w_handler_opts_set_autostart_on(json_object* config)
+{
+       uint32_t auto_start_value = AUTOSTART_ON;
+       json_object* value_object = json_object_object_get(config, AUTOSTART);
+       _kds_s2000w_handler_opts_write_value_to_json(value_object, SANE_TYPE_INT, &auto_start_value);
+}
+
+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);
+       response* resp = kds_s2000w_client_response_init();
+       resp->size = sizeof(char) * strlen(json_string);
+       resp->code = 0;
+       resp->data = realloc(resp->data, resp->size);
+       resp->data = memcpy(resp->data, json_string, resp->size);
+       kds_s2000w_client_set_option(h->sessionid, resp);
+       if (resp->code != 200)
+               kds_s2000w_debug_printf_int(ERROR, "set options response code", resp->code);
+
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+}
+
+json_object* _kds_s2000w_handler_opts_load_config(handler* h)
+{
+       if (h->current_scanner_config != NULL)
+               return json_object_object_get(h->current_scanner_config, CONFIGURATION);
+
+       _kds_s2000w_handler_opts_load_options(h);
+       json_object* config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
+       _kds_s2000w_handler_opts_set_autostart_on(config);
+       _kds_s2000w_handler_opts_set_options(h);
+
+       return config;
+}
+
 void _kds_s2000w_handler_opts_set_valid_coord_x(option_descriptor* descriptor, handler* h)
 {
        bool valid = h->coord->offset_x >= 0 && h->coord->offset_x <= 75;
@@ -78,34 +135,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_load_options(handler* h)
-{
-       json_object_put(h->current_scanner_config);
-       h->current_scanner_config = NULL;
-
-       response* resp = kds_s2000w_client_response_init();
-       uint8_t result = kds_s2000w_client_get_option(h->sessionid, resp);
-
-       if (result != 0 || resp->code != 200) {
-               kds_s2000w_debug_printf_int(ERROR, "load options response code", resp->code);
-               kds_s2000w_client_response_free(resp);
-               resp = NULL;
-               return;
-       }
-
-       h->current_scanner_config = json_tokener_parse(resp->data);
-
-       kds_s2000w_client_response_free(resp);
-       resp = NULL;
-}
-
-void _kds_s2000w_handler_opts_set_autostart_on(json_object* config)
-{
-       uint32_t auto_start_value = AUTOSTART_ON;
-       json_object* value_object = json_object_object_get(config, AUTOSTART);
-       _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();
@@ -124,22 +153,6 @@ void _kds_s2000w_handler_opts_set_option_to_default(handler* h)
        resp = NULL;
 }
 
-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);
-       response* resp = kds_s2000w_client_response_init();
-       resp->size = sizeof(char) * strlen(json_string);
-       resp->code = 0;
-       resp->data = realloc(resp->data, resp->size);
-       resp->data = memcpy(resp->data, json_string, resp->size);
-       kds_s2000w_client_set_option(h->sessionid, resp);
-       if (resp->code != 200)
-               kds_s2000w_debug_printf_int(ERROR, "set options response code", resp->code);
-
-       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);
@@ -415,15 +428,7 @@ void _kds_s2000w_handler_opts_set_depends_opts(handler* h,
 
 void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value, int32_t* info)
 {
-       json_object* config = NULL;
-       if (h->current_scanner_config == NULL) {
-               _kds_s2000w_handler_opts_load_options(h);
-               config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
-               _kds_s2000w_handler_opts_set_autostart_on(config);
-               _kds_s2000w_handler_opts_set_options(h);
-       }
-
-       config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
+       json_object* config = _kds_s2000w_handler_opts_load_config(h);
 
        option_descriptor* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option);
        if (strcmp(descriptor->config_name, OPTION_COUNT) == 0) {
@@ -494,16 +499,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value
        if (h->read_info->scan_started)
                return;
 
-       json_object* config = NULL;
-       if (h->current_scanner_config == NULL) {
-               _kds_s2000w_handler_opts_load_options(h);
-               config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
-               _kds_s2000w_handler_opts_set_autostart_on(config);
-       }
-
-       if (h->current_scanner_config != NULL)
-               config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
-
+       json_object* config = _kds_s2000w_handler_opts_load_config(h);
        option_descriptor* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option);
        json_object* value_object = json_object_object_get(config, descriptor->config_name);