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");
_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)