]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add profile for backward compatibility
authorBastian Dehn <hhaalo@arcor.de>
Tue, 23 Sep 2025 14:05:39 +0000 (16:05 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 23 Sep 2025 14:05:39 +0000 (16:05 +0200)
src/kds_s2000w_handler_opts.c
src/kds_s2000w_net.conf
src/kds_s2000w_option_descriptors.c
src/kds_s2000w_option_descriptors.h

index 01990b6a4844c131914b95f739aaad5e1ed14173..e2d719b2ec9dfd286558a96e05b8f13ab48ec113 100644 (file)
@@ -180,21 +180,33 @@ void _kds_s2000w_handler_opts_set_enable_color_aggressiveness(json_object* confi
        color_balance_aggressivness->cap &= ~SANE_CAP_SOFT_SELECT;
 }
 
-void _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(json_object* config)
+void _kds_s2000w_handler_opts_set_enable_color_brightness(json_object* config)
 {
        json_object* color_auto_brightness_mode = json_object_object_get(config, "ColorAutoBrightnessMode");;
        const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
 
        SANE_Option_Descriptor* color_brightness = kds_s2000w_option_descriptors_get_by_name("color-brightness");
-       SANE_Option_Descriptor* color_constrast = kds_s2000w_option_descriptors_get_by_name("color-contrast");
 
        if (strcmp(color_auto_brightness_mode_value, "Manual") == 0) {
                color_brightness->cap |= SANE_CAP_SOFT_SELECT;
-               color_constrast->cap |= SANE_CAP_SOFT_SELECT;
                return;
        }
 
        color_brightness->cap &= ~SANE_CAP_SOFT_SELECT;
+}
+
+void _kds_s2000w_handler_opts_set_enable_color_contrast(json_object* config)
+{
+       json_object* color_auto_brightness_mode = json_object_object_get(config, "ColorAutoBrightnessMode");;
+       const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
+
+       SANE_Option_Descriptor* color_constrast = kds_s2000w_option_descriptors_get_by_name("color-contrast");
+
+       if (strcmp(color_auto_brightness_mode_value, "Manual") == 0) {
+               color_constrast->cap |= SANE_CAP_SOFT_SELECT;
+               return;
+       }
+
        color_constrast->cap &= ~SANE_CAP_SOFT_SELECT;
 }
 
@@ -267,7 +279,9 @@ void _kds_s2000w_handler_opts_set_info_option(option_descriptor* descriptor, int
                *info = RELOAD_OPTIONS | RELOAD_PARAMS;
 }
 
-void _kds_s2000w_handler_opts_set_depends_opts(const char* config_name, json_object* config)
+void _kds_s2000w_handler_opts_set_depends_opts(handler* h,
+       const char* config_name,
+       json_object* config)
 {
        if (strcmp(config_name, CROPPING_MODE) == 0) {
                _kds_s2000w_handler_opts_set_enable_cropping_image(config);
@@ -286,8 +300,11 @@ void _kds_s2000w_handler_opts_set_depends_opts(const char* config_name, json_obj
        if (strcmp(config_name, COLOR_DROP_OUT) == 0)
                _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(config);
 
-       if (strcmp(config_name, COLOR_AUTO_BRIGHTNESS_MODE) == 0)
-               _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(config);
+       if (strcmp(config_name, COLOR_AUTO_BRIGHTNESS_MODE) == 0
+               && h->profile == PROFILE_FULL) {
+               _kds_s2000w_handler_opts_set_enable_color_brightness(config);
+               _kds_s2000w_handler_opts_set_enable_color_contrast(config);
+       }
 
        if (strcmp(config_name, COLOR_BALANCE_MODE) == 0) {
                _kds_s2000w_handler_opts_set_enable_color_balance(config);
@@ -295,12 +312,15 @@ void _kds_s2000w_handler_opts_set_depends_opts(const char* config_name, json_obj
        }
 
        if (strcmp(config_name, RESET) == 0) {
-               _kds_s2000w_handler_opts_set_enable_cropping_image(config);
-               _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config);
+               if (h->profile == PROFILE_FULL) {
+                       _kds_s2000w_handler_opts_set_enable_cropping_image(config);
+                       _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config);
+                       _kds_s2000w_handler_opts_set_enable_color_brightness(config);
+                       _kds_s2000w_handler_opts_set_enable_color_contrast(config);
+               }
                _kds_s2000w_handler_opts_set_enable_boldness_aggressiveness(config);
                _kds_s2000w_handler_opts_set_enable_smoothing_aggressiveness(config);
                _kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(config);
-               _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(config);
                _kds_s2000w_handler_opts_set_enable_color_aggressiveness(config);
                _kds_s2000w_handler_opts_set_enable_color_balance(config);
        }
@@ -387,8 +407,8 @@ void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value
                _kds_s2000w_handler_opts_set_autostart_on(config);
        }
 
-       if (h->profile == PROFILE_FULL)
-               _kds_s2000w_handler_opts_set_depends_opts(descriptor->config_name, config);
+       if (h->profile > PROFILE_MIN)
+               _kds_s2000w_handler_opts_set_depends_opts(h, descriptor->config_name, config);
 
        _kds_s2000w_handler_opts_set_info_option(descriptor, info);
        _kds_s2000w_handler_opts_set_options(h);
index 77f0d1d3d522772ec9719f0c78ee3c042d48fbb2..57752cae3cb5f3623792b13cf066af52cccec319 100644 (file)
@@ -1,7 +1,10 @@
 scanner_url = "https://scanner.example.com"
 username = "muster"
 
-# profile: 0=FULL 1=MIN
+# profiles
+# 0=PROFILE_FULL
+# 1=PROFILE_230802_V1_0_36
+# 2=PROFILE_MIN
 profile = 1
 
 # log levels: 0=OFF, 1=FATAL, 2=ERROR, 3=WARN, 4=INFO, 5=DEBUG, 6=ALL
index 06b1ba7b6ba4c88887b6d018e972f9d8c3c6d810..78a0fa286da9a49ad9768455632fea6482d99c55 100644 (file)
@@ -4,8 +4,9 @@
 #include "kds_s2000w_option_descriptors.h"
 #include "kds_s2000w_debug.h"
 
-#define FULL_PROFILE_MAX_OPTION_COUNT 47
-#define MIN_PROFILE_MAX_OPTION_COUNT 9
+#define PROFILE_FULL_MAX_OPTION_COUNT 47
+#define PROFILE_230802_V1_0_36_MAX_OPTION_COUNT 24
+#define PROFILE_MIN_MAX_OPTION_COUNT 10
 
 option_descriptor** descriptors = NULL;
 uint8_t max_option_count = 0;
@@ -1113,7 +1114,7 @@ SANE_Option_Descriptor _kds_s2000w_option_descriptor_feeder_group()
 
 void _kds_s2000w_option_descriptors_init_min_profile()
 {
-       max_option_count = MIN_PROFILE_MAX_OPTION_COUNT;
+       max_option_count = PROFILE_MIN_MAX_OPTION_COUNT;
 
        descriptors = malloc(sizeof(option_descriptor*) * max_option_count);
        for (int i = 0; i < max_option_count; i++) {
@@ -1136,13 +1137,74 @@ void _kds_s2000w_option_descriptors_init_min_profile()
        descriptors[6]->descriptor = _kds_s2000w_option_descriptor_color_drop();
        descriptors[7]->config_name = RESET;
        descriptors[7]->descriptor = _kds_s2000w_option_descriptor_config_reset();
-       descriptors[8]->config_name = SKIP_BLANK_PAGES;
-       descriptors[8]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages();
+       descriptors[8]->config_name = IMAGE_PROCESSING_GROUP;
+       descriptors[8]->descriptor = _kds_s2000w_option_descriptor_image_processing_group();
+       descriptors[9]->config_name = SKIP_BLANK_PAGES;
+       descriptors[9]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages();
+}
+
+void _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile()
+{
+       max_option_count = PROFILE_230802_V1_0_36_MAX_OPTION_COUNT;
+
+       descriptors = malloc(sizeof(option_descriptor*) * max_option_count);
+       for (int i = 0; i < max_option_count; i++) {
+               descriptors[i] = malloc(sizeof(option_descriptor));
+       }
+
+       descriptors[0]->config_name = OPTION_COUNT;
+       descriptors[0]->descriptor = _kds_s2000w_option_descriptor_num_options();
+       descriptors[1]->config_name = STANDARD_GROUP;
+       descriptors[1]->descriptor = _kds_s2000w_option_descriptor_standard_group();
+       descriptors[2]->config_name = SCAN_SOURCE;
+       descriptors[2]->descriptor = _kds_s2000w_option_descriptor_scan_source();
+       descriptors[3]->config_name = COLOR_MODE;
+       descriptors[3]->descriptor = _kds_s2000w_option_descriptor_color_mode();
+       descriptors[4]->config_name = DPI;
+       descriptors[4]->descriptor = _kds_s2000w_option_descriptor_dpi();
+       descriptors[5]->config_name = SCAN_SIDE;
+       descriptors[5]->descriptor = _kds_s2000w_option_descriptor_scanside();
+       descriptors[6]->config_name = BOLDNESS_SMOOTHING_GROUP;
+       descriptors[6]->descriptor = _kds_s2000w_option_descriptor_boldness_smoothing_group();
+       descriptors[7]->config_name = FOREGROUND_BOLDNESS_MODE;
+       descriptors[7]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_mode();
+       descriptors[8]->config_name = FOREGROUND_BOLDNESS_AGGRESSIVENESS;
+       descriptors[8]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness();
+       descriptors[9]->config_name = BACKGROUND_SMOOTHING_MODE;
+       descriptors[9]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_mode();
+       descriptors[10]->config_name = BACKGROUND_SMOOTHING_AGGRESSIVENESS;
+       descriptors[10]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness();
+       descriptors[11]->config_name = BOLDNESS_COLOR_GROUP;
+       descriptors[11]->descriptor = _kds_s2000w_option_descriptor_boldness_color_group();
+       descriptors[12]->config_name = COLOR_DROP_OUT;
+       descriptors[12]->descriptor = _kds_s2000w_option_descriptor_color_drop();
+       descriptors[13]->config_name = COLOR_DROP_OUT_AGGRESSIVENESS;
+       descriptors[13]->descriptor = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness();
+       descriptors[14]->config_name = COLOR_AUTO_BRIGHTNESS_MODE;
+       descriptors[14]->descriptor = _kds_s2000w_option_descriptor_color_auto_brightness_mode();
+       descriptors[15]->config_name = COLOR_BALANCE_MODE;
+       descriptors[15]->descriptor = _kds_s2000w_option_descriptor_color_balance_mode();
+       descriptors[16]->config_name = COLOR_BALANCE_AGGRESSIVENESS;
+       descriptors[16]->descriptor = _kds_s2000w_option_descriptor_color_balance_agressiveness();
+       descriptors[17]->config_name = COLOR_BALANCE_RED;
+       descriptors[17]->descriptor = _kds_s2000w_option_descriptor_color_balance_red();
+       descriptors[18]->config_name = COLOR_BALANCE_GREEN;
+       descriptors[18]->descriptor = _kds_s2000w_option_descriptor_color_balance_green();
+       descriptors[19]->config_name = COLOR_BALANCE_BLUE;
+       descriptors[19]->descriptor = _kds_s2000w_option_descriptor_color_balance_blue();
+       descriptors[20]->config_name = BINARIZATION_CONTRAST;
+       descriptors[20]->descriptor = _kds_s2000w_option_descriptor_binarization_contrast();
+       descriptors[21]->config_name = RESET;
+       descriptors[21]->descriptor = _kds_s2000w_option_descriptor_config_reset();
+       descriptors[22]->config_name = IMAGE_PROCESSING_GROUP;
+       descriptors[22]->descriptor = _kds_s2000w_option_descriptor_image_processing_group();
+       descriptors[23]->config_name = SKIP_BLANK_PAGES;
+       descriptors[23]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages();
 }
 
 void _kds_s2000w_option_descriptors_init_full_profile()
 {
-       max_option_count = FULL_PROFILE_MAX_OPTION_COUNT;
+       max_option_count = PROFILE_FULL_MAX_OPTION_COUNT;
 
        descriptors = malloc(sizeof(option_descriptor*) * max_option_count);
        for (int i = 0; i < max_option_count; i++) {
@@ -1254,6 +1316,11 @@ void kds_s2000w_option_descriptors_init(uint8_t profile)
                return;
        }
 
+       if (profile == PROFILE_230802_V1_0_36) {
+               _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile();
+               return;
+       }
+
        _kds_s2000w_option_descriptors_init_min_profile();
 }
 
index 8cccd19c13fc3903390352bd8d3984c61797213a..d8388083ebc6a806a451c589c06cef7ce86ab856 100644 (file)
@@ -59,6 +59,7 @@
 
 enum {
        PROFILE_MIN,
+       PROFILE_230802_V1_0_36,
        PROFILE_FULL
 };