]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change init config client with config struct
authorBastian Dehn <hhaalo@arcor.de>
Mon, 13 Oct 2025 18:26:20 +0000 (20:26 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 13 Oct 2025 18:26:20 +0000 (20:26 +0200)
src/kds_s2000w_client.c
src/kds_s2000w_client.h
src/kds_s2000w_handler.c

index 671cedb80fcfcf0ac5e7faafea89ad852cbac201..e00a405f578187b5cb20597d19908f8c94ae6f80 100644 (file)
 #define CONFIGURATION_PATH "/api/session/configuration"
 
 CURL* curl = NULL;
-
-typedef struct {
-       char* scanner_url;
-       char* username;
-       bool ssl_verify;
-       uint8_t heartbeat;
-} client_config_t;
-
-client_config_t client_config;
+client_config_t* client_config = NULL;
 
 char* _kds_s2000w_client_strdup(const char* str)
 {
@@ -103,23 +95,13 @@ void _kds_s2000w_client_print_error_result(const CURLcode result, const char* er
 
 void _kds_s2000w_client_set_ssl_verification_off(CURL* curl)
 {
-       if (client_config.ssl_verify)
+       if (client_config->ssl_verify)
                return;
 
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
 }
 
-void _kds_s2000w_client_set_config(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat)
-{
-       kds_s2000w_debug_printf(ALL, "kds_s2000w_client_set_config");
-
-       client_config.scanner_url = _kds_s2000w_client_strdup(scanner_url);
-       client_config.username = _kds_s2000w_client_strdup(username);
-       client_config.ssl_verify = ssl_verify;
-       client_config.heartbeat = heartbeat;
-}
-
 char* _kds_s2000w_client_errbuf_init()
 {
        char* errbuf = malloc(sizeof(char) * CURL_ERROR_SIZE);
@@ -130,11 +112,16 @@ char* _kds_s2000w_client_errbuf_init()
        return errbuf;
 }
 
-void kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat)
+void kds_s2000w_client_init(client_config_t* config)
 {
        kds_s2000w_debug_printf(ALL, "kds_s2000w_client_init");
 
-       _kds_s2000w_client_set_config(scanner_url, username, ssl_verify, heartbeat);
+       client_config = malloc(sizeof(client_config_t));
+       client_config->scanner_url = _kds_s2000w_client_strdup(config->scanner_url);
+       client_config->username = _kds_s2000w_client_strdup(config->username);
+       client_config->ssl_verify = config->ssl_verify;
+       client_config->heartbeat = config->heartbeat;
+
        curl_global_init(CURL_GLOBAL_ALL);
        curl = curl_easy_init();
 }
@@ -143,10 +130,12 @@ void kds_s2000w_client_free()
 {
        kds_s2000w_debug_printf(ALL, "kds_s2000w_client_free");
 
-       free(client_config.scanner_url);
-       client_config.scanner_url = NULL;
-       free(client_config.username);
-       client_config.username = NULL;
+       free(client_config->scanner_url);
+       client_config->scanner_url = NULL;
+       free(client_config->username);
+       client_config->username = NULL;
+       free(client_config);
+       client_config = NULL;
        curl_easy_cleanup(curl);
        curl = NULL;
        curl_global_cleanup();
@@ -187,7 +176,7 @@ uint8_t kds_s2000w_client_open_session(response* resp)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -209,7 +198,7 @@ uint8_t kds_s2000w_client_open_session(response* resp)
        }
 
        memset(body, 0, MAX_STR_BUFFER_LENGTH);
-       sprintf(body, "{\"OCPUserName\": \"%s\"}", client_config.username);
+       sprintf(body, "{\"OCPUserName\": \"%s\"}", client_config->username);
        curl_easy_setopt(curl, CURLOPT_POST, 1L);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);
        _kds_s2000w_client_set_ssl_verification_off(curl);
@@ -248,7 +237,7 @@ void kds_s2000w_client_close_session(int64_t sessionid)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -300,7 +289,7 @@ uint8_t kds_s2000w_client_get_capabilities(response* resp)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0);
        curl_url_set(url_handler, CURLUPART_QUERY, CAPABILITIES_VERSION_2, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
@@ -343,13 +332,13 @@ uint8_t kds_s2000w_client_status_session(int64_t sessionid, response* resp)
        kds_s2000w_debug_printf(ALL, "kds_s2000w_client_status_session");
 
        kds_s2000w_heartbeat_join_thread();
-       kds_s2000w_heartbeat_wait_seconds(&client_config.heartbeat);
+       kds_s2000w_heartbeat_wait_seconds(&client_config->heartbeat);
 
        curl_easy_reset(curl);
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, STATUS_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -408,7 +397,7 @@ uint8_t kds_s2000w_client_start_scan(int64_t sessionid)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, STARTSCAN_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -464,7 +453,7 @@ uint8_t kds_s2000w_client_stop_scan(int64_t sessionid)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, STOPSCAN_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -529,7 +518,7 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo
 
        memset(url_path, 0, MAX_STR_BUFFER_LENGTH);
        sprintf(url_path, "%s/%i", IMAGE_PATH, img_number);
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, url_path, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -600,7 +589,7 @@ uint8_t kds_s2000w_client_delete_image(int64_t sessionid, uint8_t img_number)
 
        memset(url_path, 0, MAX_STR_BUFFER_LENGTH);
        sprintf(url_path, "%s/%i", IMAGE_PATH, img_number);
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, url_path, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -659,7 +648,7 @@ uint8_t kds_s2000w_client_get_option(int64_t sessionid, response* resp)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
@@ -718,7 +707,7 @@ uint8_t kds_s2000w_client_set_option(int64_t sessionid, response* resp)
 
        char* url = NULL;
        CURLU* url_handler = curl_url();
-       curl_url_set(url_handler, CURLUPART_URL, client_config.scanner_url, 0);
+       curl_url_set(url_handler, CURLUPART_URL, client_config->scanner_url, 0);
        curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0);
        curl_url_get(url_handler, CURLUPART_URL, &url, 0);
        curl_easy_setopt(curl, CURLOPT_URL, url);
index 6a77a120ae30c1a625f21ff89fd565fd344e9ef4..5972c9032d4bf309df44d82f9fb0843dd10a64dd 100644 (file)
@@ -10,7 +10,14 @@ typedef struct {
        uint64_t code;
 } response;
 
-void kds_s2000w_client_init(const char* scanner_url, const char* username, bool ssl_verify, uint8_t heartbeat);
+typedef struct {
+       char* scanner_url;
+       char* username;
+       bool ssl_verify;
+       uint8_t heartbeat;
+} client_config_t;
+
+void kds_s2000w_client_init(client_config_t* config);
 void kds_s2000w_client_free();
 
 response* kds_s2000w_client_response_init();
index 4c4b686ade082c589230172b723d623f4dc1d2e0..3a610ae247956a07964e88f14844522d2ee93c80 100644 (file)
@@ -37,6 +37,18 @@ uint32_t _kds_s2000w_handler_find_first_data_byte(const imagedata* image)
        return byte_count;
 }
 
+client_config_t* _kds_s2000w_handler_convert_config(program_config* config)
+{
+       client_config_t* client_config = malloc(sizeof(client_config_t));
+
+       client_config->scanner_url = config->scanner_url;
+       client_config->username = config->username;
+       client_config->ssl_verify = config->ssl_verify;
+       client_config->heartbeat = config->heartbeat;
+
+       return client_config;
+}
+
 void _kds_s2000w_handler_load_config(handler* h)
 {
        kds_s2000w_debug_printf(ALL, "kds_s2000w_handler_load_config");
@@ -49,10 +61,8 @@ void _kds_s2000w_handler_load_config(handler* h)
        if (config == NULL)
                return;
 
-       kds_s2000w_client_init(config->scanner_url,
-               config->username,
-               config->ssl_verify,
-               config->heartbeat);
+       client_config_t* client_config = _kds_s2000w_handler_convert_config(config);
+       kds_s2000w_client_init(client_config);
        kds_s2000w_debug_set_default_log_level(config->log_level);
        h->profile = config->profile;
 
@@ -60,6 +70,8 @@ void _kds_s2000w_handler_load_config(handler* h)
        config_stream = NULL;
        kds_s2000w_config_free(config);
        config = NULL;
+       free(client_config);
+       client_config = NULL;
 }
 
 uint32_t _kds_s2000w_handler_is_color(const handler* h)