From: Bastian Dehn Date: Sun, 16 Feb 2025 17:14:56 +0000 (+0100) Subject: add get option descriptor by name X-Git-Tag: v1.1.0^2~4^2~12 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=3ff9d97a68f3a5927b3abc864f4864924326cdda;p=sane-kds-s2000w-net.git add get option descriptor by name --- diff --git a/src/kds_s2000w_handler_opts.c b/src/kds_s2000w_handler_opts.c index e34f9ce..7af8c73 100644 --- a/src/kds_s2000w_handler_opts.c +++ b/src/kds_s2000w_handler_opts.c @@ -96,9 +96,9 @@ void _kds_s2000w_handler_opts_set_options(handler* h) resp = NULL; } -void _kds_s2000w_handler_opts_set_cropping_image_value(json_object* value_object, void* value) +void _kds_s2000w_handler_opts_set_soft_select_cropping_image(json_object* value_object, void* value) { - SANE_Option_Descriptor* cropping_image = kds_s2000w_option_descriptors_get(32); + SANE_Option_Descriptor* cropping_image = kds_s2000w_option_descriptors_get_by_name("cropping-image"); cropping_image->cap |= SANE_CAP_SOFT_SELECT; if (strcmp(value, "Automatic") == 0) { @@ -423,7 +423,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value _kds_s2000w_handler_opts_write_string_value_to_json(value_object, value); value_object = json_object_object_get(config, "CroppingImage"); - _kds_s2000w_handler_opts_set_cropping_image_value(value_object, value); + _kds_s2000w_handler_opts_set_soft_select_cropping_image(value_object, value); if (info != NULL) *info = RELOAD_OPTIONS; @@ -448,7 +448,7 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value _kds_s2000w_handler_opts_set_option_to_default(h); _kds_s2000w_handler_opts_set_autostart_on(h); - SANE_Option_Descriptor* cropping_image = kds_s2000w_option_descriptors_get(32); + SANE_Option_Descriptor* cropping_image = kds_s2000w_option_descriptors_get_by_name("cropping-image"); cropping_image->cap |= SANE_CAP_SOFT_SELECT; if (info != NULL) diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index 974286a..0c3a229 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -1,4 +1,5 @@ #include +#include #include #include "kds_s2000w_option_descriptors.h" #include "kds_s2000w_debug.h" @@ -973,4 +974,16 @@ SANE_Option_Descriptor* kds_s2000w_option_descriptors_get(uint32_t option) return NULL; return &descriptor_array[option]; +} + +SANE_Option_Descriptor* kds_s2000w_option_descriptors_get_by_name(const char* name) +{ + kds_s2000w_debug_printf(ALL, "kds_s2000w_option_descriptor_get_by_name"); + + for (int i = 0; i < MAX_OPTION_COUNT; i++) { + if (strcmp(descriptor_array[i].name, name) == 0) + return &descriptor_array[i]; + } + + return NULL; } \ No newline at end of file diff --git a/src/kds_s2000w_option_descriptors.h b/src/kds_s2000w_option_descriptors.h index edced05..b99e4ab 100644 --- a/src/kds_s2000w_option_descriptors.h +++ b/src/kds_s2000w_option_descriptors.h @@ -7,5 +7,6 @@ void kds_s2000w_option_descriptors_init(); void kds_s2000w_option_descriptors_free(); SANE_Option_Descriptor* kds_s2000w_option_descriptors_get(uint32_t option); +SANE_Option_Descriptor* kds_s2000w_option_descriptors_get_by_name(const char* name); #endif \ No newline at end of file diff --git a/tests/kds_s2000w_option_descriptor_tests.c b/tests/kds_s2000w_option_descriptor_tests.c index 1d2e375..91b1e5f 100644 --- a/tests/kds_s2000w_option_descriptor_tests.c +++ b/tests/kds_s2000w_option_descriptor_tests.c @@ -663,6 +663,13 @@ void kds_s2000w_option_get_descriptor_thirdysix_test() assert_int_equal(SANE_CONSTRAINT_NONE, option->constraint_type); } +void kds_s2000w_option_get_descriptor_get_by_name_test() +{ + SANE_Option_Descriptor* option = kds_s2000w_option_descriptors_get_by_name("config-reset"); + + assert_string_equal(option->name, "config-reset"); +} + void kds_s2000w_option_get_descriptor_over_max_options_test() { SANE_Option_Descriptor* option = kds_s2000w_option_descriptors_get(MAX_OPTION_COUNT); diff --git a/tests/kds_s2000w_option_descriptor_tests.h b/tests/kds_s2000w_option_descriptor_tests.h index f08c767..6f76784 100644 --- a/tests/kds_s2000w_option_descriptor_tests.h +++ b/tests/kds_s2000w_option_descriptor_tests.h @@ -45,5 +45,6 @@ void kds_s2000w_option_get_descriptor_thirdythree_test(); void kds_s2000w_option_get_descriptor_thirdyfour_test(); void kds_s2000w_option_get_descriptor_thirdyfive_test(); void kds_s2000w_option_get_descriptor_thirdysix_test(); +void kds_s2000w_option_get_descriptor_get_by_name_test(); void kds_s2000w_option_get_descriptor_over_max_options_test(); #endif \ No newline at end of file diff --git a/tests/kds_s2000w_option_descriptor_tests_run.c b/tests/kds_s2000w_option_descriptor_tests_run.c index eaac382..e782077 100644 --- a/tests/kds_s2000w_option_descriptor_tests_run.c +++ b/tests/kds_s2000w_option_descriptor_tests_run.c @@ -40,6 +40,7 @@ int main() cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_thirdyfour_test, setup, teardown), cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_thirdyfive_test, setup, teardown), cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_thirdysix_test, setup, teardown), + cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_get_by_name_test, setup, teardown), cmocka_unit_test_setup_teardown(kds_s2000w_option_get_descriptor_over_max_options_test, setup, teardown), };