]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
read option three
authorBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 10:20:10 +0000 (11:20 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 10:20:10 +0000 (11:20 +0100)
src/kds_s2000w_handler.c
src/kds_s2000w_net.c

index 7b1704dbfc4b5cbdf6aa22ea072aafc77cd69283..44e968a102a073344ff39f2ccf4fc9f2b1a5b3df 100644 (file)
@@ -77,11 +77,16 @@ void kds_s2000w_handler_get_option(int option, void* value)
                return;
        }
 
+       printf("DEBUG response: \n%s\n", resp->data);
        json_object* value_object = NULL;
+       int value_length = 0;
+       const char* string_value = NULL;
+       char* char_value = NULL;
+       int* int_value = NULL;
        switch(option) {
                case 0:
-                       int* ignore_value = (int*) value;
-                       *ignore_value = 3;
+                       int_value = (int*) value;
+                       *int_value = 4;
                        break;
                case 1:
                        value_object = json_object_object_get(config, "DPI");
@@ -91,9 +96,16 @@ void kds_s2000w_handler_get_option(int option, void* value)
                        break;
                case 2:
                        value_object = json_object_object_get(config, "ScanSide");
-                       const char* string_value = json_object_get_string(value_object);
-                       char* char_value = (char*) value;
-                       int value_length = strlen(char_value);
+                       string_value = json_object_get_string(value_object);
+                       char_value = (char*) value;
+                       value_length = strlen(char_value);
+                       memcpy(char_value, string_value, sizeof(char) * value_length);
+                       break;
+               case 3:
+                       value_object = json_object_object_get(config, "ColorMode");
+                       string_value = json_object_get_string(value_object);
+                       char_value = (char*) value;
+                       value_length = strlen(char_value);
                        memcpy(char_value, string_value, sizeof(char) * value_length);
                        break;
                default:
index 1a5ac1dfe664a783002625c4c1e9cf3202cc07b7..5664aae5b379cc66744d653be648c0b46c9cb1ee 100644 (file)
@@ -106,9 +106,7 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptor_array.option_descriptors[option]->name = "";
                        option_descriptor_array.option_descriptors[option]->title = "option number count";
                        option_descriptor_array.option_descriptors[option]->desc = "available number of options";
-                       option_descriptor_array.option_descriptors[option]->type = SANE_TYPE_INT;
                        option_descriptor_array.option_descriptors[option]->unit = SANE_UNIT_NONE;
-                       option_descriptor_array.option_descriptors[option]->size = sizeof(SANE_Int);
                        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;
@@ -120,9 +118,7 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptor_array.option_descriptors[option]->name = "resolution";
                        option_descriptor_array.option_descriptors[option]->title = "resolution";
                        option_descriptor_array.option_descriptors[option]->desc = "resolution";
-                       option_descriptor_array.option_descriptors[option]->type = SANE_TYPE_INT;
                        option_descriptor_array.option_descriptors[option]->unit = SANE_UNIT_DPI;
-                       option_descriptor_array.option_descriptors[option]->size = sizeof(SANE_Int);
                        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;
@@ -134,13 +130,39 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptor_array.option_descriptors[option]->name = "scanside";
                        option_descriptor_array.option_descriptors[option]->title = "scanside";
                        option_descriptor_array.option_descriptors[option]->desc = "scanside";
-                       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;
                        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 3:
+                       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 = "colormode";
+                       option_descriptor_array.option_descriptors[option]->title = "colormode";
+                       option_descriptor_array.option_descriptors[option]->desc = "colormode";
+                       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;
+       }
+
+
+       switch (option) {
+               case 0:
+               case 1:
+                       option_descriptor_array.option_descriptors[option]->type = SANE_TYPE_INT;
+                       option_descriptor_array.option_descriptors[option]->size = sizeof(SANE_Int);
+                       break;
+               case 2:
+               case 3:
+                       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;
+                       break;
                default:
                        return NULL;
                        break;