From 443c23904991446132b33bcd63d40b54b5ed638c Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 18 Feb 2024 11:38:46 +0100 Subject: [PATCH] move read info to handler --- src/kds_s2000w_net.c | 37 +++++++++++++------------------ tests/kds_s2000w_net_read_tests.c | 27 ++++++++++------------ 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 1ae68f9..9955aa0 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -7,13 +7,6 @@ #include "kds_s2000w_handler.h" #include "kds_s2000w_debug.h" -readinfo read_info; - -readinfo* get_read_info() -{ - return &read_info; -} - int _sane_kds_s2000w_net_find_first_data_byte(const char* data) { debug_printf(ALL, "sane_kds_s2000w_net_find_first_data_byte"); @@ -131,20 +124,20 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, for (int i = 0; i < 10; i++) { sleep(1); - read_info.current_metadata = kds_s2000w_handler_get_parameters(handle); - if (read_info.current_metadata.valid) + h->read_info.current_metadata = kds_s2000w_handler_get_parameters(handle); + if (h->read_info.current_metadata.valid) break; } - if (!read_info.current_metadata.valid) + if (!h->read_info.current_metadata.valid) return SANE_STATUS_UNSUPPORTED; - params->format = read_info.current_metadata.format; - params->last_frame = read_info.current_metadata.is_last; - params->bytes_per_line = read_info.current_metadata.bytes_per_line; - params->pixels_per_line = read_info.current_metadata.pixels_per_line; - params->lines = read_info.current_metadata.lines; - params->depth = read_info.current_metadata.depth; + 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; h->read_info.read_size = 0; h->read_info.readed_bytes_per_line = 0; h->read_info.readed_lines = 0; @@ -184,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(read_info.current_metadata.image); + int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(h->read_info.current_metadata.image); if (h->read_info.read_size <= 0) h->read_info.read_size += skip_header_bytes; - if (h->read_info.readed_lines >= read_info.current_metadata.lines) { + if (h->read_info.readed_lines >= h->read_info.current_metadata.lines) { *length = 0; h->read_info.readed_lines = 0; return SANE_STATUS_EOF; } int maxlen = max_length; - if (read_info.current_metadata.bytes_per_line - h->read_info.readed_bytes_per_line < max_length) - maxlen = read_info.current_metadata.bytes_per_line - h->read_info.readed_bytes_per_line; + 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; *length = maxlen; - memcpy(data, read_info.current_metadata.image + h->read_info.read_size, *length); + memcpy(data, h->read_info.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 >= read_info.current_metadata.bytes_per_line) { + if (h->read_info.readed_bytes_per_line >= h->read_info.current_metadata.bytes_per_line) { h->read_info.readed_bytes_per_line = 0; h->read_info.readed_lines++; } diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index 1f8cb3e..1386f28 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -36,7 +36,6 @@ END_TEST START_TEST(sane_kds_s2000w_net_read_all_lines_test) { - readinfo* read_info = get_read_info(); handler h; h.read_info.cancel = 0; h.read_info.read_size = 0; @@ -45,10 +44,10 @@ START_TEST(sane_kds_s2000w_net_read_all_lines_test) image[i] = 0x0a; } image[3] = 0xff; - read_info->current_metadata.format = 0; - read_info->current_metadata.image = image; - read_info->current_metadata.bytes_per_line = 10; - read_info->current_metadata.lines = 5; + 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; int* length = malloc(sizeof(int)); *length = 0; @@ -75,21 +74,20 @@ END_TEST START_TEST(sane_kds_s2000w_net_read_test) { - readinfo* read_info = get_read_info(); handler h; 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; - read_info->current_metadata.format = 0; - read_info->current_metadata.lines = 1; - read_info->current_metadata.bytes_per_line = 65536; + h.read_info.current_metadata.format = 0; + h.read_info.current_metadata.lines = 1; + h.read_info.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; - read_info->current_metadata.image = image; + h.read_info.current_metadata.image = image; SANE_Int maxlen = 65536; char* dataptr = malloc(sizeof(char) * maxlen); @@ -113,21 +111,20 @@ END_TEST START_TEST(sane_kds_s2000w_net_read_bytes_per_line_bigger_test) { - readinfo* read_info = get_read_info(); handler h; 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; - read_info->current_metadata.format = 0; - read_info->current_metadata.lines = 1; - read_info->current_metadata.bytes_per_line = 95000; + h.read_info.current_metadata.format = 0; + h.read_info.current_metadata.lines = 1; + h.read_info.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; - read_info->current_metadata.image = image; + h.read_info.current_metadata.image = image; SANE_Int maxlen = 65536; char* dataptr = malloc(sizeof(char) * maxlen); -- 2.39.5