]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
load meta data
authorBastian Dehn <hhaalo@arcor.de>
Sat, 3 Feb 2024 17:57:02 +0000 (18:57 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 3 Feb 2024 17:57:02 +0000 (18:57 +0100)
src/kds_s2000w_client.c
src/kds_s2000w_handler.c
src/kds_s2000w_handler.h
src/kds_s2000w_net.c

index d209eea668ba79c913148266df52880481db12fb..c2c4303a6b1bdcf52cd38a650ccce6c641ab5d90 100644 (file)
@@ -197,10 +197,10 @@ int kds_s2000w_client_get_metadata(int64_t sessionid, int img_number, response*
                return CURLE_FAILED_INIT;
 
        CURLU* url_handler = curl_url();
-       char img_number_str[10];
-       sprintf(img_number_str, "%i", img_number);
-       curl_url_set(url_handler, CURLUPART_URL, "http://scanner.lan.hhaalo.de/api/session/metadata", 0);
-       curl_url_set(url_handler, CURLUPART_PATH, img_number_str, 0);
+       char url_path[30];
+       sprintf(url_path, "api/session/metadata/%i", img_number);
+       curl_url_set(url_handler, CURLUPART_URL, "http://scanner.lan.hhaalo.de", 0);
+       curl_url_set(url_handler, CURLUPART_PATH, url_path, 0);
        char* url = NULL;
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
 
index 7531a37ae69e32785bcd755b0d153743b5578a72..11d5d4e54f0623ea66dc22065f186e16d8ce7662 100644 (file)
@@ -464,8 +464,19 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        int width = 0;
        int channels = 1;
        resp = kds_s2000w_client_response_init();
+       kds_s2000w_client_status_session(state->sessionid, resp);
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+       resp = kds_s2000w_client_response_init();
        kds_s2000w_client_get_metadata(state->sessionid, image_number, resp);
+       if (resp->code != 200) {
+               mdata.valid = 0;
+               kds_s2000w_client_response_free(resp);
+               resp = NULL;
+               return mdata;
+       }
 
+       mdata.valid = 1;
        metadata = json_tokener_parse(resp->data);
        mdata_value = json_object_object_get(metadata, "BitDepth");
        mdata.depth = json_object_get_int(mdata_value);
@@ -502,8 +513,9 @@ metadata kds_s2000w_handler_get_parameters(int image_number)
        else
                mdata.bytes_per_line = channels * width * mdata.depth / 8;
        
-       json_object_put(metadata);
        metadata = NULL;
        kds_s2000w_client_response_free(resp);
        resp = NULL;
+
+       return mdata;
 }
\ No newline at end of file
index 200b1b253536e4ff49304b9efbfa93834db5bc0d..bf20fc52ffd512339811466d1af02cfa1db64702 100644 (file)
@@ -22,6 +22,7 @@ typedef struct {
        int bytes_per_line;
        int lines;
        int depth;
+       int valid;
 } metadata;
 
 current_state* kds_s2000w_handler_open();
index cc13c73133a353f73a9253f29474e916428e921c..8d4a633020b5c433ca9c57c66be1a978bd3bddc9 100644 (file)
@@ -169,6 +169,16 @@ SANE_Status _sane_kds_s2000w_net_control_option(SANE_Handle handle,
 SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        SANE_Parameters* params)
 {
+       metadata mdata;
+       for (int i = 0; i < 10; i++) {
+               mdata = kds_s2000w_handler_get_parameters(1);
+               printf("valid %i\n", mdata.valid);
+               if (mdata.valid)
+                       break;
+
+               sleep(1);
+       }
+
        params->format = SANE_FRAME_GRAY;
        params->last_frame = SANE_FALSE;
        params->bytes_per_line = 256;
@@ -176,7 +186,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle,
        params->lines = 0;
        params->depth = 8;
 
-       return SANE_STATUS_GOOD;
+       return SANE_STATUS_UNSUPPORTED;
 }
 
 SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle)