From 12056231d616df733c1ff60475cb20b3e6d281ce Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Mon, 22 Sep 2025 08:28:19 +0200 Subject: [PATCH] optimize read options --- src/kds_s2000w_handler_opts.c | 147 +++-------------------- tests/kds_s2000w_net_get_opt_tests_run.c | 3 + 2 files changed, 23 insertions(+), 127 deletions(-) diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index 7737c66..e37a306 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -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; } diff --git a/tests/kds_s2000w_net_get_opt_tests_run.c b/tests/kds_s2000w_net_get_opt_tests_run.c index c5de03a..2c7dd97 100644 --- a/tests/kds_s2000w_net_get_opt_tests_run.c +++ b/tests/kds_s2000w_net_get_opt_tests_run.c @@ -2,9 +2,11 @@ #include #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; -- 2.47.3