]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change connect to scanner extra method
authorBastian Dehn <hhaalo@arcor.de>
Mon, 20 Oct 2025 18:46:19 +0000 (20:46 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 20 Oct 2025 18:46:19 +0000 (20:46 +0200)
src/kds_s2000w_handler.c

index 794b60cec882dba4f6c500f8e924af0c92ba3167..b0f36b9065d19bd3544fa0e183d56b0e81a4179a 100644 (file)
@@ -136,6 +136,55 @@ void _kds_s2000w_handler_set_default_metadata(metadata_t* params)
        params->depth = 8;
 }
 
+connection_state_t _kds_s2000w_handler_connect(handler_t* h)
+{
+       response_t* resp = NULL;
+       uint8_t result = 0;
+       connection_state_t connection_state = NOTCONNECTED;
+       for (uint32_t i = 0; i < ATTEMPT; i++) {
+               kds_s2000w_client_response_free(resp);
+               resp = NULL;
+               resp = kds_s2000w_client_response_init();
+               result = kds_s2000w_client_open_session(resp);
+
+               if (result != 0) {
+                       connection_state = NOTCONNECTED;
+                       break;
+               }
+
+               if (resp->code == 200) {
+                       connection_state = OPENED;
+                       break;
+               }
+
+               if (resp->code == 423) {
+                       connection_state = BUSY;
+                       break;
+               }
+
+               sleep(1);
+       }
+
+       if (result != 0 || resp->code != 200) {
+               kds_s2000w_client_response_free(resp);
+               resp = NULL;
+               kds_s2000w_client_free();
+               return connection_state;
+       }
+
+       json_object* session_json = json_tokener_parse(resp->data);
+       json_object* value_object = json_object_object_get(session_json, "SessionId");
+       h->sessionid = json_object_get_int64(value_object);
+       kds_s2000w_debug_printf_long(INFO, "SessionId", h->sessionid);
+
+       json_object_put(session_json);
+       session_json = NULL;
+       kds_s2000w_client_response_free(resp);
+       resp = NULL;
+
+       return connection_state;
+}
+
 handler_t* kds_s2000w_handler_init()
 {
        kds_s2000w_debug_printf(ALL, "init handler");
@@ -219,52 +268,7 @@ connection_state_t kds_s2000w_handler_open(const char* devicename, void** handle
        _kds_s2000w_handler_load_config(h);
        kds_s2000w_debug_printf_version(INFO, DEVICE_NAME, MAJOR, MINOR, PATCH);
 
-       /* status code 408 request timeout waking up repeat open session */
-       response_t* resp = NULL;
-       uint8_t result = 0;
-       uint8_t connection_state = NOTCONNECTED;
-       for (uint32_t i = 0; i < ATTEMPT; i++) {
-               kds_s2000w_client_response_free(resp);
-               resp = NULL;
-               resp = kds_s2000w_client_response_init();
-               result = kds_s2000w_client_open_session(resp);
-
-               if (result != 0) {
-                       connection_state = NOTCONNECTED;
-                       break;
-               }
-
-               if (resp->code == 200) {
-                       connection_state = OPENED;
-                       break;
-               }
-
-               if (resp->code == 423) {
-                       connection_state = BUSY;
-                       break;
-               }
-
-               sleep(1);
-       }
-
-       if (result != 0 || resp->code != 200) {
-               kds_s2000w_client_response_free(resp);
-               resp = NULL;
-               kds_s2000w_client_free();
-               return connection_state;
-       }
-
-       json_object* session_json = json_tokener_parse(resp->data);
-       json_object* value_object = json_object_object_get(session_json, "SessionId");
-       h->sessionid = json_object_get_int64(value_object);
-       kds_s2000w_debug_printf_long(INFO, "SessionId", h->sessionid);
-
-       json_object_put(session_json);
-       session_json = NULL;
-       kds_s2000w_client_response_free(resp);
-       resp = NULL;
-
-       return connection_state;
+       return _kds_s2000w_handler_connect(h);
 }
 
 void kds_s2000w_handler_close(handler_t* h)