From 3a379bd596e91950b6e7310d98d64c821e7c6642 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 10 Feb 2024 07:34:20 +0100 Subject: [PATCH] skip header to read data --- src/kds_s2000w_net.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index c2ed402..53fbd41 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -13,6 +13,24 @@ metadata current_metadata; int read_size = 0; int scan_started = 0; +int _sane_kds_s2000w_net_find_first_data_byte(const char* data) +{ + const int header_spaces = 3; + const char space = 0x0a; + int space_count = 0; + int byte_count = 0; + + while(space_count < header_spaces) { + if (data[byte_count] == space) { + space_count++; + } + + byte_count++; + } + + return byte_count; +} + SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize) { *version_code = SANE_VERSION_CODE(1, 0, 0); @@ -224,7 +242,12 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, SANE_Int max_length, SANE_Int* length) { printf("is all scanned: %i\n", current_metadata.scanned_all_complete); - char* image_data = (char*) current_metadata.image; + + int skip_header_bytes = _sane_kds_s2000w_net_find_first_data_byte(current_metadata.image); + + if (read_size <= 0) { + read_size += skip_header_bytes; + } if (readed_lines >= current_metadata.lines ) { printf("Image is loaded\n"); @@ -254,7 +277,7 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, } *length = maxlen; - memcpy(data, current_metadata.image + read_size, *length); + memcpy(data, current_metadata.image + skip_header_bytes + read_size, *length); readed_bytes_per_line += *length; read_size += *length; -- 2.39.5