#define AUTOSTART_ON 1
#define OPTION_COUNT 47
-__attribute_deprecated__ void _kds_s2000w_handler_opts_write_string_value(json_object* value_object, void* value)
-{
- const char* json_value = json_object_get_string(value_object);
- char* str_value = (char*) value;
- strcpy(str_value, json_value);
-}
-
-__attribute_deprecated__ void _kds_s2000w_handler_opts_write_int_value(json_object* value_object, void* value)
-{
- int32_t* int_value_ptr = (int32_t*) value;
- *int_value_ptr = json_object_get_int(value_object);
-}
-
__attribute_deprecated__ void _kds_s2000w_handler_opts_write_string_value_to_json(json_object* value_object, void* value)
{
char* char_value = (char*) value;
json_object_set_int(value_object, *int_value_ptr);
}
+void _kds_s2000w_handler_opts_write_value(json_object* value_object, SANE_Value_Type value_type, void* value)
+{
+ if (value_type == SANE_TYPE_INT || value_type == SANE_TYPE_BOOL) {
+ int32_t* int_value_ptr = (int32_t*) value;
+ *int_value_ptr = json_object_get_int(value_object);
+ return;
+ }
+
+ if (value_type == SANE_TYPE_STRING) {
+ const char* json_value = json_object_get_string(value_object);
+ char* str_value = (char*) value;
+ strcpy(str_value, json_value);
+ }
+}
+
void _kds_s2000w_handler_opts_load_options(handler* h)
{
json_object_put(h->current_scanner_config);
void kds_s2000w_handler_opts_get_option(handler* h, uint32_t option, void* value, int32_t* info)
{
- json_object* config = NULL;
+ if (option == STANDARD_GROUP_NUMBER
+ || option == GEOMETRY_GROUP_NUMBER
+ || option == BOLDNESS_SMOOTHING_NUMBER
+ || option == BOLDNESS_COLOR_NUMBER
+ || option == IMAGE_PROCESSING_NUMBER
+ || option == FEEDER_GROUP_NUMBER)
+ 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");
option_descriptor* descriptor = kds_s2000w_option_descriptor_full_get_by_number(option);
json_object* value_object = NULL;
- switch(option) {
- case 0:
- config = json_object_object_get(h->current_scanner_config, "Configuration");
- int32_t* int_value_ptr = (int32_t*) value;
- *int_value_ptr = OPTION_COUNT;
- break;
- case 2:
- value_object = json_object_object_get(config, descriptor->config_name);
- _kds_s2000w_handler_opts_write_string_value(value_object, value);
+ if (option == 0) {
+ config = json_object_object_get(h->current_scanner_config, "Configuration");
+ int32_t* int_value_ptr = (int32_t*) value;
+ *int_value_ptr = OPTION_COUNT;
+ return;
+ }
- if (strcmp(value, "Flatbed") == 0)
- h->current_scan_status->feeder = Flatbed;
+ if (option == 2) {
+ value_object = json_object_object_get(config, descriptor->config_name);
+ _kds_s2000w_handler_opts_write_value(value_object, descriptor->descriptor.type, value);
- if (strcmp(value, "DocumentFeeder") == 0)
- h->current_scan_status->feeder = DocumentFeeder;
+ if (strcmp(value, "Flatbed") == 0)
+ h->current_scan_status->feeder = Flatbed;
- if (strcmp(value, "Automatic") == 0)
- h->current_scan_status->feeder = Automatic;
+ if (strcmp(value, "DocumentFeeder") == 0)
+ h->current_scan_status->feeder = DocumentFeeder;
- break;
- case 3:
- case 5:
- case 7:
- case 8:
- case 14:
- case 16:
- case 19:
- case 21:
- case 24:
- case 29:
- case 36:
- case 37:
- case 38:
- case 39:
- case 42:
- case 43:
- case 44:
- case 46:
- value_object = json_object_object_get(config, descriptor->config_name);
- _kds_s2000w_handler_opts_write_string_value(value_object, value);
- break;
- case 4:
- case 9:
- case 10:
- case 11:
- case 12:
- case 15:
- case 17:
- case 20:
- case 22:
- case 23:
- case 25:
- case 26:
- case 27:
- case 28:
- case 30:
- case 33:
- case 34:
- case 35:
- case 41:
- case 45:
- value_object = json_object_object_get(config, descriptor->config_name);
- _kds_s2000w_handler_opts_write_int_value(value_object, value);
- break;
- default:
- break;
+ if (strcmp(value, "Automatic") == 0)
+ h->current_scan_status->feeder = Automatic;
+
+ return;
}
+
+ value_object = json_object_object_get(config, descriptor->config_name);
+ _kds_s2000w_handler_opts_write_value(value_object, descriptor->descriptor.type, value);
}
void kds_s2000w_handler_opts_set_option(handler* h, uint32_t option, void* value, int32_t* info)