From ea4b0fc2faf960223113650d97b8ceeab06433d0 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 4 Feb 2024 11:21:52 +0100 Subject: [PATCH] add scan state in handler --- src/kds_s2000w_handler.c | 41 ++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 272f757..e77fe73 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -13,6 +13,14 @@ current_state* state = NULL; json_object* resp_config = NULL; json_object* config = NULL; +typedef struct { + int available_images; + int downloaded_images; + int complete_scanned; +} scan_status; + +scan_status current_scan_status; + void _write_string_value(json_object* value_object, void* value) { const char* string_value = json_object_get_string(value_object); @@ -445,6 +453,9 @@ void kds_s2000w_handler_start_scan() resp = kds_s2000w_client_response_init(); kds_s2000w_client_start_scan(state->sessionid, resp); kds_s2000w_client_response_free(resp); + current_scan_status.available_images = 0; + current_scan_status.downloaded_images = 0; + current_scan_status.complete_scanned = 0; resp = NULL; } @@ -463,18 +474,28 @@ metadata kds_s2000w_handler_get_parameters(int image_number) json_object* metadata = NULL; json_object* mdata_value = NULL; int channels = 1; - int status_image_number = 0; - resp = kds_s2000w_client_response_init(); - kds_s2000w_client_status_session(state->sessionid, resp); - metadataResp = json_tokener_parse(resp->data); - metadata = json_object_object_get(metadataResp, "Status"); - mdata_value = json_object_object_get(metadata, "NumImagesScanned"); - status_image_number = json_object_get_int(mdata_value); - kds_s2000w_client_response_free(resp); - resp = NULL; + if (!current_scan_status.complete_scanned) { + resp = kds_s2000w_client_response_init(); + kds_s2000w_client_status_session(state->sessionid, resp); + metadataResp = json_tokener_parse(resp->data); + metadata = json_object_object_get(metadataResp, "Status"); + mdata_value = json_object_object_get(metadata, "NumImagesScanned"); + current_scan_status.available_images = json_object_get_int(mdata_value); + mdata_value = NULL; + mdata_value = json_object_object_get(metadata, "State"); + const char* scanner_state = json_object_get_string(mdata_value); + if (strcmp(scanner_state, "Scanning") != 0) + current_scan_status.complete_scanned = 1; + + kds_s2000w_client_response_free(resp); + resp = NULL; + } - if (status_image_number < image_number) { + printf("current available images: %i\n", current_scan_status.available_images); + printf("current downloaded images: %i\n", current_scan_status.downloaded_images); + printf("complete_scanned: %i\n", current_scan_status.complete_scanned); + if (current_scan_status.available_images < image_number) { mdata_value = NULL; metadata = NULL; json_object_put(metadataResp); -- 2.39.5