#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)
{
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);
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();
}
{
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();
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);
}
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);