#include "kds_s2000w_debug.h"
typedef struct {
+ int scan_started;
+ int second_metadata;
int cancel;
int read_size;
- int scan_started;
int readed_bytes_per_line;
int readed_lines;
metadata current_metadata;
if (!read_info.scan_started)
return SANE_STATUS_GOOD;
+ if (read_info.second_metadata) {
+ read_info.second_metadata = 0;
+ params->format = read_info.current_metadata.format;
+ params->last_frame = read_info.current_metadata.is_last;
+ params->bytes_per_line = read_info.current_metadata.bytes_per_line;
+ params->pixels_per_line = read_info.current_metadata.pixels_per_line;
+ params->lines = read_info.current_metadata.lines;
+ params->depth = read_info.current_metadata.depth;
+ return SANE_STATUS_GOOD;
+ }
+
for (int i = 0; i < 10; i++) {
sleep(1);
read_info.current_metadata = kds_s2000w_handler_get_parameters();
read_info.read_size = 0;
read_info.readed_lines = 0;
read_info.readed_bytes_per_line = 0;
+ read_info.second_metadata = 1;
debug_printf_int(DEBUG, "format", params->format);
debug_printf_int(DEBUG, "last frame", params->last_frame);
ck_assert_int_eq(params->pixels_per_line, 100);
ck_assert_int_eq(params->lines, 32);
ck_assert_int_eq(params->depth, 8);
+ ck_assert_int_eq(read_info->second_metadata, 1);
+
+ free(params);
+ params = NULL;
+}
+END_TEST
+
+START_TEST(kds_s2000w_net_get_parameters_second_scan_params)
+{
+ readinfo* read_info = get_read_info();
+ read_info->scan_started = 1;
+ mdata.valid = 1;
+ mdata.format = 1;
+ mdata.is_last = 1;
+ mdata.bytes_per_line = 50;
+ mdata.pixels_per_line = 100;
+ mdata.lines = 32;
+ mdata.depth = 8;
+ SANE_Parameters* params = malloc(sizeof(SANE_Parameters));
+
+ _sane_kds_s2000w_net_get_parameters(NULL, params);
+ read_info->second_metadata = 1;
+ _sane_kds_s2000w_net_get_parameters(NULL, params);
+
+ ck_assert_int_eq(params->format, 1);
+ ck_assert_int_eq(params->last_frame, 1);
+ ck_assert_int_eq(params->bytes_per_line, 50);
+ ck_assert_int_eq(params->pixels_per_line, 100);
+ ck_assert_int_eq(params->lines, 32);
+ ck_assert_int_eq(params->depth, 8);
+ ck_assert_int_eq(read_info->second_metadata, 0);
free(params);
params = NULL;
tcase_add_test(net_get_params, kds_s2000w_net_get_parameters_defaults);
tcase_add_test(net_get_params, kds_s2000w_net_get_parameters_invalid_metdata);
tcase_add_test(net_get_params, kds_s2000w_net_get_parameters_first_scan_params);
+ tcase_add_test(net_get_params, kds_s2000w_net_get_parameters_second_scan_params);
suite_add_tcase(get_params, net_get_params);
return get_params;