]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add scan state in handler
authorBastian Dehn <hhaalo@arcor.de>
Sun, 4 Feb 2024 10:21:52 +0000 (11:21 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 4 Feb 2024 10:21:52 +0000 (11:21 +0100)
src/kds_s2000w_handler.c

index 272f757f0da41ffedf421f5986ee506c7f1251b2..e77fe73385b1689eb5943b748c61bac83b6ea1c9 100644 (file)
@@ -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);