}
}
+void _kds_s2000w_handler_opts_load_options(handler* h)
+{
+ json_object_put(h->current_scanner_config);
+ h->current_scanner_config = NULL;
+
+ response* resp = kds_s2000w_client_response_init();
+ uint8_t result = kds_s2000w_client_get_option(h->sessionid, resp);
+
+ if (result != 0 || resp->code != 200) {
+ kds_s2000w_debug_printf_int(ERROR, "load options response code", resp->code);
+ kds_s2000w_client_response_free(resp);
+ resp = NULL;
+ return;
+ }
+
+ h->current_scanner_config = json_tokener_parse(resp->data);
+
+ kds_s2000w_client_response_free(resp);
+ resp = NULL;
+}
+
+void _kds_s2000w_handler_opts_set_autostart_on(json_object* config)
+{
+ uint32_t auto_start_value = AUTOSTART_ON;
+ json_object* value_object = json_object_object_get(config, AUTOSTART);
+ _kds_s2000w_handler_opts_write_value_to_json(value_object, SANE_TYPE_INT, &auto_start_value);
+}
+
+void _kds_s2000w_handler_opts_set_options(handler* h)
+{
+ const char* json_string = json_object_to_json_string_ext(h->current_scanner_config, JSON_C_TO_STRING_PLAIN);
+ response* resp = kds_s2000w_client_response_init();
+ resp->size = sizeof(char) * strlen(json_string);
+ resp->code = 0;
+ resp->data = realloc(resp->data, resp->size);
+ resp->data = memcpy(resp->data, json_string, resp->size);
+ kds_s2000w_client_set_option(h->sessionid, resp);
+ if (resp->code != 200)
+ kds_s2000w_debug_printf_int(ERROR, "set options response code", resp->code);
+
+ kds_s2000w_client_response_free(resp);
+ resp = NULL;
+}
+
+json_object* _kds_s2000w_handler_opts_load_config(handler* h)
+{
+ if (h->current_scanner_config != NULL)
+ return json_object_object_get(h->current_scanner_config, CONFIGURATION);
+
+ _kds_s2000w_handler_opts_load_options(h);
+ json_object* config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
+ _kds_s2000w_handler_opts_set_autostart_on(config);
+ _kds_s2000w_handler_opts_set_options(h);
+
+ return config;
+}
+
void _kds_s2000w_handler_opts_set_valid_coord_x(option_descriptor* descriptor, handler* h)
{
bool valid = h->coord->offset_x >= 0 && h->coord->offset_x <= 75;
json_object_set_int(value_object, h->coord->height);
}
-void _kds_s2000w_handler_opts_load_options(handler* h)
-{
- json_object_put(h->current_scanner_config);
- h->current_scanner_config = NULL;
-
- response* resp = kds_s2000w_client_response_init();
- uint8_t result = kds_s2000w_client_get_option(h->sessionid, resp);
-
- if (result != 0 || resp->code != 200) {
- kds_s2000w_debug_printf_int(ERROR, "load options response code", resp->code);
- kds_s2000w_client_response_free(resp);
- resp = NULL;
- return;
- }
-
- h->current_scanner_config = json_tokener_parse(resp->data);
-
- kds_s2000w_client_response_free(resp);
- resp = NULL;
-}
-
-void _kds_s2000w_handler_opts_set_autostart_on(json_object* config)
-{
- uint32_t auto_start_value = AUTOSTART_ON;
- json_object* value_object = json_object_object_get(config, AUTOSTART);
- _kds_s2000w_handler_opts_write_value_to_json(value_object, SANE_TYPE_INT, &auto_start_value);
-}
-
void _kds_s2000w_handler_opts_set_option_to_default(handler* h)
{
response* resp = kds_s2000w_client_response_init();
resp = NULL;
}
-void _kds_s2000w_handler_opts_set_options(handler* h)
-{
- const char* json_string = json_object_to_json_string_ext(h->current_scanner_config, JSON_C_TO_STRING_PLAIN);
- response* resp = kds_s2000w_client_response_init();
- resp->size = sizeof(char) * strlen(json_string);
- resp->code = 0;
- resp->data = realloc(resp->data, resp->size);
- resp->data = memcpy(resp->data, json_string, resp->size);
- kds_s2000w_client_set_option(h->sessionid, resp);
- if (resp->code != 200)
- kds_s2000w_debug_printf_int(ERROR, "set options response code", resp->code);
-
- kds_s2000w_client_response_free(resp);
- resp = NULL;
-}
-
void _kds_s2000w_handler_opts_set_enable_cropping_image(json_object* config)
{
json_object* cropping_mode = json_object_object_get(config, CROPPING_MODE);
void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value, int32_t* info)
{
- json_object* config = NULL;
- if (h->current_scanner_config == NULL) {
- _kds_s2000w_handler_opts_load_options(h);
- config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
- _kds_s2000w_handler_opts_set_autostart_on(config);
- _kds_s2000w_handler_opts_set_options(h);
- }
-
- config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
+ json_object* config = _kds_s2000w_handler_opts_load_config(h);
option_descriptor* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option);
if (strcmp(descriptor->config_name, OPTION_COUNT) == 0) {
if (h->read_info->scan_started)
return;
- json_object* config = NULL;
- if (h->current_scanner_config == NULL) {
- _kds_s2000w_handler_opts_load_options(h);
- config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
- _kds_s2000w_handler_opts_set_autostart_on(config);
- }
-
- if (h->current_scanner_config != NULL)
- config = json_object_object_get(h->current_scanner_config, CONFIGURATION);
-
+ json_object* config = _kds_s2000w_handler_opts_load_config(h);
option_descriptor* descriptor = kds_s2000w_option_descriptors_full_get_by_number(option);
json_object* value_object = json_object_object_get(config, descriptor->config_name);