current_scan_status.available_images = 0;
current_scan_status.downloaded_images = 0;
current_scan_status.complete_scanned = 0;
+ current_scan_status.mdata.scanned_all_complete = 0;
return state;
}
_get_current_scan_status();
}
+ if (current_scan_status.complete_scanned
+ && current_scan_status.downloaded_images == current_scan_status.available_images) {
+ current_scan_status.mdata.valid = 1;
+ current_scan_status.mdata.scanned_all_complete = 1;
+ return current_scan_status.mdata;
+ }
+
if (current_scan_status.downloaded_images >= current_scan_status.available_images) {
current_scan_status.mdata.valid = 0;
return current_scan_status.mdata;
params->last_frame = current_metadata.is_last;
params->bytes_per_line = current_metadata.bytes_per_line;
params->pixels_per_line = current_metadata.pixels_per_line;
- params->lines = current_metadata.lines;
+ params->lines = -1;
params->depth = current_metadata.depth;
+ read_size = 0;
return SANE_STATUS_GOOD;
}
SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data,
SANE_Int max_length, SANE_Int* length)
{
- printf("is last: %i\n", current_metadata.is_last);
- if (read_size >= current_metadata.is_last) {
+ printf("is all scanned: %i\n", current_metadata.scanned_all_complete);
+ if (current_metadata.scanned_all_complete && !cancel) {
read_size = 0;
- return SANE_STATUS_EOF;
_sane_kds_s2000w_net_cancel(NULL);
+ return SANE_STATUS_GOOD;
+ }
+
+ if (read_size >= current_metadata.size) {
+ read_size = 0;
+ *length = 0;
+ return SANE_STATUS_EOF;
}
int length_count = 0;
kds_s2000w_handler_open();
return SANE_STATUS_CANCELLED;
}
+
+ if (read_size >= current_metadata.size)
+ break;
+
data[length_count] = 0;
length_count++;
read_size++;