blobdata image;
blobdata pnm_image;
-typedef struct {
- int current_image_number;
- int available_images;
- int downloaded_images;
- int complete_scanned;
- metadata mdata;
-} scan_status;
-
-scan_status current_scan_status;
-
void _get_current_metadata(handler* h)
{
debug_printf(ALL, "get_current_metadata");
resp = kds_s2000w_client_response_init();
- kds_s2000w_client_get_metadata(h->sessionid, current_scan_status.current_image_number, resp);
+ kds_s2000w_client_get_metadata(h->sessionid, h->current_scan_status.current_image_number, resp);
if (resp->code != 200) {
- current_scan_status.mdata.valid = 0;
+ h->current_scan_status.mdata.valid = 0;
kds_s2000w_client_response_free(resp);
resp = NULL;
return;
}
- current_scan_status.mdata.valid = 0;
+ h->current_scan_status.mdata.valid = 0;
json_object* metadataResp = NULL;
json_object* metadata = NULL;
json_object* mdata_value = NULL;
metadataResp = json_tokener_parse(resp->data);
metadata = json_object_object_get(metadataResp, "Metadata");
mdata_value = json_object_object_get(metadata, "BitDepth");
- current_scan_status.mdata.depth = json_object_get_int(mdata_value);
+ h->current_scan_status.mdata.depth = json_object_get_int(mdata_value);
mdata_value = NULL;
mdata_value = json_object_object_get(metadata, "ImageSize");
- current_scan_status.mdata.size = json_object_get_int(mdata_value);
+ h->current_scan_status.mdata.size = json_object_get_int(mdata_value);
mdata_value = NULL;
mdata_value = json_object_object_get(metadata, "ImageWidth");
- current_scan_status.mdata.pixels_per_line = json_object_get_int(mdata_value);
+ h->current_scan_status.mdata.pixels_per_line = json_object_get_int(mdata_value);
mdata_value = NULL;
mdata_value = json_object_object_get(metadata, "ImageHeight");
- current_scan_status.mdata.lines = json_object_get_int(mdata_value);
+ h->current_scan_status.mdata.lines = json_object_get_int(mdata_value);
mdata_value = NULL;
json_object_put(metadataResp);
mdata_value = NULL;
if (strcmp(color_value, "Color") == 0)
- current_scan_status.mdata.format = 1;
+ h->current_scan_status.mdata.format = 1;
if (strcmp(color_value, "Gray") == 0)
- current_scan_status.mdata.format = 0;
+ h->current_scan_status.mdata.format = 0;
if (strcmp(color_value, "BW") == 0)
- current_scan_status.mdata.format = 0;
+ h->current_scan_status.mdata.format = 0;
- if (current_scan_status.mdata.format == 1)
+ if (h->current_scan_status.mdata.format == 1)
channels = 3;
if (pnm_image.size > 0) {
pnm_image.data = NULL;
pnm_image.size = 0;
}
- if (current_scan_status.mdata.depth > 8) {
- current_scan_status.mdata.depth = 8;
- kds_s2000w_convert_jpg_to_pnm_With_depth(&image, &pnm_image, current_scan_status.mdata.depth);
+ if (h->current_scan_status.mdata.depth > 8) {
+ h->current_scan_status.mdata.depth = 8;
+ kds_s2000w_convert_jpg_to_pnm_With_depth(&image, &pnm_image, h->current_scan_status.mdata.depth);
} else {
kds_s2000w_convert_jpg_to_pnm(&image, &pnm_image);
}
- current_scan_status.mdata.size = pnm_image.size;
- current_scan_status.mdata.image = pnm_image.data;
+ h->current_scan_status.mdata.size = pnm_image.size;
+ h->current_scan_status.mdata.image = pnm_image.data;
debug_printf_int(DEBUG, "size of pnm image", pnm_image.size);
- if (current_scan_status.mdata.depth == 1)
- current_scan_status.mdata.bytes_per_line = channels * floor((current_scan_status.mdata.pixels_per_line + 7) / 8);
+ if (h->current_scan_status.mdata.depth == 1)
+ h->current_scan_status.mdata.bytes_per_line = channels * floor((h->current_scan_status.mdata.pixels_per_line + 7) / 8);
else
- current_scan_status.mdata.bytes_per_line = channels * current_scan_status.mdata.pixels_per_line * current_scan_status.mdata.depth / 8;
+ h->current_scan_status.mdata.bytes_per_line = channels * h->current_scan_status.mdata.pixels_per_line * h->current_scan_status.mdata.depth / 8;
- current_scan_status.mdata.valid = 1;
- current_scan_status.mdata.is_last = 0;
+ h->current_scan_status.mdata.valid = 1;
+ h->current_scan_status.mdata.is_last = 0;
metadata = NULL;
kds_s2000w_client_response_free(resp);
{
debug_printf(ALL, "delete_current_image");
resp = kds_s2000w_client_response_init();
- kds_s2000w_client_delete_image(h->sessionid, current_scan_status.current_image_number, resp);
+ kds_s2000w_client_delete_image(h->sessionid, h->current_scan_status.current_image_number, resp);
kds_s2000w_client_response_free(resp);
resp = NULL;
sleep(1);
image.size = 0;
}
resp = kds_s2000w_client_response_init();
- kds_s2000w_client_get_image(h->sessionid, current_scan_status.current_image_number, resp);
+ kds_s2000w_client_get_image(h->sessionid, h->current_scan_status.current_image_number, resp);
image.size = resp->size;
image.data = malloc(sizeof(char) * resp->size);
memcpy(image.data, resp->data, resp->size);
kds_s2000w_client_response_free(resp);
resp = NULL;
- current_scan_status.downloaded_images++;
+ h->current_scan_status.downloaded_images++;
sleep(1);
}
status_resp_obj = json_tokener_parse(resp->data);
status_obj = json_object_object_get(status_resp_obj, "Status");
status_value_obj = json_object_object_get(status_obj, "NumImagesScanned");
- current_scan_status.available_images = json_object_get_int(status_value_obj);
+ h->current_scan_status.available_images = json_object_get_int(status_value_obj);
status_value_obj = NULL;
status_value_obj = json_object_object_get(status_obj, "State");
const char* scanner_state = json_object_get_string(status_value_obj);
if (strcmp(scanner_state, "Scanning") != 0)
- current_scan_status.complete_scanned = 1;
+ h->current_scan_status.complete_scanned = 1;
json_object_put(status_resp_obj);
status_resp_obj = NULL;
kds_s2000w_client_response_free(resp);
resp = NULL;
- current_scan_status.current_image_number = 1;
- 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;
+ h->current_scan_status.current_image_number = 1;
+ h->current_scan_status.available_images = 0;
+ h->current_scan_status.downloaded_images = 0;
+ h->current_scan_status.complete_scanned = 0;
+ h->current_scan_status.mdata.scanned_all_complete = 0;
return;
}
{
debug_printf(ALL, "kds_s2000w_handler_get_parameters");
handler* h = (handler*) handle;
- if (!current_scan_status.complete_scanned
- && current_scan_status.downloaded_images == current_scan_status.available_images) {
+ if (!h->current_scan_status.complete_scanned
+ && h->current_scan_status.downloaded_images == h->current_scan_status.available_images) {
_get_current_scan_status(h);
}
- 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;
- current_scan_status.mdata.is_last = 1;
- return current_scan_status.mdata;
+ if (h->current_scan_status.complete_scanned
+ && h->current_scan_status.downloaded_images == h->current_scan_status.available_images) {
+ h->current_scan_status.mdata.valid = 1;
+ h->current_scan_status.mdata.scanned_all_complete = 1;
+ h->current_scan_status.mdata.is_last = 1;
+ return h->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;
+ if (h->current_scan_status.downloaded_images >= h->current_scan_status.available_images) {
+ h->current_scan_status.mdata.valid = 0;
+ return h->current_scan_status.mdata;
}
_download_current_image(h);
_get_current_metadata(h);
_delete_current_image(h);
- current_scan_status.current_image_number++;
+ h->current_scan_status.current_image_number++;
- return current_scan_status.mdata;
+ return h->current_scan_status.mdata;
}
\ No newline at end of file