]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
optimize read options
authorBastian Dehn <hhaalo@arcor.de>
Mon, 22 Sep 2025 06:28:19 +0000 (08:28 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 22 Sep 2025 06:31:57 +0000 (08:31 +0200)
src/kds_s2000w_handler_opts.c
tests/kds_s2000w_net_get_opt_tests_run.c

index 7737c66c03033dbb6d7a608acb37d2e97c96a727..e37a3068e54ce08cf6724a4e74367e6c23cdef4a 100644 (file)
@@ -245,7 +245,6 @@ void _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(json_obje
 void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value, int32_t* info)
 {
        json_object* config = NULL;
-       json_object* value_object = NULL;
 
        if (h->current_scanner_config == NULL) {
                _kds_s2000w_handler_opts_load_options(h);
@@ -257,6 +256,8 @@ void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value
        if (h->current_scanner_config != NULL)
                config = json_object_object_get(h->current_scanner_config, "Configuration");
 
+       option_descriptor* descriptor = kds_s2000w_option_descriptor_full_get_by_number(option);
+       json_object* value_object = NULL;
        switch(option) {
                case 0:
                        config = json_object_object_get(h->current_scanner_config, "Configuration");
@@ -264,7 +265,7 @@ void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value
                        *int_value_ptr = OPTION_COUNT;
                        break;
                case 2:
-                       value_object = json_object_object_get(config, "ScanSource");
+                       value_object = json_object_object_get(config, descriptor->config_name);
                        _kds_s2000w_handler_opts_write_string_value(value_object, value);
 
                        if (strcmp(value, "Flatbed") == 0)
@@ -278,157 +279,49 @@ void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value
 
                        break;
                case 3:
-                       value_object = json_object_object_get(config, "ColorMode");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
-               case 4:
-                       value_object = json_object_object_get(config, "DPI");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 5:
-                       value_object = json_object_object_get(config, "ScanSide");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 7:
-                       value_object = json_object_object_get(config, "CroppingMode");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 8:
-                       value_object = json_object_object_get(config, "CroppingImage");
+               case 14:
+               case 16:
+               case 19:
+               case 21:
+               case 24:
+               case 29:
+               case 36:
+               case 37:
+               case 38:
+               case 39:
+               case 42:
+               case 43:
+               case 44:
+               case 46:
+                       value_object = json_object_object_get(config, descriptor->config_name);
                        _kds_s2000w_handler_opts_write_string_value(value_object, value);
                        break;
+               case 4:
                case 9:
-                       value_object = json_object_object_get(config, "ImageOffsetX");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 10:
-                       value_object = json_object_object_get(config, "ImageOffsetY");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 11:
-                       value_object = json_object_object_get(config, "ImageWidth");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 12:
-                       value_object = json_object_object_get(config, "ImageHeight");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 14:
-                       value_object = json_object_object_get(config, "ForegroundBoldnessMode");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 15:
-                       value_object = json_object_object_get(config, "ForegroundBoldnessAggressiveness");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 16:
-                       value_object = json_object_object_get(config, "BackgroundSmoothingMode");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 17:
-                       value_object = json_object_object_get(config, "BackgroundSmoothingAggressiveness");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 19:
-                       value_object = json_object_object_get(config, "ColorDropOut");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 20:
-                       value_object = json_object_object_get(config, "ColorDropOutAggressiveness");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 21:
-                       value_object = json_object_object_get(config, "ColorAutoBrightnessMode");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 22:
-                       value_object = json_object_object_get(config, "ColorBrightness");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 23:
-                       value_object = json_object_object_get(config, "ColorContrast");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 24:
-                       value_object = json_object_object_get(config, "ColorBalanceMode");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 25:
-                       value_object = json_object_object_get(config, "ColorBalanceAggressiveness");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 26:
-                       value_object = json_object_object_get(config, "ColorBalanceRed");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 27:
-                       value_object = json_object_object_get(config, "ColorBalanceGreen");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 28:
-                       value_object = json_object_object_get(config, "ColorBalanceBlue");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 29:
-                       value_object = json_object_object_get(config, "ColorSharpen");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 30:
-                       value_object = json_object_object_get(config, "BinarizationContrast");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 33:
-                       value_object = json_object_object_get(config, "SkipBlankPages");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 34:
-                       value_object = json_object_object_get(config, "SkipBlankPagesContent");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
                case 35:
-                       value_object = json_object_object_get(config, "HoleFill");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 36:
-                       value_object = json_object_object_get(config, "PostScanRotation");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
-               case 37:
-                       value_object = json_object_object_get(config, "EdgeFill");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
-               case 38:
-                       value_object = json_object_object_get(config, "ImageBorder");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
-               case 39:
-                       value_object = json_object_object_get(config, "JpegQuality");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 41:
-                       value_object = json_object_object_get(config, "MaxDocumentLength");
-                       _kds_s2000w_handler_opts_write_int_value(value_object, value);
-                       break;
-               case 42:
-                       value_object = json_object_object_get(config, "TransportHandling");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
-               case 43:
-                       value_object = json_object_object_get(config, "MultifeedSensitivity");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
-               case 44:
-                       value_object = json_object_object_get(config, "MultifeedResponse");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                case 45:
-                       value_object = json_object_object_get(config, "DocumentFeederTimeout");
+                       value_object = json_object_object_get(config, descriptor->config_name);
                        _kds_s2000w_handler_opts_write_int_value(value_object, value);
                        break;
-               case 46:
-                       value_object = json_object_object_get(config, "DocumentFeederTimeoutResponse");
-                       _kds_s2000w_handler_opts_write_string_value(value_object, value);
-                       break;
                default:
                        break;
        }
index c5de03a47a70fc01284181508248de20ef025700..2c7dd97f6036ff95fa46f80cca33fea92d431efa 100644 (file)
@@ -2,9 +2,11 @@
 #include <string.h>
 #include "kds_s2000w_net_get_opt_tests.h"
 #include "../src/kds_s2000w_client.h"
+#include "../src/kds_s2000w_option_descriptors.h"
 
 int setup_default_get_option(void** state)
 {
+       kds_s2000w_option_descriptors_init();
        response* resp = kds_s2000w_client_response_init();
        const char* responsedata = "{ \
                \"Status\": { \
@@ -71,6 +73,7 @@ int setup_default_get_option(void** state)
 
 int teardown_default_get_option(void** state)
 {
+       kds_s2000w_option_descriptors_free();
        response* resp = (response*) *state;
        kds_s2000w_client_response_free(resp);
        resp = NULL;