]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
move metadata from read info to handler
authorBastian Dehn <hhaalo@arcor.de>
Sun, 18 Feb 2024 15:40:20 +0000 (16:40 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 18 Feb 2024 15:40:20 +0000 (16:40 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c
tests/kds_s2000w_net_read_tests.c

index ae4ea1363fee439a8c1307650af03b44b6a9d76a..2511535ffdf536879ea40930f321d85e32a7d571 100644 (file)
@@ -185,16 +185,16 @@ void kds_s2000w_handler_open(const char* devicename, void** handle)
        h->read_info.read_size = 0;
        h->read_info.readed_bytes_per_line = 0;
        h->read_info.readed_lines = 0;
-       h->read_info.current_metadata.format = 0;
-       h->read_info.current_metadata.is_last = 0;
-       h->read_info.current_metadata.size = 0;
-       h->read_info.current_metadata.bytes_per_line = 0;
-       h->read_info.current_metadata.pixels_per_line = 0;
-       h->read_info.current_metadata.lines = 0;
-       h->read_info.current_metadata.depth = 0;
-       h->read_info.current_metadata.valid = 0;
-       h->read_info.current_metadata.scanned_all_complete = 0;
-       h->read_info.current_metadata.image = NULL;
+       h->current_metadata.format = 0;
+       h->current_metadata.is_last = 0;
+       h->current_metadata.size = 0;
+       h->current_metadata.bytes_per_line = 0;
+       h->current_metadata.pixels_per_line = 0;
+       h->current_metadata.lines = 0;
+       h->current_metadata.depth = 0;
+       h->current_metadata.valid = 0;
+       h->current_metadata.scanned_all_complete = 0;
+       h->current_metadata.image = NULL;
 
        init_gamma_table();
        image.size = 0;
index e29e214481d83761e308c8ba7fccf88b12679a0a..ceaed78246212a5ed12f1f9878e262a4d5335022 100644 (file)
@@ -38,13 +38,13 @@ typedef struct {
        int read_size;
        int readed_bytes_per_line;
        int readed_lines;
-       metadata current_metadata;
 } readinfo;
 
 typedef struct {
        long sessionid;
        int state;
        scan_status current_scan_status;
+       metadata current_metadata;
        readinfo read_info;
 } handler;
 
index 9955aa0eabe52d91d3428ff1d0ed25ed61f539d3..ab6ef0c2639735f46e9004aec7d99e13a53f368c 100644 (file)
@@ -124,20 +124,20 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
 
        for (int i = 0; i < 10; i++) {
                sleep(1);
-               h->read_info.current_metadata = kds_s2000w_handler_get_parameters(handle);
-               if (h->read_info.current_metadata.valid)
+               h->current_metadata = kds_s2000w_handler_get_parameters(handle);
+               if (h->current_metadata.valid)
                        break;
        }
 
-       if (!h->read_info.current_metadata.valid)
+       if (!h->current_metadata.valid)
                return SANE_STATUS_UNSUPPORTED;
 
-       params->format = h->read_info.current_metadata.format;
-       params->last_frame = h->read_info.current_metadata.is_last;
-       params->bytes_per_line = h->read_info.current_metadata.bytes_per_line;
-       params->pixels_per_line = h->read_info.current_metadata.pixels_per_line;
-       params->lines = h->read_info.current_metadata.lines;
-       params->depth = h->read_info.current_metadata.depth;
+       params->format = h->current_metadata.format;
+       params->last_frame = h->current_metadata.is_last;
+       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;
        h->read_info.read_size = 0;
        h->read_info.readed_bytes_per_line = 0;
        h->read_info.readed_lines = 0;
@@ -177,27 +177,27 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
                return SANE_STATUS_CANCELLED;
        }
 
-       int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(h->read_info.current_metadata.image);
+       int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(h->current_metadata.image);
        if (h->read_info.read_size <= 0)
                h->read_info.read_size += skip_header_bytes;
 
-       if (h->read_info.readed_lines >= h->read_info.current_metadata.lines) {
+       if (h->read_info.readed_lines >= h->current_metadata.lines) {
                *length = 0;
                h->read_info.readed_lines = 0;
                return SANE_STATUS_EOF;
        }
 
        int maxlen = max_length;
-       if (h->read_info.current_metadata.bytes_per_line - h->read_info.readed_bytes_per_line < max_length)
-               maxlen = h->read_info.current_metadata.bytes_per_line - h->read_info.readed_bytes_per_line;
+       if (h->current_metadata.bytes_per_line - h->read_info.readed_bytes_per_line < max_length)
+               maxlen = h->current_metadata.bytes_per_line - h->read_info.readed_bytes_per_line;
 
        *length = maxlen;
-       memcpy(data, h->read_info.current_metadata.image + h->read_info.read_size, *length);
+       memcpy(data, h->current_metadata.image + h->read_info.read_size, *length);
 
        h->read_info.readed_bytes_per_line += *length;
        h->read_info.read_size += *length;
 
-       if (h->read_info.readed_bytes_per_line >= h->read_info.current_metadata.bytes_per_line) {
+       if (h->read_info.readed_bytes_per_line >= h->current_metadata.bytes_per_line) {
                h->read_info.readed_bytes_per_line = 0;
                h->read_info.readed_lines++;
        }
index 1386f28d504365496a2e55d7654349b443af5f17..7f58d89806b8fd36445e5a01c4d740c7e71cacba 100644 (file)
@@ -39,25 +39,25 @@ START_TEST(sane_kds_s2000w_net_read_all_lines_test)
        handler h;
        h.read_info.cancel = 0;
        h.read_info.read_size = 0;
+       h.read_info.readed_lines = 0;
        char* image = malloc(sizeof(char) * 53);
        for (int i = 0; i < 3; i++) {
                image[i] = 0x0a;
        }
        image[3] = 0xff;
-       h.read_info.current_metadata.format = 0;
-       h.read_info.current_metadata.image = image;
-       h.read_info.current_metadata.bytes_per_line = 10;
-       h.read_info.current_metadata.lines = 5;
+       h.current_metadata.format = 0;
+       h.current_metadata.image = image;
+       h.current_metadata.bytes_per_line = 10;
+       h.current_metadata.lines = 5;
 
-       int* length = malloc(sizeof(int));
-       *length = 0;
+       int length = 0;
 
        SANE_Int maxlen = 65536;
        char* dataptr = malloc(sizeof(char) * maxlen);
 
        SANE_Status status = 0;
        for (int i = 0; i < 6; i++) {
-               status = _sane_kds_s2000w_net_read(&h, dataptr, 65535, length);
+               status = _sane_kds_s2000w_net_read(&h, dataptr, 65535, &length);
        }
 
        ck_assert_int_eq(status, SANE_STATUS_EOF);
@@ -65,8 +65,6 @@ START_TEST(sane_kds_s2000w_net_read_all_lines_test)
 
        free(dataptr);
        dataptr = NULL;
-       free(length);
-       length = NULL;
        free(image);
        image = NULL;
 }
@@ -79,15 +77,15 @@ START_TEST(sane_kds_s2000w_net_read_test)
        h.read_info.read_size = 0;
        h.read_info.readed_bytes_per_line = 0;
        h.read_info.readed_lines = 0;
-       h.read_info.current_metadata.format = 0;
-       h.read_info.current_metadata.lines = 1;
-       h.read_info.current_metadata.bytes_per_line = 65536;
+       h.current_metadata.format = 0;
+       h.current_metadata.lines = 1;
+       h.current_metadata.bytes_per_line = 65536;
        char* image = malloc(sizeof(char) * 65539);
        for (int i = 0; i < 3; i++) {
                image[i] = 0x0a;
        }
        image[3] = 0xff;
-       h.read_info.current_metadata.image = image;
+       h.current_metadata.image = image;
 
        SANE_Int maxlen = 65536;
        char* dataptr = malloc(sizeof(char) * maxlen);
@@ -116,15 +114,15 @@ START_TEST(sane_kds_s2000w_net_read_bytes_per_line_bigger_test)
        h.read_info.read_size = 0;
        h.read_info.readed_bytes_per_line = 0;
        h.read_info.readed_lines = 0;
-       h.read_info.current_metadata.format = 0;
-       h.read_info.current_metadata.lines = 1;
-       h.read_info.current_metadata.bytes_per_line = 95000;
+       h.current_metadata.format = 0;
+       h.current_metadata.lines = 1;
+       h.current_metadata.bytes_per_line = 95000;
        char* image = malloc(sizeof(char) * 95003);
        for (int i = 0; i < 3; i++) {
                image[i] = 0x0a;
        }
        image[3] = 0xff;
-       h.read_info.current_metadata.image = image;
+       h.current_metadata.image = image;
 
        SANE_Int maxlen = 65536;
        char* dataptr = malloc(sizeof(char) * maxlen);