]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
read all bytes at once
authorBastian Dehn <hhaalo@arcor.de>
Wed, 6 Mar 2024 20:56:57 +0000 (21:56 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Wed, 6 Mar 2024 20:56:57 +0000 (21:56 +0100)
src/kds_s2000w_net.c
tests/kds_s2000w_net_read_tests.c
tests/runtests.c

index 3b637fa20073e6de182c69eb1985bb97aae7a910..930d96ed4ba1b96c46fd82e39adfa41d69707c87 100644 (file)
@@ -217,18 +217,17 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
        }
 
        // last frame
-       if (h->read_info->readed_lines >= h->current_metadata->lines) {
+       if (h->read_info->read_size >= h->current_metadata->size) {
                *length = 0;
                h->current_metadata->is_last = 1;
-               h->read_info->readed_lines = 0;
 
                return SANE_STATUS_EOF;
        }
 
        // calc max length
        int maxlen = max_length;
-       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;
+       if (h->current_metadata->size - h->read_info->read_size < max_length)
+               maxlen = h->current_metadata->size - h->read_info->read_size;
 
        // read image
        if (h->current_metadata->image != NULL) {
@@ -239,16 +238,8 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
 
        *length = maxlen;
        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;
 
-       // check is all bytes readed in one 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++;
-       }
-
        return SANE_STATUS_GOOD;
 }
 
index f618b111d2fde32f5c5d974fcb063d04a213ec0a..6bf84c3d991cbfb469d2384b96e90ee460381bb0 100644 (file)
@@ -62,6 +62,7 @@ START_TEST(sane_kds_s2000w_net_read_empty_image)
        char* image = malloc(sizeof(char));
        image[0] = 0;
        h->current_metadata->image = image;
+       h->current_metadata->size = 0;
        char* dataptr = malloc(sizeof(char));
 
        SANE_Status status = _sane_kds_s2000w_net_read(h, dataptr, 65536, &length);
@@ -76,53 +77,13 @@ START_TEST(sane_kds_s2000w_net_read_empty_image)
 }
 END_TEST
 
-START_TEST(sane_kds_s2000w_net_read_all_lines_test)
-{
-       handler* h = init_handler();
-       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->current_metadata->format = 0;
-       h->current_metadata->image = image;
-       h->current_metadata->bytes_per_line = 10;
-       h->current_metadata->lines = 5;
-
-       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);
-       }
-
-       ck_assert_int_eq(status, SANE_STATUS_EOF);
-       ck_assert_int_eq(h->read_info->read_size, 53);
-
-       free(dataptr);
-       dataptr = NULL;
-       image = NULL;
-       free_handler(h);
-       h = NULL;
-}
-END_TEST
-
 START_TEST(sane_kds_s2000w_net_read_test)
 {
        handler* h = init_handler();
        h->read_info->cancel = 0;
        h->read_info->read_size = 0;
-       h->read_info->readed_bytes_per_line = 0;
-       h->read_info->readed_lines = 0;
        h->current_metadata->format = 0;
-       h->current_metadata->lines = 1;
-       h->current_metadata->bytes_per_line = 65536;
+       h->current_metadata->size = 65539;
        char* image = malloc(sizeof(char) * 65539);
        for (int i = 0; i < 3; i++) {
                image[i] = 0x0a;
@@ -156,11 +117,8 @@ START_TEST(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->read_info->readed_bytes_per_line = 0;
-       h->read_info->readed_lines = 0;
        h->current_metadata->format = 0;
-       h->current_metadata->lines = 1;
-       h->current_metadata->bytes_per_line = 95000;
+       h->current_metadata->size = 95003;
        char* image = malloc(sizeof(char) * 95003);
        for (int i = 0; i < 3; i++) {
                image[i] = 0x0a;
index 3f79ecb174964a61e4530910f713458b79db29cf..4e429c65c5905f15b24c9fc3648ccd3cbb79cf8c 100644 (file)
@@ -28,7 +28,6 @@ Suite* net_read()
        tcase_add_test(net_read, sane_kds_s2000w_net_read_cancel_test);
        tcase_add_test(net_read, sane_kds_s2000w_net_read_without_data);
        tcase_add_test(net_read, sane_kds_s2000w_net_read_empty_image);
-       tcase_add_test(net_read, sane_kds_s2000w_net_read_all_lines_test);
        tcase_add_test(net_read, sane_kds_s2000w_net_read_test);
        tcase_add_test(net_read, sane_kds_s2000w_net_read_bytes_per_line_bigger_test);