h->read_info->readed_lines = 0;
}
+void kds_s2000w_handler_recreate_session(handler* h)
+{
+ kds_s2000w_client_close_session(h->sessionid);
+ response* resp = kds_s2000w_client_response_init();
+ kds_s2000w_client_open_session("hhaalo", resp);
+
+ if (resp->code == 200) {
+ json_object* resp_config = json_tokener_parse(resp->data);
+ json_object* value_object = NULL;
+ json_object_object_get_ex(resp_config, "SessionId", &value_object);
+ h->sessionid = json_object_get_int64(value_object);
+ h->state = OPENED;
+ value_object = NULL;
+ json_object_put(resp_config);
+ resp_config = NULL;
+ debug_printf_long(INFO, "SessionId", h->sessionid);
+ }
+
+ kds_s2000w_client_response_free(resp);
+ resp = NULL;
+}
+
void kds_s2000w_handler_open(const char* devicename, void** handle)
{
debug_printf(ALL, "kds_s2000w_handler_open");
json_object_object_get_ex(resp_config, "SessionId", &value_object);
h->sessionid = json_object_get_int64(value_object);
h->state = OPENED;
+ debug_printf_long(INFO, "SessionId", h->sessionid);
value_object = NULL;
}
resp_config = NULL;
kds_s2000w_client_response_free(resp);
resp = NULL;
-
- return;
}
void kds_s2000w_handler_close(handler* h)
handler* init_handler();
void free_handler(handler* h);
void reset_handler(handler* h);
+void kds_s2000w_handler_recreate_session(handler* h);
void kds_s2000w_handler_open(const char* devicename, void** handle);
void kds_s2000w_handler_close(handler* h);
void kds_s2000w_handler_get_option(handler* handle, int option, void* value, int* info);
if (h->state == NOTCONNECTED)
return SANE_STATUS_IO_ERROR;
- debug_printf_long(INFO, "SessionId", h->sessionid);
return SANE_STATUS_GOOD;
}
break;
}
+ if (h->current_metadata->valid == 0) {
+ kds_s2000w_handler_recreate_session(h);
+ return SANE_STATUS_NO_DOCS;
+ }
+
if (h->current_scan_status->complete_scanned)
kds_s2000w_handler_stop_scan(h);