From 80be30621e77f503830048c76ca20f39fe98f28c Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 27 Jan 2024 12:59:41 +0100 Subject: [PATCH] read all option --- src/kds_s2000w_handler.c | 50 +++++++++++++-- src/kds_s2000w_net.c | 132 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+), 5 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index f6aa101..b2296ba 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -96,9 +96,7 @@ void kds_s2000w_handler_get_option(int option, void* value) switch(option) { case 0: int* int_value_ptr = (int*) value; - int option_count = json_object_object_length(config); - printf("option number count: %i\n", option_count); - *int_value_ptr = 12; + *int_value_ptr = json_object_object_length(config) + 1; break; case 1: value_object = json_object_object_get(config, "DPI"); @@ -133,12 +131,10 @@ void kds_s2000w_handler_get_option(int option, void* value) _write_string_value(value_object, value); break; case 9: - printf("DEBUG response: \n%s\n", resp->data); value_object = json_object_object_get(config, "ColorAutoBrightnessMode"); _write_string_value(value_object, value); break; case 10: - printf("DEBUG response: \n%s\n", resp->data); value_object = json_object_object_get(config, "ColorBalanceMode"); _write_string_value(value_object, value); break; @@ -146,6 +142,50 @@ void kds_s2000w_handler_get_option(int option, void* value) value_object = json_object_object_get(config, "ColorBalanceAggressiveness"); _write_int_value(value_object, value); break; + case 12: + value_object = json_object_object_get(config, "ColorBalanceRed"); + _write_int_value(value_object, value); + break; + case 13: + value_object = json_object_object_get(config, "ColorBalanceGreen"); + _write_int_value(value_object, value); + break; + case 14: + value_object = json_object_object_get(config, "ColorBalanceBlue"); + _write_int_value(value_object, value); + break; + case 15: + value_object = json_object_object_get(config, "ForegroundBoldnessMode"); + _write_string_value(value_object, value); + break; + case 16: + value_object = json_object_object_get(config, "ForegroundBoldnessAggressiveness"); + _write_int_value(value_object, value); + break; + case 17: + value_object = json_object_object_get(config, "BackgroundSmoothingMode"); + _write_string_value(value_object, value); + break; + case 18: + value_object = json_object_object_get(config, "BackgroundSmoothingAggressiveness"); + _write_int_value(value_object, value); + break; + case 19: + value_object = json_object_object_get(config, "BinarizationMode"); + _write_string_value(value_object, value); + break; + case 20: + value_object = json_object_object_get(config, "BinarizationContrast"); + _write_int_value(value_object, value); + break; + case 21: + value_object = json_object_object_get(config, "MaxDocumentLength"); + _write_int_value(value_object, value); + break; + case 22: + value_object = json_object_object_get(config, "ScanSource"); + _write_string_value(value_object, value); + break; default: break; } diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index 77e1973..cc17776 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -233,6 +233,127 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; break; + case 12: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "colorbalancered"; + option_descriptor_array.option_descriptors[option]->title = "colorbalancered"; + option_descriptor_array.option_descriptors[option]->desc = "colorbalancered"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 13: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "colorbalancegreen"; + option_descriptor_array.option_descriptors[option]->title = "colorbalancegreen"; + option_descriptor_array.option_descriptors[option]->desc = "colorbalancegreen"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 14: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "colorbalanceblue"; + option_descriptor_array.option_descriptors[option]->title = "colorbalanceblue"; + option_descriptor_array.option_descriptors[option]->desc = "colorbalanceblue"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 15: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "foregroundboldnessmode"; + option_descriptor_array.option_descriptors[option]->title = "foregroundboldnessmode"; + option_descriptor_array.option_descriptors[option]->desc = "foregroundboldnessmode"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 16: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "foregroundboldnessaggressiveness"; + option_descriptor_array.option_descriptors[option]->title = "foregroundboldnessaggressiveness"; + option_descriptor_array.option_descriptors[option]->desc = "foregroundboldnessaggressiveness"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 17: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "backgroundsmoothingmode"; + option_descriptor_array.option_descriptors[option]->title = "backgroundsmoothingmode"; + option_descriptor_array.option_descriptors[option]->desc = "backgroundsmoothingmode"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 18: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "backgroundsmoothingaggressiveness"; + option_descriptor_array.option_descriptors[option]->title = "backgroundsmoothingaggressiveness"; + option_descriptor_array.option_descriptors[option]->desc = "backgroundsmoothingaggressiveness"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 19: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "binarizationmode"; + option_descriptor_array.option_descriptors[option]->title = "binarizationmode"; + option_descriptor_array.option_descriptors[option]->desc = "binarizationmode"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 20: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "binarizationcontrast"; + option_descriptor_array.option_descriptors[option]->title = "binarizationcontrast"; + option_descriptor_array.option_descriptors[option]->desc = "binarizationcontrast"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 21: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "maxdocumentlength"; + option_descriptor_array.option_descriptors[option]->title = "maxdocumentlength"; + option_descriptor_array.option_descriptors[option]->desc = "maxdocumentlength"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; + case 22: + free(option_descriptor_array.option_descriptors[option]); + option_descriptor_array.option_descriptors[option] = NULL; + option_descriptor_array.option_descriptors[option] = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_array.option_descriptors[option]->name = "scansource"; + option_descriptor_array.option_descriptors[option]->title = "scansource"; + option_descriptor_array.option_descriptors[option]->desc = "ScanSoscansourceurce"; + option_descriptor_array.option_descriptors[option]->cap = SANE_CAP_SOFT_DETECT; + option_descriptor_array.option_descriptors[option]->constraint_type = SANE_CONSTRAINT_NONE; + option_descriptor_array.option_descriptors[option]->constraint.string_list = NULL; + break; default: return NULL; break; @@ -246,6 +367,13 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( case 5: case 7: case 11: + case 12: + case 13: + case 14: + case 16: + case 18: + case 20: + case 21: option_descriptor_array.option_descriptors[option]->type = SANE_TYPE_INT; option_descriptor_array.option_descriptors[option]->size = sizeof(SANE_Int); break; @@ -255,6 +383,10 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor( case 8: case 9: case 10: + case 15: + case 17: + case 19: + case 22: option_descriptor_array.option_descriptors[option]->type = SANE_TYPE_STRING; option_descriptor_array.option_descriptors[option]->unit = SANE_UNIT_NONE; option_descriptor_array.option_descriptors[option]->size = sizeof(SANE_String) * 50; -- 2.39.5