From: Bastian Dehn Date: Wed, 6 Mar 2024 20:56:57 +0000 (+0100) Subject: read all bytes at once X-Git-Tag: v1.0.0^2~133 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=bcdb20dcd1c27080d3e96f9f16fdf0cab51a1388;p=sane-kds-s2000w-net.git read all bytes at once --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 3b637fa..930d96e 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -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; } diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index f618b11..6bf84c3 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -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; diff --git a/tests/runtests.c b/tests/runtests.c index 3f79ecb..4e429c6 100644 --- a/tests/runtests.c +++ b/tests/runtests.c @@ -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);