h->profile = 0;
h->sessionid = 0;
h->state = NOTCONNECTED;
+ h->scan_status->state = STOPPED;
h->scan_status->image_number = 1;
h->scan_status->available_images = 0;
h->scan_status->downloaded_images = 0;
- h->scan_status->completed = false;
- h->read_info->scan_started = false;
- h->read_info->cancel = false;
h->read_info->read_size = 0;
h->image->size = 0;
h->image->data = NULL;
free(h->image->data);
h->image->data = NULL;
+ h->scan_status->state = STOPPED;
h->scan_status->image_number = 1;
h->scan_status->available_images = 0;
h->scan_status->downloaded_images = 0;
- h->scan_status->completed = false;
- h->read_info->scan_started = false;
- h->read_info->cancel = false;
h->read_info->read_size = 0;
}
status_value_obj = json_object_object_get(status_obj, "State");
const char* scanner_state = json_object_get_string(status_value_obj);
if (strcmp(scanner_state, "Scanning") != 0)
- h->scan_status->completed = true;
+ h->scan_status->state = COMPLETED;
json_object_put(status_resp_obj);
status_resp_obj = NULL;
Automatic
};
+enum {
+ STOPPED,
+ STARTED,
+ CANCLED,
+ COMPLETED
+};
+
typedef struct {
size_t size;
void* data;
} coord_t;
typedef struct {
+ uint8_t state;
uint8_t image_number;
uint8_t available_images;
uint8_t downloaded_images;
- bool completed;
} scan_status_t;
typedef struct {
- bool scan_started;
- bool cancel;
uint64_t read_size;
} readinfo;
void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value, int32_t* info)
{
- if (h->read_info->scan_started)
+ if (h->scan_status->state == STARTED)
return;
json_object* config = _kds_s2000w_handler_opts_load_config(h);
handler* h = (handler*) handle;
- if (h->read_info->cancel)
+ if (h->scan_status->state == CANCLED)
return SANE_STATUS_CANCELLED;
- if (!h->read_info->scan_started) {
- h->read_info->cancel = false;
- h->read_info->scan_started = true;
+ if (h->scan_status->state == STOPPED) {
+ h->scan_status->state = STARTED;
kds_s2000w_handler_start_scan(h);
}
for (uint32_t i = 0; i < 30; i++) {
kds_s2000w_handler_get_current_scan_status(h);
-
- if (h->scan_status->available_images > 0)
- break;
+ if (h->scan_status->available_images > 0)
+ break;
}
if (h->scan_status->available_images < 1)
kds_s2000w_handler_delete_current_image(h);
h->scan_status->image_number++;
- if (h->scan_status->completed) {
+ if (h->scan_status->state == COMPLETED) {
kds_s2000w_handler_stop_scan(h);
return SANE_STATUS_GOOD;
}
handler* h = (handler*) handle;
- if (h->read_info->cancel) {
+ if (h->scan_status->state == CANCLED) {
kds_s2000w_debug_printf(DEBUG, "scan completed canceled");
kds_s2000w_handler_reset(h);
kds_s2000w_handler_recreate_session(h);
kds_s2000w_handler_get_current_scan_status(h);
- if (h->scan_status->completed) {
+ if (h->scan_status->state == COMPLETED) {
kds_s2000w_debug_printf(DEBUG, "scan completed");
kds_s2000w_handler_reset(h);
return;
}
kds_s2000w_debug_printf(DEBUG, "scan canceled");
- h->read_info->cancel = true;
+ h->scan_status->state = CANCLED;
kds_s2000w_handler_stop_scan(h);
}
void sane_kds_s2000w_net_read_bytes_per_line_bigger_test()
{
handler* h = kds_s2000w_handler_init();
- h->read_info->cancel = false;
h->read_info->read_size = 0;
h->image->size = 95003;
h->image->data = malloc(sizeof(char) * 95003);
int result = sane_kds_s2000w_net_start(h);
assert_int_equal(result, SANE_STATUS_GOOD);
- assert_false(h->scan_status->completed);
+ assert_int_equal(h->scan_status->state, STARTED);
json_object_put(h->scanner_config);
h->scanner_config = NULL;
int result = sane_kds_s2000w_net_start(h);
assert_int_equal(result, SANE_STATUS_GOOD);
- assert_false(h->scan_status->completed);
+ assert_int_equal(h->scan_status->state, STARTED);
json_object_put(h->scanner_config);
h->scanner_config = NULL;
int result = sane_kds_s2000w_net_start(h);
assert_int_equal(result, SANE_STATUS_GOOD);
- assert_true(h->scan_status->completed);
+ assert_int_equal(h->scan_status->state, COMPLETED);
json_object_put(h->scanner_config);
h->scanner_config = NULL;
int32_t result = sane_kds_s2000w_net_start(h);
assert_int_equal(result, SANE_STATUS_GOOD);
- assert_true(h->scan_status->completed);
+ assert_int_equal(h->scan_status->state, COMPLETED);
json_object_put(h->scanner_config);
h->scanner_config = NULL;
sane_kds_s2000w_net_cancel(h);
- assert_true(h->read_info->cancel);
+ assert_int_equal(h->scan_status->state, CANCLED);
kds_s2000w_client_response_free(resp);
resp = NULL;
void sane_kds_s2000w_net_cancel_start_test()
{
handler* h = kds_s2000w_handler_init();
- h->read_info->cancel = true;
+ h->scan_status->state = CANCLED;
SANE_Status status = sane_kds_s2000w_net_start(h);
expect_function_call(__wrap_kds_s2000w_client_open_session);
expect_function_call(__wrap_kds_s2000w_client_set_option);
handler* h = kds_s2000w_handler_init();
- h->read_info->cancel = true;
+ h->scan_status->state = CANCLED;
sane_kds_s2000w_net_cancel(h);
- assert_false(h->read_info->cancel);
+ assert_int_equal(h->scan_status->state, STOPPED);
kds_s2000w_client_response_free(resp_status);
resp_status = NULL;
sane_kds_s2000w_net_cancel(h);
- assert_false(h->read_info->cancel);
- assert_false(h->scan_status->completed);
+ assert_int_equal(h->scan_status->state, STOPPED);
kds_s2000w_client_response_free(resp_status);
resp_status = NULL;
sane_kds_s2000w_net_cancel(h);
- assert_false(h->read_info->cancel);
- assert_false(h->scan_status->completed);
+ assert_int_equal(h->scan_status->state, STOPPED);
kds_s2000w_client_response_free(resp_status);
resp_status = NULL;