From: Bastian Dehn Date: Thu, 26 Mar 2026 16:50:17 +0000 (+0100) Subject: init only init available options X-Git-Tag: v1.1.25^2~3^2~3 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=f5cea19031e17685c353019bdeb7a44fe7cfb5d9;p=sane-kds-s2000w-net.git init only init available options --- diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index dac032e..01c6b12 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -96,6 +96,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_num_options(const mask_option ******************************************************************************/ option_descriptor_t* _kds_s2000w_option_descriptor_standard_group(const mask_option_t* mask) { + if (mask->standard_group == 0) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -115,6 +118,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_standard_group(const mask_opt option_descriptor_t* _kds_s2000w_option_descriptor_scan_source(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->standard_group, BIT_SCAN_SOURCE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -146,6 +152,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_scan_source(const mask_option option_descriptor_t* _kds_s2000w_option_descriptor_color_mode(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->standard_group, BIT_COLOR_MODE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -177,6 +186,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_mode(const mask_option_ option_descriptor_t* _kds_s2000w_option_descriptor_dpi(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->standard_group, BIT_DPI)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -210,6 +222,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_dpi(const mask_option_t* mask option_descriptor_t* _kds_s2000w_option_descriptor_scanside(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->standard_group, BIT_SCAN_SIDE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -243,6 +258,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_scanside(const mask_option_t* ******************************************************************************/ option_descriptor_t* _kds_s2000w_option_descriptor_geometry_group(const mask_option_t* mask) { + if (GEOMETRY_GROUP == 0) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -262,6 +280,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_geometry_group(const mask_opt option_descriptor_t* _kds_s2000w_option_descriptor_cropping_mode(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->geometry_group, BIT_CROPPING_MODE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -294,6 +315,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_cropping_mode(const mask_opti option_descriptor_t* _kds_s2000w_option_descriptor_cropping_image(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->geometry_group, BIT_CROPPING_IMAGE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -324,6 +348,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_cropping_image(const mask_opt option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_x(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_OFFSET_X)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -354,6 +381,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_x(const mask_opt option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_y(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_OFFSET_Y)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -384,6 +414,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_y(const mask_opt option_descriptor_t* _kds_s2000w_option_descriptor_image_width(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_WIDTH)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -414,6 +447,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_image_width(const mask_option option_descriptor_t* _kds_s2000w_option_descriptor_image_height(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_HEIGHT)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -447,6 +483,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_image_height(const mask_optio ******************************************************************************/ option_descriptor_t* _kds_s2000w_option_descriptor_boldness_smoothing_group(const mask_option_t* mask) { + if (mask->boldness_smoothing_group == 0) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -466,6 +505,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_boldness_smoothing_group(cons option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_mode(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_FOREGROUND_BOLDNESS_MODE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -497,6 +539,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_mode(cons option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_FOREGROUND_BOLDNESS_AGGRESSIVENESS)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -527,6 +572,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_aggressiv option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_mode(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_BACKGROUND_SMOOTHING_MODE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -558,6 +606,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_mode(con option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_BACKGROUND_SMOOTHING_AGGRESSIVENESS)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -591,6 +642,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_aggressi ******************************************************************************/ option_descriptor_t* _kds_s2000w_option_descriptor_boldness_color_group(const mask_option_t* mask) { + if (mask->boldness_color_group == 0) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -610,6 +664,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_boldness_color_group(const ma option_descriptor_t* _kds_s2000w_option_descriptor_color_drop(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_DROP_OUT)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -646,6 +703,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_drop(const mask_option_ option_descriptor_t* _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_DROP_OUT_AGGRESSIVENESS)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -676,6 +736,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_drop_out_aggressiveness option_descriptor_t* _kds_s2000w_option_descriptor_color_auto_brightness_mode(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_AUTO_BRIGHTNESS_MODE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -707,6 +770,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_auto_brightness_mode(co option_descriptor_t* _kds_s2000w_option_descriptor_color_brightness(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BRIGHTNESS)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -737,6 +803,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_brightness(const mask_o option_descriptor_t* _kds_s2000w_option_descriptor_color_contrast(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_CONTRAST)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -767,6 +836,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_contrast(const mask_opt option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_mode(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_MODE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -799,6 +871,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_mode(const mask option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_agressiveness(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_AGGRESSIVENESS)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -829,6 +904,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_agressiveness(c option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_red(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_RED)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -859,6 +937,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_red(const mask_ option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_green(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_GREEN)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -889,6 +970,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_green(const mas option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_blue(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_BLUE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -919,6 +1003,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_blue(const mask option_descriptor_t* _kds_s2000w_option_descriptor_color_sharpen(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_SHARPEN)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -951,6 +1038,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_color_sharpen(const mask_opti option_descriptor_t* _kds_s2000w_option_descriptor_binarization_contrast(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_BINARIZATION_CONTRAST)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -981,6 +1071,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_binarization_contrast(const m option_descriptor_t* _kds_s2000w_option_descriptor_config_reset(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->boldness_color_group, BIT_RESET)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1003,6 +1096,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_config_reset(const mask_optio ******************************************************************************/ option_descriptor_t* _kds_s2000w_option_descriptor_image_processing_group(const mask_option_t* mask) { + if (mask->image_processing_group == 0) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1022,6 +1118,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_image_processing_group(const option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_pages(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_SKIP_BLANK_PAGES)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1041,6 +1140,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_pages(const mask_o option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_page_content(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_SKIP_BLANK_PAGES_CONTENT)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1071,6 +1173,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_page_content(const option_descriptor_t* _kds_s2000w_option_descriptor_hole_fill(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_HOLE_FILL)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1090,6 +1195,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_hole_fill(const mask_option_t option_descriptor_t* _kds_s2000w_option_descriptor_post_scan_rotation(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_POST_SCAN_ROTATION)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1123,6 +1231,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_post_scan_rotation(const mask option_descriptor_t* _kds_s2000w_option_descriptor_edge_fill(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_EDGE_FILL)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1154,6 +1265,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_edge_fill(const mask_option_t option_descriptor_t* _kds_s2000w_option_descriptor_image_border(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_IMAGE_BORDER)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1185,6 +1299,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_image_border(const mask_optio option_descriptor_t* _kds_s2000w_option_descriptor_jpeg_quality(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->image_processing_group, BIT_JPEG_QUALITY)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1221,6 +1338,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_jpeg_quality(const mask_optio ******************************************************************************/ option_descriptor_t* _kds_s2000w_option_descriptor_feeder_group(const mask_option_t* mask) { + if (mask->feeder_group == 0) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1240,6 +1360,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_feeder_group(const mask_optio option_descriptor_t* _kds_s2000w_option_descriptor_autostart(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_AUTOSTART)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1259,6 +1382,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_autostart(const mask_option_t option_descriptor_t* _kds_s2000w_option_descriptor_max_document_length(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_MAX_DOCUMENT_LENGTH)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1289,6 +1415,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_max_document_length(const mas option_descriptor_t* _kds_s2000w_option_descriptor_transport_handling(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_TRANSPORT_HANDLING)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1321,6 +1450,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_transport_handling(const mask option_descriptor_t* _kds_s2000w_option_descriptor_multifeed_sensitivity(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_MULTIFEED_SENSITIVITY)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1353,6 +1485,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_multifeed_sensitivity(const m option_descriptor_t *_kds_s2000w_option_descriptor_multifeed_response(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_MULTIFEED_RESPONSE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1383,6 +1518,9 @@ option_descriptor_t *_kds_s2000w_option_descriptor_multifeed_response(const mask option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_DOCUMENT_FEEDER_TIMEOUT)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1413,6 +1551,9 @@ option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout(const option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout_response(const mask_option_t* mask) { + if (!EXISTS_OPTION(mask->feeder_group, BIT_DOCUMENT_FEEDER_TIMEOUT_RESPONSE)) + return NULL; + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; @@ -1501,9 +1642,19 @@ SANE_Status _kds_s2000w_option_descriptor_init_profile(descriptor_fn* fn, size_t return SANE_STATUS_NO_MEM; } - for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) { - kds_s2000w_option_descriptors->descriptors[i] = fn[i](mask); + kds_s2000w_option_descriptors->descriptors[i] = NULL; + } + + option_descriptor_t* option = NULL; + size_t option_count = 0; + for (size_t i = 0; i < MAX_AVAILABLE_OPTIONS; i++) { + option = fn[i](mask); + if (option != NULL) + kds_s2000w_option_descriptors->descriptors[option_count++] = option; + + if (option_count >= kds_s2000w_option_descriptors->size) + break; } return _kds_s2000w_option_descriptor_validate(); diff --git a/src/kds_s2000w_option_descriptors.h b/src/kds_s2000w_option_descriptors.h index ab65f7a..8eb75c1 100644 --- a/src/kds_s2000w_option_descriptors.h +++ b/src/kds_s2000w_option_descriptors.h @@ -7,7 +7,7 @@ * option bitmasks ******************************************************************************/ -#define EXISTS_OPTION(group, option_bit) group >> option_bit & 1 +#define EXISTS_OPTION(group, option_bit) (group >> option_bit & 1) #define BIT_SCAN_SOURCE 0 #define BIT_COLOR_MODE 1 diff --git a/tests/kds_s2000w_option_descriptor_tests.c b/tests/kds_s2000w_option_descriptor_tests.c index fc473bc..01bd15f 100644 --- a/tests/kds_s2000w_option_descriptor_tests.c +++ b/tests/kds_s2000w_option_descriptor_tests.c @@ -909,6 +909,31 @@ void kds_s2000w_option_init_descriptor_no_mem_test() } } +void kds_s2000w_option_get_min_profile_from_mask() +{ + kds_s2000w_option_descriptors_free(); + mask_option_t* mask = malloc(sizeof(mask_option_t)); + if (mask == NULL) + return; + memset(mask, 0, sizeof(mask_option_t)); + mask->standard_group = 1 << BIT_DPI; + kds_s2000w_option_descriptors_init(mask); + free(mask); + mask = NULL; + + option_descriptor_t* option_count = kds_s2000w_option_descriptors_full_get_by_number(0); + option_descriptor_t* std_group = kds_s2000w_option_descriptors_full_get_by_number(1); + option_descriptor_t* dpi = kds_s2000w_option_descriptors_full_get_by_number(2); + option_descriptor_t* unkown = kds_s2000w_option_descriptors_full_get_by_number(3); + + assert_string_equal(option_count->config_name, OPTION_COUNT); + assert_string_equal(std_group->config_name, STANDARD_GROUP); + assert_string_equal(dpi->config_name, DPI); + assert_null(unkown); + + kds_s2000w_option_descriptors_free(); +} + int main() { const struct CMUnitTest option_descriptor_tests[] = { @@ -965,7 +990,8 @@ int main() cmocka_unit_test(kds_s2000w_option_full_get_descriptor_by_number), cmocka_unit_test(kds_s2000w_option_full_get_descriptor_over_max_options_test), cmocka_unit_test(kds_s2000w_option_get_unknown_descriptor_test), - cmocka_unit_test(kds_s2000w_option_init_descriptor_no_mem_test) + cmocka_unit_test(kds_s2000w_option_init_descriptor_no_mem_test), + cmocka_unit_test(kds_s2000w_option_get_min_profile_from_mask) }; return cmocka_run_group_tests(option_descriptor_tests, setup, teardown);