curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
}
-size_t _kds_s2000w_client_write_callback(char* ptr, size_t size, size_t nmemb, void* data)
+size_t _kds_s2000w_client_write_callback(const char* ptr, size_t size, size_t nmemb, void* data)
{
response* resp = (response*) data;
char* _kds_s2000w_config_copy_config_string(cfg_t* cfg, const char* key)
{
- char* value_str = cfg_getstr(cfg, key);
+ const char* value_str = cfg_getstr(cfg, key);
size_t length = strlen(value_str) + 1;
char* new_str = malloc(sizeof(char) * length);
if (new_str == NULL)
if (config_string == NULL)
return config;
- if (strlen(config_string) <= 0)
+ if (strlen(config_string) == 0)
return config;
cfg_opt_t opts[] = {
}
uint8_t kds_s2000w_debug_get_log_level() {
- char* log_level = getenv("KDS_S2000W_NET_DEBUG");
+ const char* log_level = getenv("KDS_S2000W_NET_DEBUG");
if (log_level == NULL)
return log_level_default;
#define DEVICE_NAME "kds_s2000w_net"
#define ATTEMPT 30
-uint32_t _kds_s2000w_handler_find_first_data_byte(imagedata* image)
+uint32_t _kds_s2000w_handler_find_first_data_byte(const imagedata* image)
{
kds_s2000w_debug_printf(ALL, "sane_kds_s2000w_net_find_first_data_byte");
- char* data = (char*) image->data;
+ const char* data = (const char*) image->data;
uint8_t header_spaces = 3;
if (strncmp(data, "P4", 2) == 0)
config = NULL;
}
+uint32_t _kds_s2000w_handler_is_color(const handler* h)
+{
+ json_object* config = json_object_object_get(h->current_scanner_config, "Configuration");
+ json_object* color_mode = json_object_object_get(config, "ColorMode");
+ const char* color_value = json_object_get_string(color_mode);
+
+ if (strcmp(color_value, "Color") == 0)
+ return 1;
+
+ return 0;
+}
+
handler* kds_s2000w_handler_init()
{
kds_s2000w_debug_printf(ALL, "init handler");
resp = NULL;
}
-void kds_s2000w_handler_start_scan(handler* h)
+void kds_s2000w_handler_start_scan(const handler* h)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_handler_start_scan");
kds_s2000w_client_start_scan(h->sessionid);
}
-void kds_s2000w_handler_stop_scan(handler* h)
+void kds_s2000w_handler_stop_scan(const handler* h)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_handler_stop_scan");
params->pixels_per_line = 0;
params->lines = 0;
params->depth = 8;
-
- json_object* config = json_object_object_get(h->current_scanner_config, "Configuration");
- json_object* metadata = json_object_object_get(config, "ColorMode");
- const char* color_value = json_object_get_string(metadata);
-
- if (strcmp(color_value, "Color") == 0)
- params->format = 1;
-
- if (strcmp(color_value, "Gray") == 0)
- params->format = 0;
-
- if (strcmp(color_value, "BW") == 0)
- params->format = 0;
+ params->format = _kds_s2000w_handler_is_color(h);
if (h->image->data == NULL)
return;
h->read_info->read_size = _kds_s2000w_handler_find_first_data_byte(h->image);
- metadata = NULL;
free(mdata);
mdata = NULL;
free(scanner_image->data);
void kds_s2000w_handler_opts_get_option(handler* handle, uint32_t option, void* value, int32_t* info);
void kds_s2000w_handler_opts_set_option(handler* handle, uint32_t option, void* value, int32_t* info);
-void kds_s2000w_handler_start_scan(handler* h);
-void kds_s2000w_handler_stop_scan(handler* h);
+void kds_s2000w_handler_start_scan(const handler* h);
+void kds_s2000w_handler_stop_scan(const handler* h);
void kds_s2000w_handler_get_current_metadata(handler* h, metadata* params);
void kds_s2000w_handler_get_current_scan_status(handler* h);
resp = NULL;
}
-void _kds_s2000w_handler_opts_set_scan_source(option_descriptor* descriptor, handler* h, char* value)
+void _kds_s2000w_handler_opts_set_scan_source(const option_descriptor* descriptor, handler* h, const char* value)
{
if (strcmp(descriptor->config_name, SCAN_SOURCE) != 0)
return;
resp = NULL;
}
-json_object* _kds_s2000w_handler_opts_reset(option_descriptor* descriptor, handler* h)
+json_object* _kds_s2000w_handler_opts_reset(const option_descriptor* descriptor, handler* h)
{
if (strcmp(descriptor->config_name, RESET) != 0)
return json_object_object_get(h->current_scanner_config, CONFIGURATION);
color_drop_out_aggressiveness->cap &= ~SANE_CAP_SOFT_SELECT;
}
-void _kds_s2000w_handler_opts_set_offset_x(option_descriptor* descriptor, handler* h, void* value)
+void _kds_s2000w_handler_opts_set_offset_x(const option_descriptor* descriptor, handler* h, const void* value)
{
if (strcmp(descriptor->config_name, IMAGE_OFFSET_X) != 0)
return;
- int32_t* int_value = (int32_t*) value;
+ const int32_t* int_value = (const int32_t*) value;
uint32_t tenth_inch = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, *int_value);
h->coord->offset_x = tenth_inch;
}
-void _kds_s2000w_handler_opts_set_offset_y(option_descriptor* descriptor, handler* h, void* value)
+void _kds_s2000w_handler_opts_set_offset_y(const option_descriptor* descriptor, handler* h, const void* value)
{
if (strcmp(descriptor->config_name, IMAGE_OFFSET_Y) != 0)
return;
- int32_t* int_value = (int32_t*) value;
+ const int32_t* int_value = (const int32_t*) value;
uint32_t tenth_inch = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, *int_value);
h->coord->offset_y = tenth_inch;
}
-void _kds_s2000w_handler_opts_set_width(option_descriptor* descriptor, handler* h, void* value)
+void _kds_s2000w_handler_opts_set_width(const option_descriptor* descriptor, handler* h, const void* value)
{
if (strcmp(descriptor->config_name, IMAGE_WIDTH) != 0)
return;
- int32_t* int_value = (int32_t*) value;
+ const int32_t* int_value = (const int32_t*) value;
uint32_t offset_x_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, h->coord->offset_x);
uint32_t width_pixel = *int_value - offset_x_pixel;
uint32_t tenth_inch_width = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, width_pixel);
h->coord->width = tenth_inch_width;
}
-void _kds_s2000w_handler_opts_set_height(option_descriptor* descriptor, handler* h, void* value)
+void _kds_s2000w_handler_opts_set_height(const option_descriptor* descriptor, handler* h, const void* value)
{
if (strcmp(descriptor->config_name, IMAGE_HEIGHT) != 0)
return;
- int32_t* int_value = (int32_t*) value;
+ const int32_t* int_value = (const int32_t*) value;
uint32_t offset_y_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, h->coord->offset_y);
uint32_t height_pixel = *int_value - offset_y_pixel;
uint32_t tenth_inch_height = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, height_pixel);
h->coord->height = tenth_inch_height;
}
-void _kds_s2000w_handler_opts_set_info_option(option_descriptor* descriptor, int32_t* info) {
+void _kds_s2000w_handler_opts_set_info_option(const option_descriptor* descriptor, int32_t* info) {
if (info == NULL)
return;
*info = RELOAD_OPTIONS | RELOAD_PARAMS;
}
-void _kds_s2000w_handler_opts_set_depends_opts(handler* h,
+void _kds_s2000w_handler_opts_set_depends_opts(const handler* h,
const char* config_name,
json_object* config)
{
tsize_t _kds_s2000w_image_converter_tiff_read(thandle_t handler, tdata_t data, tsize_t size)
{
tiff_reader* reader = (tiff_reader*) handler;
- char* imagedata = (char*) reader->image->data;
+ const char* imagedata = (const char*) reader->image->data;
memcpy(data, &imagedata[reader->curr_offset], size);
reader->curr_offset += size;
toff_t _kds_s2000w_image_converter_tiff_size(thandle_t handler)
{
- tiff_reader* reader = (tiff_reader*) handler;
-
+ const tiff_reader* reader = (const tiff_reader*) handler;
return reader->curr_offset;
}
-uint32_t _kds_s2000w_image_converter_find_char(blobdata* image, uint32_t start, const char cfind)
+uint32_t _kds_s2000w_image_converter_find_char(const blobdata* image, uint32_t start, const char cfind)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_find_char");
- char* image_data = (char*) image->data;
+ const char* image_data = (const char*) image->data;
for (uint32_t i = start; i < image->size; i++) {
if (image_data[i] == cfind)
return 0;
}
-uint32_t _kds_s2000w_image_converter_get_number_from_substring(char* data, uint32_t start, uint32_t end)
+uint32_t _kds_s2000w_image_converter_get_number_from_substring(const char* data, uint32_t start, uint32_t end)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_get_number_from_substring");
TIFFClose(tiff);
}
-void _kds_s2000w_image_converter_pnm_metadata(blobdata* image, image_metadata* mdata)
+void _kds_s2000w_image_converter_pnm_metadata(const blobdata* image, image_metadata* mdata)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_converter_pnm_metadata");
- char* image_data = (char*) image->data;
+ const char* image_data = (const char*) image->data;
mdata->depth = 8;
if (strncmp(image_data, "P4", 2) == 0)
}
}
-void _kds_s2000w_image_converter_write_bw_pnm(uint8_t* data,
+void _kds_s2000w_image_converter_write_bw_pnm(const uint8_t* data,
size_t size,
uint32_t width,
uint32_t height,
pixels = NULL;
}
-void _kds_s2000w_image_converter_write_pnm(uint8_t* data,
+void _kds_s2000w_image_converter_write_pnm(const uint8_t* data,
size_t size,
uint32_t width,
uint32_t height,
#include "kds_s2000w_debug.h"
#include "kds_s2000w_image_type_check.h"
-bool kds_s2000w_image_type_check_is_tiff(blobdata* image)
+bool kds_s2000w_image_type_check_is_tiff(const blobdata* image)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_type_check_is_tiff");
if (image->size < 4)
return 0;
- char* image_data = (char*) image->data;
-
+ const char* image_data = (const char*) image->data;
bool result = image_data[0] == (char)0x49;
result = result && image_data[1] == (char)0x49;
result = result && image_data[2] == (char)0x2A;
return result && image_data[3] == (char)0x00;
}
-bool kds_s2000w_image_type_check_is_pnm(blobdata* image)
+bool kds_s2000w_image_type_check_is_pnm(const blobdata* image)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_type_check_is_pnm");
if (image->size < 2)
return 0;
- char* image_data = (char*) image->data;
+ const char* image_data = (const char*) image->data;
if (strncmp(image_data, "P6", 2) == 0)
return 1;
return strncmp(image_data, "P4", 2) == 0;
}
-bool kds_s2000w_image_type_check_is_jpeg(blobdata* image)
+bool kds_s2000w_image_type_check_is_jpeg(const blobdata* image)
{
kds_s2000w_debug_printf(ALL, "kds_s2000w_image_type_check_is_jpeg");
if (image->size < 2)
return 0;
- char* image_data = (char*) image->data;
-
+ const char* image_data = (const char*) image->data;
uint8_t result = image_data[0] == (char)0xff;
return result && image_data[1] == (char)0xd8;
}
\ No newline at end of file
#include <stdbool.h>
#include "kds_s2000w_image_converter.h"
-bool kds_s2000w_image_type_check_is_tiff(blobdata* image);
-bool kds_s2000w_image_type_check_is_pnm(blobdata* image);
-bool kds_s2000w_image_type_check_is_jpeg(blobdata* image);
+bool kds_s2000w_image_type_check_is_tiff(const blobdata* image);
+bool kds_s2000w_image_type_check_is_pnm(const blobdata* image);
+bool kds_s2000w_image_type_check_is_jpeg(const blobdata* image);
#endif
\ No newline at end of file
{
kds_s2000w_debug_printf(ALL, "sane_kds_s2000w_net_close");
- handler* h = (handler*) handle;
+ const handler* h = (const handler*) handle;
if (h == NULL || h->state != OPENED)
return;
return SANE_STATUS_EOF;
}
- char* image_data = (char*) h->image->data;
+ const char* image_data = (const char*) h->image->data;
memcpy(data, image_data + h->read_info->read_size, *length);
h->read_info->read_size += *length;
return SANE_STATUS_GOOD;
return;
}
- if (h->current_scan_status->available_images <= 0) {
+ if (h->current_scan_status->available_images == 0) {
kds_s2000w_debug_printf(DEBUG, "scan completed no availible images");
kds_s2000w_handler_reset(h);
kds_s2000w_handler_recreate_session(h);
void mock_response(response* resp)
{
- response* mock_resp = mock_type(response*);
+ const response* mock_resp = mock_type(response*);
if (mock_resp == NULL)
return;
char* __wrap_sanei_config_get_paths(void)
{
- char* str = "config_dir_list";
+ const char* str = "config_dir_list";
size_t size = strlen(str) + 1;
char* cpystr = malloc(size);
response_list[0] = kds_s2000w_client_response_init();
response_list[0]->code = 200;
response_list[1] = kds_s2000w_client_response_init();
- const char* metadata = "{\
+ const char* metadata_json = "{\
\"Metadata\": {\
\"BitDepth\": 8, \
\"ImageSize\": 1, \
}";
response_list[1]->size = 106;
response_list[1]->data = malloc(response_list[1]->size);
- memcpy(response_list[1]->data, metadata, response_list[1]->size);
+ memcpy(response_list[1]->data, metadata_json, response_list[1]->size);
response_list[1]->code = 200;
response_list[2] = kds_s2000w_client_response_init();
response_list[2]->code = 200;
const char* test_config = "{\"Configuration\": { \"ColorMode\": \"Color\" } }";
h->current_scanner_config = json_tokener_parse(test_config);
- int result = sane_kds_s2000w_net_start(h);
+ sane_kds_s2000w_net_start(h);
const char* status2 = "{ \
\"Status\": { \
expect_function_call(__wrap_kds_s2000w_client_get_image);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
expect_function_call(__wrap_kds_s2000w_client_stop_scan);
- result = sane_kds_s2000w_net_start(h);
+ int32_t result = sane_kds_s2000w_net_start(h);
assert_int_equal(result, SANE_STATUS_GOOD);
assert_true(h->current_scan_status->complete_scanned);