]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
move get metdata to private mathod
authorBastian Dehn <hhaalo@arcor.de>
Tue, 6 Feb 2024 18:21:28 +0000 (19:21 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 6 Feb 2024 18:21:28 +0000 (19:21 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c

index b61050221dec8b757189299fd073ec1ecf1e6227..714e9a22489cffcd352e4f8cf7468d327471e674 100644 (file)
@@ -19,10 +19,68 @@ typedef struct {
        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();
@@ -171,22 +229,16 @@ void kds_s2000w_handler_stop_scan()
        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();
@@ -196,62 +248,17 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        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
index d1a181b7b334ecdcc58ae3ab2589a92c611cf3c9..5323c1c0579f0d3d45c9f7ecd039b60326f29682 100644 (file)
@@ -34,5 +34,5 @@ void kds_s2000w_handler_set_option(int option, void* value, int* info);
 void kds_s2000w_handler_set_option_auto(int option);
 void kds_s2000w_handler_start_scan();
 void kds_s2000w_handler_stop_scan();
-metadata kds_s2000w_handler_get_parameters(int image_number);
+metadata kds_s2000w_handler_get_parameters();
 #endif
\ No newline at end of file
index fa31f8c00dd7da57bcbdc73b7816ef5600bca518..6bd0177c2bd5b689ae52ed1eb109a0702c8fe9da 100644 (file)
@@ -177,7 +177,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
 
        for (int i = 0; i < 10; i++) {
                sleep(1);
-               current_metadata = kds_s2000w_handler_get_parameters(1);
+               current_metadata = kds_s2000w_handler_get_parameters();
                printf("valid %i\n", current_metadata.valid);
                if (current_metadata.valid)
                        break;