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;
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;
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;
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++;
}
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);
free(dataptr);
dataptr = NULL;
- free(length);
- length = NULL;
free(image);
image = NULL;
}
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);
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);