From a5a6543cd0585859a698e44998cbca37bf072c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Voltz?= Date: Thu, 31 Jan 2013 06:12:09 +0100 Subject: [PATCH] support for 5th LiDE 210 button --- ChangeLog | 5 +++++ backend/genesys.c | 19 +++++++++++++++++-- backend/genesys.h | 1 + backend/genesys_devices.c | 2 +- backend/genesys_gl124.c | 2 ++ backend/genesys_low.h | 1 + doc/descriptions/genesys.desc | 6 ++++++ 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 929d40449..3888f84d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-01-31 Stéphane Voltz + * backend/genesys.[ch] backend/genesys_devices.c + backend/genesys_gl124.c backend/genesys_low.h: add support for LIDE + 210 fifth button. + 2013-01-29 Stéphane Voltz * backend/genesys*.[ch] : ASIC init refactor. Groundwork for GL846 support. diff --git a/backend/genesys.c b/backend/genesys.c index 0c8c7701b..9438d3cbb 100644 --- a/backend/genesys.c +++ b/backend/genesys.c @@ -55,10 +55,10 @@ */ /* - * SANE backend for Genesys Logic GL646/GL841/GL842/GL843/GL847/GL124 based scanners + * SANE backend for Genesys Logic GL646/GL841/GL842/GL843/GL846/GL847/GL124 based scanners */ -#define BUILD 2407 +#define BUILD 2408 #define BACKEND_NAME genesys #include "genesys.h" @@ -5890,6 +5890,20 @@ init_options (Genesys_Scanner * s) s->opt[OPT_POWER_SW].cap = SANE_CAP_INACTIVE; s->val[OPT_POWER_SW].b = 0; s->last_val[OPT_POWER_SW].b = 0; + + /* extra button */ + s->opt[OPT_EXTRA_SW].name = "extra"; + s->opt[OPT_EXTRA_SW].title = SANE_I18N ("Extra button"); + s->opt[OPT_EXTRA_SW].desc = SANE_I18N ("Extra button"); + s->opt[OPT_EXTRA_SW].type = SANE_TYPE_BOOL; + s->opt[OPT_EXTRA_SW].unit = SANE_UNIT_NONE; + if (model->buttons & GENESYS_HAS_EXTRA_SW) + s->opt[OPT_EXTRA_SW].cap = + SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED; + else + s->opt[OPT_EXTRA_SW].cap = SANE_CAP_INACTIVE; + s->val[OPT_EXTRA_SW].b = 0; + s->last_val[OPT_EXTRA_SW].b = 0; /* calibration needed */ s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration"; @@ -7004,6 +7018,7 @@ get_option_value (Genesys_Scanner * s, int option, void *val) case OPT_PAGE_LOADED_SW: case OPT_OCR_SW: case OPT_POWER_SW: + case OPT_EXTRA_SW: RIE (s->dev->model->cmd_set->update_hardware_sensors (s)); *(SANE_Bool *) val = s->val[option].b; s->last_val[option].b = *(SANE_Bool *) val; diff --git a/backend/genesys.h b/backend/genesys.h index 7bdc2a3ea..6acadf2cc 100644 --- a/backend/genesys.h +++ b/backend/genesys.h @@ -116,6 +116,7 @@ enum Genesys_Option OPT_PAGE_LOADED_SW, OPT_OCR_SW, OPT_POWER_SW, + OPT_EXTRA_SW, OPT_NEED_CALIBRATION_SW, OPT_BUTTON_GROUP, OPT_CALIBRATE, diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index 62ab9442c..bd27f61c2 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -1773,7 +1773,7 @@ static Genesys_Model canon_lide_210_model = { | GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_FLAG_DARK_CALIBRATION | GENESYS_FLAG_CUSTOM_GAMMA, - GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW, + GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_EXTRA_SW, 50, 400 }; diff --git a/backend/genesys_gl124.c b/backend/genesys_gl124.c index 666f55124..f354ff617 100644 --- a/backend/genesys_gl124.c +++ b/backend/genesys_gl124.c @@ -3711,6 +3711,8 @@ gl124_update_hardware_sensors (Genesys_Scanner * s) } else { /* LiDE 210 case */ + if (s->val[OPT_EXTRA_SW].b == s->last_val[OPT_EXTRA_SW].b) + s->val[OPT_EXTRA_SW].b = (val & 0x01) == 0; if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b) s->val[OPT_SCAN_SW].b = (val & 0x02) == 0; if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b) diff --git a/backend/genesys_low.h b/backend/genesys_low.h index df8dacb4c..68012377c 100644 --- a/backend/genesys_low.h +++ b/backend/genesys_low.h @@ -145,6 +145,7 @@ #define GENESYS_HAS_OCR_SW (1 << 5) /**< scanner has OCR button */ #define GENESYS_HAS_POWER_SW (1 << 6) /**< scanner has power button */ #define GENESYS_HAS_CALIBRATE (1 << 7) /**< scanner has 'calibrate' software button to start calibration */ +#define GENESYS_HAS_EXTRA_SW (1 << 8) /**< scanner has extra function button */ /* USB control message values */ #define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN) diff --git a/doc/descriptions/genesys.desc b/doc/descriptions/genesys.desc index 7eca7553e..d00dce2e3 100644 --- a/doc/descriptions/genesys.desc +++ b/doc/descriptions/genesys.desc @@ -169,6 +169,12 @@ :status :good :comment "GL847 based, resolution from 75 to 4800 dpi" +:model "Canon Image Formula 101" +:interface "USB" +:usbid "0x1083" "0x162e" +:status :unsupported +:comment "GL846 based, work in progress" + ; ----------------------------------------------------------------------------- :mfg "Visioneer"