int available_images;
int downloaded_images;
int complete_scanned;
+ metadata mdata;
} scan_status;
scan_status current_scan_status;
+void _get_current_metadata()
+{
+ current_scan_status.mdata.valid = 0;
+ json_object* metadataResp = NULL;
+ json_object* metadata = NULL;
+ json_object* mdata_value = NULL;
+ int channels = 1;
+
+ 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);
+ mdata_value = NULL;
+
+ mdata_value = json_object_object_get(metadata, "ImageSize");
+ 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);
+ mdata_value = NULL;
+
+ mdata_value = json_object_object_get(metadata, "ImageHeight");
+ current_scan_status.mdata.lines = json_object_get_int(mdata_value);
+ mdata_value = NULL;
+
+ json_object_put(metadataResp);
+ metadata = NULL;
+ metadata = json_object_object_get(config, "ColorMode");
+ const char* color_value = json_object_get_string(metadata);
+ mdata_value = NULL;
+
+ if (strcmp(color_value, "Color") == 0)
+ current_scan_status.mdata.format = 1;
+
+ if (strcmp(color_value, "Gray") == 0)
+ current_scan_status.mdata.format = 0;
+
+ if (strcmp(color_value, "BW") == 0)
+ current_scan_status.mdata.format = 0;
+
+ if (current_scan_status.mdata.format == 1)
+ channels = 3;
+
+ if (current_scan_status.mdata.depth == 1)
+ current_scan_status.mdata.bytes_per_line = channels * ((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;
+
+ current_scan_status.mdata.valid = 1;
+
+ metadata = NULL;
+ kds_s2000w_client_response_free(resp);
+ resp = NULL;
+ sleep(1);
+}
+
void _delete_current_image()
{
resp = kds_s2000w_client_response_init();
resp = NULL;
}
-metadata kds_s2000w_handler_get_parameters(int image_number)
+metadata kds_s2000w_handler_get_parameters()
{
- metadata mdata;
- json_object* metadataResp = NULL;
- json_object* metadata = NULL;
- json_object* mdata_value = NULL;
- int channels = 1;
-
if (!current_scan_status.complete_scanned
&& current_scan_status.downloaded_images == current_scan_status.available_images) {
_get_current_scan_status();
}
if (current_scan_status.downloaded_images >= current_scan_status.available_images) {
- mdata.valid = 0;
- return mdata;
+ current_scan_status.mdata.valid = 0;
+ return current_scan_status.mdata;
}
_download_current_image();
printf("complete_scanned: %i\n", current_scan_status.complete_scanned);
resp = kds_s2000w_client_response_init();
- kds_s2000w_client_get_metadata(state->sessionid, image_number, resp);
+ kds_s2000w_client_get_metadata(state->sessionid, current_scan_status.current_image_number, resp);
if (resp->code != 200) {
- mdata.valid = 0;
+ current_scan_status.mdata.valid = 0;
kds_s2000w_client_response_free(resp);
resp = NULL;
- return mdata;
+ return current_scan_status.mdata;
}
- mdata.valid = 1;
- metadataResp = json_tokener_parse(resp->data);
- metadata = json_object_object_get(metadataResp, "Metadata");
- mdata_value = json_object_object_get(metadata, "BitDepth");
- mdata.depth = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- mdata_value = json_object_object_get(metadata, "ImageSize");
- mdata.size = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- mdata_value = json_object_object_get(metadata, "ImageWidth");
- mdata.pixels_per_line = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- mdata_value = json_object_object_get(metadata, "ImageHeight");
- mdata.lines = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- json_object_put(metadataResp);
- metadata = NULL;
- metadata = json_object_object_get(config, "ColorMode");
- const char* color_value = json_object_get_string(metadata);
- mdata_value = NULL;
-
- if (strcmp(color_value, "Color") == 0)
- mdata.format = 1;
-
- if (strcmp(color_value, "Gray") == 0)
- mdata.format = 0;
-
- if (strcmp(color_value, "BW") == 0)
- mdata.format = 0;
-
- if (mdata.format == 1)
- channels = 3;
-
- if (mdata.depth == 1)
- mdata.bytes_per_line = channels * ((mdata.pixels_per_line + 7) / 8);
- else
- mdata.bytes_per_line = channels * mdata.pixels_per_line * mdata.depth / 8;
-
- metadata = NULL;
- kds_s2000w_client_response_free(resp);
- resp = NULL;
- sleep(1);
+ _get_current_metadata();
_delete_current_image();
- return mdata;
+ return current_scan_status.mdata;
}
\ No newline at end of file