From 4372c37546656f95a3cfd6b4c73878bd36f8691a Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 30 Mar 2024 08:32:04 +0100 Subject: [PATCH] Revert "Merge branch 'feature/cancel' into develop" This reverts commit f8597e8d5c0135febcf82dbd9f4269cf5fcf517c, reversing changes made to 32a98e0f5f63359c3125c10924984bbdfa139d61. --- src/kds_s2000w_handler.c | 29 ++++++++++++++++ src/kds_s2000w_net.c | 35 ++++++------------- tests/kds_s2000w_net_read_tests.c | 56 +------------------------------ tests/kds_s2000w_net_tests.c | 9 +++-- 4 files changed, 44 insertions(+), 85 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index ef0cb57..a54c234 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -224,6 +224,35 @@ void free_handler(handler* h) h = NULL; } +void reset_handler(handler* h) +{ + debug_printf(ALL, "reset handler"); + free(h->pnm_image->data); + h->pnm_image->data = NULL; + free(h->jpg_image->data); + h->jpg_image->data = NULL; + + h->state = NOTCONNECTED; + h->current_scan_status->current_image_number = 1; + h->current_scan_status->available_images = 0; + h->current_scan_status->downloaded_images = 0; + h->current_scan_status->complete_scanned = 0; + h->current_metadata->format = 1; + h->current_metadata->channels = 3; + h->current_metadata->is_last = 1; + h->current_metadata->bytes_per_line = 0; + h->current_metadata->pixels_per_line = 0; + h->current_metadata->lines = 0; + h->current_metadata->depth = 8; + h->current_metadata->valid = 0; + h->current_metadata->scanned_all_complete = 0; + h->read_info->scan_started = 0; + h->read_info->cancel = 0; + h->read_info->read_size = 0; + h->read_info->readed_bytes_per_line = 0; + h->read_info->readed_lines = 0; +} + void kds_s2000w_handler_recreate_session(handler* h) { kds_s2000w_client_close_session(h->sessionid); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 0b5ac81..1cc71cb 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -127,8 +127,10 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, debug_printf(ALL, "sane_kds_s2000w_net_get_parameters"); handler* h = (handler*) handle; - if (h->read_info->cancel) - return SANE_STATUS_GOOD; + if (h->read_info->cancel) { + reset_handler(h); + return SANE_STATUS_CANCELLED; + } params->format = h->current_metadata->format; params->last_frame = h->current_metadata->is_last; @@ -156,6 +158,11 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) debug_printf(ALL, "sane_kds_s2000w_net_start"); handler* h = (handler*) handle; + if (h->read_info->cancel) { + reset_handler(h); + return SANE_STATUS_CANCELLED; + } + if (!h->read_info->scan_started) { h->read_info->cancel = 0; h->read_info->scan_started = 1; @@ -163,9 +170,6 @@ SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) kds_s2000w_handler_start_scan(h); } - if (h->read_info->cancel) - return SANE_STATUS_GOOD; - for (int i = 0; i < 200; i++) { usleep(500000); kds_s2000w_handler_get_parameters(h); @@ -205,27 +209,8 @@ SANE_Status _sane_kds_s2000w_net_read(SANE_Handle handle, SANE_Byte* data, // cancel if (h->read_info->cancel) { + reset_handler(h); *length = 0; - h->read_info->cancel = 0; - h->current_scan_status->current_image_number = 1; - h->current_scan_status->available_images = 0; - h->current_scan_status->downloaded_images = 0; - h->current_scan_status->complete_scanned = 0; - h->current_metadata->pixels_per_line = 0; - h->current_metadata->lines = 0; - h->current_metadata->valid = 0; - h->current_metadata->scanned_all_complete = 0; - h->read_info->scan_started = 0; - h->read_info->read_size = 0; - h->read_info->readed_bytes_per_line = 0; - h->read_info->readed_lines = 0; - free(h->jpg_image->data); - h->jpg_image->data = NULL; - h->jpg_image->size = 0; - free(h->pnm_image->data); - h->pnm_image->data = NULL; - h->pnm_image->size = 0; - kds_s2000w_handler_recreate_session(h); return SANE_STATUS_CANCELLED; } diff --git a/tests/kds_s2000w_net_read_tests.c b/tests/kds_s2000w_net_read_tests.c index 65eca99..8b6f712 100644 --- a/tests/kds_s2000w_net_read_tests.c +++ b/tests/kds_s2000w_net_read_tests.c @@ -24,71 +24,17 @@ void sane_kds_s2000w_net_read_cancel_test() handler* h = init_handler(); h->read_info->scan_started = 1; h->read_info->cancel = 1; - h->sessionid = 123123; - h->current_scan_status->current_image_number = 5; - h->current_scan_status->available_images = 20; - h->current_scan_status->downloaded_images = 4; - h->current_scan_status->complete_scanned = 1; - h->current_metadata->pixels_per_line = 1920; - h->current_metadata->lines = 1080; - h->current_metadata->valid = 1; - h->current_metadata->scanned_all_complete = 1; - h->read_info->scan_started = 1; - h->read_info->read_size = 10240; - h->read_info->readed_bytes_per_line = 1085; - h->read_info->readed_lines = 150; - h->jpg_image->data = malloc(sizeof(char) * 50); - h->jpg_image->size = 50; - h->jpg_image->data = memset(h->jpg_image->data, 15, h->jpg_image->size); - h->pnm_image->data = malloc(sizeof(char) * 100); - h->pnm_image->size = 100; - h->pnm_image->data = memset(h->pnm_image->data, 66, h->pnm_image->size); int* length = malloc(sizeof(int)); *length = 0; - response* resp_open_session = kds_s2000w_client_response_init(); - resp_open_session->data = realloc(resp_open_session->data, 25); - const char* session_data = "{\"SessionId\":\"8154711\"}\0"; - memcpy(resp_open_session->data, session_data, 25); - resp_open_session->code = 200; - resp_open_session->size = 25; - will_return(mock_response, resp_open_session); - will_return(__wrap_kds_s2000w_client_open_session, 0); - response* resp_set_option = kds_s2000w_client_response_init(); - resp_set_option->code = 200; - will_return(mock_response, resp_set_option); - will_return(__wrap_kds_s2000w_client_set_option, 0); - expect_function_call(__wrap_kds_s2000w_client_close_session); - expect_function_call(__wrap_kds_s2000w_client_open_session); - expect_function_call(__wrap_kds_s2000w_client_set_option); SANE_Status status = _sane_kds_s2000w_net_read(h, NULL, 0, length); assert_int_equal(h->read_info->cancel, 0); - assert_int_equal(status, SANE_STATUS_CANCELLED); - assert_int_equal(h->sessionid, 8154711); - assert_int_equal(h->current_scan_status->current_image_number, 1); - assert_int_equal(h->current_scan_status->available_images, 0); - assert_int_equal(h->current_scan_status->downloaded_images, 0); - assert_int_equal(h->current_scan_status->complete_scanned, 0); - assert_int_equal(h->current_metadata->pixels_per_line, 0); - assert_int_equal(h->current_metadata->lines, 0); - assert_int_equal(h->current_metadata->valid, 0); - assert_int_equal(h->current_metadata->scanned_all_complete, 0); assert_int_equal(h->read_info->scan_started, 0); - assert_int_equal(h->read_info->read_size, 0); - assert_int_equal(h->read_info->readed_bytes_per_line, 0); - assert_int_equal(h->read_info->readed_lines, 0); - assert_null(h->jpg_image->data); - assert_int_equal(h->jpg_image->size, 0); - assert_null(h->pnm_image->data); - assert_int_equal(h->pnm_image->size, 0); + assert_int_equal(status, SANE_STATUS_CANCELLED); free(length); length = NULL; - kds_s2000w_client_response_free(resp_open_session); - resp_open_session = NULL; - kds_s2000w_client_response_free(resp_set_option); - resp_set_option = NULL; free_handler(h); h = NULL; } diff --git a/tests/kds_s2000w_net_tests.c b/tests/kds_s2000w_net_tests.c index 0a46ab5..609cb63 100644 --- a/tests/kds_s2000w_net_tests.c +++ b/tests/kds_s2000w_net_tests.c @@ -112,13 +112,12 @@ void kds_s2000w_net_get_select_fd() void sane_kds_s2000w_net_start_cancel() { handler* h = init_handler(); - h->read_info->scan_started = 1; h->read_info->cancel = 1; SANE_Status status = _sane_kds_s2000w_net_start(h); - assert_int_equal(h->read_info->cancel, 1); - assert_int_equal(status, SANE_STATUS_GOOD); + assert_int_equal(h->read_info->cancel, 0); + assert_int_equal(status, SANE_STATUS_CANCELLED); free_handler(h); h = NULL; @@ -451,8 +450,8 @@ void sane_kds_s2000w_net_get_parameter_cancel() SANE_Status status = _sane_kds_s2000w_net_get_parameters(h, NULL); - assert_int_equal(h->read_info->cancel, 1); - assert_int_equal(status, SANE_STATUS_GOOD); + assert_int_equal(h->read_info->cancel, 0); + assert_int_equal(status, SANE_STATUS_CANCELLED); free_handler(h); h = NULL; -- 2.39.5