h = NULL;
}
+void* cancel_reset_handler(void* h)
+{
+ handler* handle = (handler*) h;
+ sleep(2);
+ reset_handler(handle);
+
+ return NULL;
+}
+
void reset_handler(handler* h)
{
#ifndef NODEBUG
handler* init_handler();
void free_handler(handler* h);
+void* cancel_reset_handler(void* h);
void reset_handler(handler* h);
void kds_s2000w_handler_recreate_session(handler* h);
void kds_s2000w_handler_open(const char* devicename, void** handle);
#include <string.h>
#include <unistd.h>
#include <math.h>
+#include <pthread.h>
#include "config.h"
#include "kds_s2000w_net.h"
#include "kds_s2000w_option_descriptors.h"
handler* h = (handler*) handle;
if (h->read_info->cancel) {
- reset_handler(h);
+ pthread_t reset_thread;
+ pthread_create(&reset_thread, NULL, cancel_reset_handler, handle);
return SANE_STATUS_CANCELLED;
}
handler* h = (handler*) handle;
if (h->read_info->cancel) {
- reset_handler(h);
+ pthread_t reset_thread;
+ pthread_create(&reset_thread, NULL, cancel_reset_handler, handle);
return SANE_STATUS_CANCELLED;
}
// cancel
if (h->read_info->cancel) {
- reset_handler(h);
+ pthread_t reset_thread;
+ pthread_create(&reset_thread, NULL, cancel_reset_handler, handle);
*length = 0;
return SANE_STATUS_CANCELLED;
}
return;
}
-void sane_kds_s2000w_net_read_cancel_test()
-{
- handler* h = init_handler();
- h->read_info->scan_started = 1;
- h->read_info->cancel = 1;
- int* length = malloc(sizeof(int));
- *length = 0;
-
- SANE_Status status = _sane_kds_s2000w_net_read(h, NULL, 0, length);
-
- assert_int_equal(h->read_info->cancel, 0);
- assert_int_equal(h->read_info->scan_started, 0);
- assert_int_equal(status, SANE_STATUS_CANCELLED);
-
- free(length);
- length = NULL;
- free_handler(h);
- h = NULL;
-}
-
void sane_kds_s2000w_net_read_without_data()
{
int length = 0;
#include <setjmp.h>
#include <cmocka.h>
-void sane_kds_s2000w_net_read_cancel_test();
void sane_kds_s2000w_net_read_without_data();
void sane_kds_s2000w_net_read_empty_image();
void sane_kds_s2000w_net_read_without_header_test();
int main()
{
const struct CMUnitTest net_read_tests[] = {
- cmocka_unit_test(sane_kds_s2000w_net_read_cancel_test),
cmocka_unit_test(sane_kds_s2000w_net_read_without_data),
cmocka_unit_test(sane_kds_s2000w_net_read_empty_image),
cmocka_unit_test(sane_kds_s2000w_net_read_without_header_test),
assert_int_equal(result, SANE_STATUS_UNSUPPORTED);
}
-
-void sane_kds_s2000w_net_start_cancel()
-{
- handler* h = init_handler();
- h->read_info->cancel = 1;
-
- SANE_Status status = _sane_kds_s2000w_net_start(h);
-
- assert_int_equal(h->read_info->cancel, 0);
- assert_int_equal(status, SANE_STATUS_CANCELLED);
-
- free_handler(h);
- h = NULL;
-}
-
void sane_kds_s2000w_net_start(void** state)
{
response** response_list = (response**) *state;
h = NULL;
}
-void sane_kds_s2000w_net_get_parameter_cancel()
-{
- handler* h = init_handler();
- h->read_info->cancel = 1;
-
- SANE_Status status = _sane_kds_s2000w_net_get_parameters(h, NULL);
-
- assert_int_equal(h->read_info->cancel, 0);
- assert_int_equal(status, SANE_STATUS_CANCELLED);
-
- free_handler(h);
- h = NULL;
-}
-
void sane_kds_s2000w_net_cancel()
{
response* resp = kds_s2000w_client_response_init();
void kds_s2000w_net_get_devices_only_remote();
void kds_s2000w_net_set_io_mode();
void kds_s2000w_net_get_select_fd();
-void sane_kds_s2000w_net_start_cancel();
void sane_kds_s2000w_net_start(void** state);
void sane_kds_s2000w_net_start_one_page_per_flatscan(void** state);
void sane_kds_s2000w_net_start_one_page_per_feeder(void** state);
void sane_kds_s2000w_net_start_two_pages_per_feeder(void** state);
void sane_kds_s2000w_net_start_slow_two_pages_per_feeder(void** state);
-void sane_kds_s2000w_net_get_parameter_cancel();
void sane_kds_s2000w_net_cancel();
void sane_kds_s2000w_net_open();
void sane_kds_s2000w_net_open_busy_device();
cmocka_unit_test(kds_s2000w_net_get_devices_only_remote),
cmocka_unit_test(kds_s2000w_net_set_io_mode),
cmocka_unit_test(kds_s2000w_net_get_select_fd),
- cmocka_unit_test(sane_kds_s2000w_net_start_cancel),
- cmocka_unit_test(sane_kds_s2000w_net_get_parameter_cancel),
cmocka_unit_test(sane_kds_s2000w_net_cancel),
cmocka_unit_test(sane_kds_s2000w_net_open),
cmocka_unit_test(sane_kds_s2000w_net_open_busy_device),