]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
remove params from handler
authorBastian Dehn <hhaalo@arcor.de>
Sat, 21 Dec 2024 17:53:40 +0000 (18:53 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 21 Dec 2024 17:53:40 +0000 (18:53 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_handler_opts.c
src/kds_s2000w_net.c
tests/kds_s2000w_net_read_tests.c
tests/kds_s2000w_net_tests.c
tests/kds_s2000w_net_tests.h
tests/kds_s2000w_net_tests_run.c

index 55d8d799d598e1b4840c69fd84339c0cb628d39e..db9aa184e7f74122005014120d06e60bc2cc3033 100644 (file)
@@ -20,7 +20,6 @@ handler* init_handler()
        handler* h = malloc(sizeof(handler));
        h->current_scanner_config = NULL;
        h->current_scan_status = malloc(sizeof(scanstatus));
-       h->current_metadata = malloc(sizeof(metadata));
        h->read_info = malloc(sizeof(readinfo));
        h->image = malloc(sizeof(imagedata));
 
@@ -32,11 +31,6 @@ handler* init_handler()
        h->current_scan_status->downloaded_images = 0;
        h->current_scan_status->complete_scanned = 0;
        h->current_scan_status->feeder = 1;
-       h->current_metadata->format = 1;
-       h->current_metadata->bytes_per_line = 0;
-       h->current_metadata->pixels_per_line = 0;
-       h->current_metadata->lines = 0;
-       h->current_metadata->depth = 8;
        h->read_info->scan_started = 0;
        h->read_info->cancel = 0;
        h->read_info->read_size = 0;
@@ -58,8 +52,6 @@ void free_handler(handler* h)
        h->current_scanner_config = NULL;
        free(h->current_scan_status);
        h->current_scan_status = NULL;
-       free(h->current_metadata);
-       h->current_metadata = NULL;
        free(h->read_info);
        h->read_info = NULL;
        free(h->image->data);
@@ -85,11 +77,6 @@ void reset_handler(handler* h)
        h->current_scan_status->available_images = 0;
        h->current_scan_status->downloaded_images = 0;
        h->current_scan_status->complete_scanned = 0;
-       h->current_metadata->format = 1;
-       h->current_metadata->bytes_per_line = 0;
-       h->current_metadata->pixels_per_line = 0;
-       h->current_metadata->lines = 0;
-       h->current_metadata->depth = 8;
        h->read_info->scan_started = 0;
        h->read_info->cancel = 0;
        h->read_info->read_size = 0;
@@ -97,16 +84,37 @@ void reset_handler(handler* h)
        h->read_info->readed_lines = 0;
 }
 
-void kds_s2000w_handler_get_current_metadata(handler* h)
+void kds_s2000w_handler_get_current_metadata(handler* h, metadata* params)
 {
 #ifndef NODEBUG
        debug_printf(ALL, "get_current_metadata");
 #endif
 
-       image_metadata* mdata = malloc(sizeof(image_metadata));
+       params->format = 1;
+       params->last_frame = 1;
+       params->bytes_per_line = 0;
+       params->pixels_per_line = 0;
+       params->lines = 0;
+       params->depth = 8;
+
        json_object* config = json_object_object_get(h->current_scanner_config, "Configuration");
        json_object* metadata = json_object_object_get(config, "ColorMode");
        const char* color_value = json_object_get_string(metadata);
+
+       if (strcmp(color_value, "Color") == 0)
+               params->format = 1;
+
+       if (strcmp(color_value, "Gray") == 0)
+               params->format = 0;
+
+       if (strcmp(color_value, "BW") == 0)
+               params->format = 0;
+
+       if (h->image->size < 1)
+               return;
+
+       image_metadata* mdata = malloc(sizeof(image_metadata));
+
        blobdata* image = (blobdata*) h->image;
        blobdata* scanner_image = malloc(sizeof(blobdata));
        int channels = 1;
@@ -118,27 +126,17 @@ void kds_s2000w_handler_get_current_metadata(handler* h)
        image->data = NULL;
        image->data = 0;
 
-
-       if (strcmp(color_value, "Color") == 0)
-               h->current_metadata->format = 1;
-
-       if (strcmp(color_value, "Gray") == 0)
-               h->current_metadata->format = 0;
-
-       if (strcmp(color_value, "BW") == 0)
-               h->current_metadata->format = 0;
-
-       if (h->current_metadata->format == 1)
+       if (params->format == 1)
                channels = 3;
 
        kds_s2000w_metadata_from_image(scanner_image, mdata);
-       h->current_metadata->depth = mdata->depth;
-       h->current_metadata->pixels_per_line = mdata->width;
-       h->current_metadata->lines = mdata->height;
+       params->depth = mdata->depth;
+       params->pixels_per_line = mdata->width;
+       params->lines = mdata->height;
 
-       if (h->current_metadata->depth > 8) {
-               h->current_metadata->depth = 8;
-               kds_s2000w_convert_jpg_to_pnm_with_depth(scanner_image, image, h->current_metadata->depth);
+       if (params->depth > 8) {
+               params->depth = 8;
+               kds_s2000w_convert_jpg_to_pnm_with_depth(scanner_image, image, params->depth);
        } else {
                kds_s2000w_convert_tiff_to_pnm(scanner_image, image);
        }
@@ -147,11 +145,10 @@ void kds_s2000w_handler_get_current_metadata(handler* h)
        debug_printf_int(DEBUG, "size of pnm image", image->size);
 #endif
 
-       if (h->current_metadata->depth == 1)
-               h->current_metadata->bytes_per_line = channels * floor((h->current_metadata->pixels_per_line + 7) / 8);
+       if (params->depth == 1)
+               params->bytes_per_line = channels * floor((params->pixels_per_line + 7) / 8);
        else
-               h->current_metadata->bytes_per_line = channels * h->current_metadata->pixels_per_line * h->current_metadata->depth / 8;
-
+               params->bytes_per_line = channels * params->pixels_per_line * params->depth / 8;
        
        metadata = NULL;
        free(mdata);
index 63cc2c0758cbf43f12dc58662e6de5d7b7939af8..f79b25669777c6f12a53f0761ac3a67e4db62405 100644 (file)
@@ -20,6 +20,7 @@ typedef struct {
 
 typedef struct {
        int format;
+       int last_frame;
        int bytes_per_line;
        int pixels_per_line;
        int lines;
@@ -48,7 +49,6 @@ typedef struct {
        int state;
        json_object* current_scanner_config;
        scanstatus* current_scan_status;
-       metadata* current_metadata;
        readinfo* read_info;
        imagedata* image;
 } handler;
@@ -56,7 +56,7 @@ typedef struct {
 handler* init_handler();
 void free_handler(handler* h);
 void reset_handler(handler* h);
-void kds_s2000w_handler_get_current_metadata(handler* h);
+void kds_s2000w_handler_get_current_metadata(handler* h, metadata* params);
 void kds_s2000w_handler_delete_current_image(handler* h);
 void kds_s2000w_handler_download_current_image(handler* h);
 void kds_s2000w_net_handler_get_current_scan_status(handler* h);
index c00736781a4813856c817d201aaa1ee4985e0033..726252d588165dc50a352b65f49078dcbd2eae65 100644 (file)
@@ -91,9 +91,6 @@ void _set_option_to_default(handler* h)
        resp = NULL;
        json_object_put(capabilities);
        capabilities = NULL;
-
-       h->current_metadata->format = 1;
-       h->current_metadata->depth = 8;
 }
 
 void _set_options(handler* h)
@@ -260,22 +257,6 @@ void kds_s2000w_handler_set_option(handler* h, int option, void* value, int* inf
                        value_object = json_object_object_get(config, "ColorMode");
                        _write_string_value_to_json(value_object, value);
                        value_object = NULL;
-
-                       char* str_Value = (char*) value;
-                       if (strcmp(str_Value, "Color") == 0) {
-                               h->current_metadata->format = 1;
-                               h->current_metadata->depth = 8;
-                       } else if (strcmp(str_Value, "Gray") == 0) {
-                               h->current_metadata->format = 0;
-                               h->current_metadata->depth = 8;
-                       } else {
-                               h->current_metadata->format = 0;
-                               h->current_metadata->depth = 1;
-                       }
-
-                       if (info != NULL)
-                               *info = RELOAD_PARAMS | RELOAD_OPTIONS;
-
                        break;
                case 4:
                        value_object = json_object_object_get(config, "DPI");
index d593a3ed18c59ddfa33fe2f562e0c3c72bb1e1b7..4ed09689d7e6b3e101a352eead3397119d978453 100644 (file)
@@ -166,12 +166,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
                return SANE_STATUS_CANCELLED;
        }
 
-       params->format = h->current_metadata->format;
-       params->last_frame = 1;
-       params->bytes_per_line = h->current_metadata->bytes_per_line;
-       params->pixels_per_line = h->current_metadata->pixels_per_line;
-       params->lines = h->current_metadata->lines;
-       params->depth = h->current_metadata->depth;
+       kds_s2000w_handler_get_current_metadata(h, (metadata*) params);
 
        h->read_info->read_size = 0;
        h->read_info->readed_bytes_per_line = 0;
@@ -221,7 +216,6 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle)
        }
 
        kds_s2000w_handler_download_current_image(h);
-       kds_s2000w_handler_get_current_metadata(h);
        kds_s2000w_handler_delete_current_image(h);
        h->current_scan_status->current_image_number++;
 
index 3a11696178f11cc8eb66f2bec14766cc5d3c438e..27f234a92389dc16680f307ae65760d1114b4d4d 100644 (file)
@@ -184,7 +184,6 @@ void sane_kds_s2000w_net_read_bytes_per_line_bigger_test()
        handler* h = init_handler();
        h->read_info->cancel = 0;
        h->read_info->read_size = 0;
-       h->current_metadata->format = 0;
        h->image->size = 95003;
        h->image->data = malloc(sizeof(char) * 95003);
        char* image = (char*) h->image->data;
index cd40fd8f68c2b4bf06f2b287fcfcdf2128aa6406..a816958de8a7e675d97a3b14b9af02aab6e4985c 100644 (file)
@@ -27,31 +27,6 @@ void __wrap_wait_a_second()
        return;
 }
 
-void kds_s2000w_net_get_parameters_with_image_data()
-{
-       handler* h = init_handler();
-       h->read_info->scan_started = 1;
-       h->current_metadata->format = 1;
-       h->current_metadata->bytes_per_line = 42;
-       h->current_metadata->pixels_per_line = 1080;
-       h->current_metadata->lines = 100;
-       h->current_metadata->depth = 8;
-       SANE_Parameters params;
-
-       SANE_Status status = _sane_kds_s2000w_net_get_parameters(h, &params);
-
-       assert_int_equal(params.format, 1);
-       assert_int_equal(params.last_frame, 1);
-       assert_int_equal(params.bytes_per_line, 42);
-       assert_int_equal(params.pixels_per_line, 1080);
-       assert_int_equal(params.lines, 100);
-       assert_int_equal(params.depth, 8);
-       assert_int_equal(status, SANE_STATUS_GOOD);
-
-       free_handler(h);
-       h = NULL;
-}
-
 void kds_s2000w_net_get_devices()
 {
        SANE_Device*** device_list = malloc(sizeof(SANE_Device**));
@@ -164,10 +139,6 @@ void sane_kds_s2000w_net_start(void** state)
 
        assert_int_equal(result, SANE_STATUS_GOOD);
        assert_int_equal(h->current_scan_status->complete_scanned, 0);
-       assert_int_equal(h->current_metadata->depth, 8);
-       assert_int_equal(h->current_metadata->format, 1);
-       assert_int_equal(h->current_metadata->pixels_per_line, 2);
-       assert_int_equal(h->current_metadata->lines, 1);
 
        json_object_put(h->current_scanner_config);
        h->current_scanner_config = NULL;
@@ -231,10 +202,6 @@ void sane_kds_s2000w_net_start_one_page_per_flatscan(void** state)
 
        assert_int_equal(result, SANE_STATUS_GOOD);
        assert_int_equal(h->current_scan_status->complete_scanned, 0);
-       assert_int_equal(h->current_metadata->depth, 8);
-       assert_int_equal(h->current_metadata->format, 1);
-       assert_int_equal(h->current_metadata->pixels_per_line, 2);
-       assert_int_equal(h->current_metadata->lines, 1);
 
        json_object_put(h->current_scanner_config);
        h->current_scanner_config = NULL;
@@ -301,10 +268,6 @@ void sane_kds_s2000w_net_start_one_page_per_feeder(void** state)
 
        assert_int_equal(result, SANE_STATUS_GOOD);
        assert_int_equal(h->current_scan_status->complete_scanned, 1);
-       assert_int_equal(h->current_metadata->depth, 8);
-       assert_int_equal(h->current_metadata->format, 1);
-       assert_int_equal(h->current_metadata->pixels_per_line, 2);
-       assert_int_equal(h->current_metadata->lines, 1);
 
        json_object_put(h->current_scanner_config);
        h->current_scanner_config = NULL;
@@ -401,10 +364,6 @@ void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state)
 
        assert_int_equal(result, SANE_STATUS_GOOD);
        assert_int_equal(h->current_scan_status->complete_scanned, 1);
-       assert_int_equal(h->current_metadata->depth, 8);
-       assert_int_equal(h->current_metadata->format, 1);
-       assert_int_equal(h->current_metadata->pixels_per_line, 2);
-       assert_int_equal(h->current_metadata->lines, 1);
 
        json_object_put(h->current_scanner_config);
        h->current_scanner_config = NULL;
@@ -500,10 +459,6 @@ void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state)
 
        assert_int_equal(result, SANE_STATUS_GOOD);
        assert_int_equal(h->current_scan_status->complete_scanned, 1);
-       assert_int_equal(h->current_metadata->depth, 8);
-       assert_int_equal(h->current_metadata->format, 1);
-       assert_int_equal(h->current_metadata->pixels_per_line, 2);
-       assert_int_equal(h->current_metadata->lines, 1);
 
        json_object_put(h->current_scanner_config);
        h->current_scanner_config = NULL;
index 9a9a419b6360daf37a88fe3751d4be4d203f9d27..34c1bf89ee06f4ae0d968d3572b3778081b75c2e 100644 (file)
@@ -6,7 +6,6 @@
 #include <setjmp.h>
 #include <cmocka.h>
 
-void kds_s2000w_net_get_parameters_with_image_data();
 void kds_s2000w_net_get_devices();
 void kds_s2000w_net_init();
 void kds_s2000w_net_get_devices_only_remote();
index d41cadee0132736255c5ba6e7e3c77acd5c6c5c3..7f52daac1a77175ed47b14bdd0774838f4aad254 100644 (file)
@@ -63,7 +63,6 @@ int teardown_net_start(void** state)
 int main()
 {
        const struct CMUnitTest net_tests[] = {
-               cmocka_unit_test(kds_s2000w_net_get_parameters_with_image_data),
                cmocka_unit_test(kds_s2000w_net_get_devices),
                cmocka_unit_test(kds_s2000w_net_init),
                cmocka_unit_test(kds_s2000w_net_get_devices_only_remote),