From 588f36eb0704778933f312d826c33b3caba04007 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 3 Feb 2024 18:57:02 +0100 Subject: [PATCH] load meta data --- src/kds_s2000w_client.c | 8 ++++---- src/kds_s2000w_handler.c | 14 +++++++++++++- src/kds_s2000w_handler.h | 1 + src/kds_s2000w_net.c | 12 +++++++++++- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index d209eea..c2c4303 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -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); diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 7531a37..11d5d4e 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -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 diff --git a/src/kds_s2000w_handler.h b/src/kds_s2000w_handler.h index 200b1b2..bf20fc5 100644 --- a/src/kds_s2000w_handler.h +++ b/src/kds_s2000w_handler.h @@ -22,6 +22,7 @@ typedef struct { int bytes_per_line; int lines; int depth; + int valid; } metadata; current_state* kds_s2000w_handler_open(); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index cc13c73..8d4a633 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -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) -- 2.39.5