kopia lustrzana https://gitlab.com/sane-project/backends
Add support for buttons on Canon LiDE 35/40/50.
rodzic
292b70dad8
commit
ba164358db
|
@ -1,3 +1,9 @@
|
||||||
|
2009-01-16 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
|
* backend/genesys.c, backend/genesys.h, backend/genesys_devices.c,
|
||||||
|
backend/genesys_gl646.c, backend/genesys_gl841.c,
|
||||||
|
backend/genesys_low.h: Add support for buttons on
|
||||||
|
Canon LiDE 35/40/50.
|
||||||
|
|
||||||
2009-01-15 Nicolas Martin <nicols-guest at users.alioth.debian.org>
|
2009-01-15 Nicolas Martin <nicols-guest at users.alioth.debian.org>
|
||||||
* doc/sane-pixma.man, doc/descriptions/pixma.desc,
|
* doc/sane-pixma.man, doc/descriptions/pixma.desc,
|
||||||
pixma_mp150.c, AUTHORS:
|
pixma_mp150.c, AUTHORS:
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
|
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
Copyright (C) 2004, 2008 Stéphane Voltz <stef.dev@free.fr>
|
Copyright (C) 2004, 2008 Stéphane Voltz <stef.dev@free.fr>
|
||||||
Copyright (C) 2005, 2006 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
Copyright (C) 2005-2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
||||||
Copyright (C) 2007 Luke <iceyfor@gmail.com>
|
Copyright (C) 2007 Luke <iceyfor@gmail.com>
|
||||||
|
|
||||||
|
@ -4834,7 +4834,7 @@ init_options (Genesys_Scanner * s)
|
||||||
/* currently, there are only gamma table options in this group,
|
/* currently, there are only gamma table options in this group,
|
||||||
* so if the scanner doesn't support gamma table, disable the
|
* so if the scanner doesn't support gamma table, disable the
|
||||||
* whole group */
|
* whole group */
|
||||||
if (!(s->dev->model->flags & GENESYS_FLAG_CUSTOM_GAMMA))
|
if (!(model->flags & GENESYS_FLAG_CUSTOM_GAMMA))
|
||||||
{
|
{
|
||||||
s->opt[OPT_ENHANCEMENT_GROUP].cap |= SANE_CAP_INACTIVE;
|
s->opt[OPT_ENHANCEMENT_GROUP].cap |= SANE_CAP_INACTIVE;
|
||||||
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_INACTIVE;
|
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -4898,6 +4898,73 @@ init_options (Genesys_Scanner * s)
|
||||||
s->opt[OPT_LAMP_OFF_TIME].constraint.range = &time_range;
|
s->opt[OPT_LAMP_OFF_TIME].constraint.range = &time_range;
|
||||||
s->val[OPT_LAMP_OFF_TIME].w = 15; /* 15 minutes */
|
s->val[OPT_LAMP_OFF_TIME].w = 15; /* 15 minutes */
|
||||||
|
|
||||||
|
s->opt[OPT_SENSOR_GROUP].name = SANE_NAME_SENSORS;
|
||||||
|
s->opt[OPT_SENSOR_GROUP].title = SANE_TITLE_SENSORS;
|
||||||
|
s->opt[OPT_SENSOR_GROUP].desc = SANE_DESC_SENSORS;
|
||||||
|
s->opt[OPT_SENSOR_GROUP].type = SANE_TYPE_GROUP;
|
||||||
|
s->opt[OPT_SENSOR_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
|
||||||
|
|
||||||
|
s->opt[OPT_SCAN_SW].name = SANE_NAME_SCAN;
|
||||||
|
s->opt[OPT_SCAN_SW].title = SANE_TITLE_SCAN;
|
||||||
|
s->opt[OPT_SCAN_SW].desc = SANE_DESC_SCAN;
|
||||||
|
s->opt[OPT_SCAN_SW].type = SANE_TYPE_BOOL;
|
||||||
|
s->opt[OPT_SCAN_SW].unit = SANE_UNIT_NONE;
|
||||||
|
if (model->flags & GENESYS_FLAG_SCAN_SW)
|
||||||
|
s->opt[OPT_SCAN_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||||
|
else
|
||||||
|
s->opt[OPT_SCAN_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
s->val[OPT_SCAN_SW].b = 0;
|
||||||
|
s->last_val[OPT_SCAN_SW].b = 0;
|
||||||
|
|
||||||
|
/* SANE_NAME_FILE is not for buttons */
|
||||||
|
s->opt[OPT_FILE_SW].name = "file";
|
||||||
|
s->opt[OPT_FILE_SW].title = "File button";
|
||||||
|
s->opt[OPT_FILE_SW].desc = "File button";
|
||||||
|
s->opt[OPT_FILE_SW].type = SANE_TYPE_BOOL;
|
||||||
|
s->opt[OPT_FILE_SW].unit = SANE_UNIT_NONE;
|
||||||
|
if (model->flags & GENESYS_FLAG_FILE_SW)
|
||||||
|
s->opt[OPT_FILE_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||||
|
else
|
||||||
|
s->opt[OPT_FILE_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
s->val[OPT_FILE_SW].b = 0;
|
||||||
|
s->last_val[OPT_FILE_SW].b = 0;
|
||||||
|
|
||||||
|
s->opt[OPT_EMAIL_SW].name = SANE_NAME_EMAIL;
|
||||||
|
s->opt[OPT_EMAIL_SW].title = SANE_TITLE_EMAIL;
|
||||||
|
s->opt[OPT_EMAIL_SW].desc = SANE_DESC_EMAIL;
|
||||||
|
s->opt[OPT_EMAIL_SW].type = SANE_TYPE_BOOL;
|
||||||
|
s->opt[OPT_EMAIL_SW].unit = SANE_UNIT_NONE;
|
||||||
|
if (model->flags & GENESYS_FLAG_EMAIL_SW)
|
||||||
|
s->opt[OPT_EMAIL_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||||
|
else
|
||||||
|
s->opt[OPT_EMAIL_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
s->val[OPT_EMAIL_SW].b = 0;
|
||||||
|
s->last_val[OPT_EMAIL_SW].b = 0;
|
||||||
|
|
||||||
|
s->opt[OPT_COPY_SW].name = SANE_NAME_COPY;
|
||||||
|
s->opt[OPT_COPY_SW].title = SANE_TITLE_COPY;
|
||||||
|
s->opt[OPT_COPY_SW].desc = SANE_DESC_COPY;
|
||||||
|
s->opt[OPT_COPY_SW].type = SANE_TYPE_BOOL;
|
||||||
|
s->opt[OPT_COPY_SW].unit = SANE_UNIT_NONE;
|
||||||
|
if (model->flags & GENESYS_FLAG_COPY_SW)
|
||||||
|
s->opt[OPT_COPY_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||||
|
else
|
||||||
|
s->opt[OPT_COPY_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
s->val[OPT_COPY_SW].b = 0;
|
||||||
|
s->last_val[OPT_COPY_SW].b = 0;
|
||||||
|
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].name = SANE_NAME_PAGE_LOADED;
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].title = SANE_TITLE_PAGE_LOADED;
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].desc = SANE_DESC_PAGE_LOADED;
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].type = SANE_TYPE_BOOL;
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].unit = SANE_UNIT_NONE;
|
||||||
|
if (model->flags & GENESYS_FLAG_PAGE_LOADED_SW)
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||||
|
else
|
||||||
|
s->opt[OPT_PAGE_LOADED_SW].cap = SANE_CAP_INACTIVE;
|
||||||
|
s->val[OPT_PAGE_LOADED_SW].b = 0;
|
||||||
|
s->last_val[OPT_PAGE_LOADED_SW].b = 0;
|
||||||
|
|
||||||
RIE (calc_parameters (s));
|
RIE (calc_parameters (s));
|
||||||
|
|
||||||
DBG (DBG_proc, "init_options: exit\n");
|
DBG (DBG_proc, "init_options: exit\n");
|
||||||
|
@ -5357,6 +5424,7 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
SANE_Word *table;
|
SANE_Word *table;
|
||||||
u_int16_t *gamma;
|
u_int16_t *gamma;
|
||||||
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
|
|
||||||
switch (option)
|
switch (option)
|
||||||
{
|
{
|
||||||
|
@ -5422,11 +5490,19 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
|
||||||
table[i] = s->dev->sensor.blue_gamma_table[i];
|
table[i] = s->dev->sensor.blue_gamma_table[i];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
/* buttons */
|
||||||
|
case OPT_SCAN_SW:
|
||||||
|
case OPT_FILE_SW:
|
||||||
|
case OPT_EMAIL_SW:
|
||||||
|
case OPT_COPY_SW:
|
||||||
|
RIE(s->dev->model->cmd_set->update_hardware_sensors(s,option));
|
||||||
|
s->last_val[option].b = *(SANE_Bool *) val = s->val[option].b;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
DBG (DBG_warn, "get_option_value: can't get unknown option %d\n",
|
DBG (DBG_warn, "get_option_value: can't get unknown option %d\n",
|
||||||
option);
|
option);
|
||||||
}
|
}
|
||||||
return SANE_STATUS_GOOD;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sets an option , called by sane_control_option */
|
/* sets an option , called by sane_control_option */
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
Copyright (C) 2005 Stephane Voltz <stef.dev@free.fr>
|
Copyright (C) 2005 Stephane Voltz <stef.dev@free.fr>
|
||||||
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
||||||
|
Copyright (C) 2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
|
|
||||||
This file is part of the SANE package.
|
This file is part of the SANE package.
|
||||||
|
|
||||||
|
@ -94,6 +95,14 @@ enum Genesys_Option
|
||||||
OPT_THRESHOLD,
|
OPT_THRESHOLD,
|
||||||
OPT_DISABLE_INTERPOLATION,
|
OPT_DISABLE_INTERPOLATION,
|
||||||
OPT_COLOR_FILTER,
|
OPT_COLOR_FILTER,
|
||||||
|
|
||||||
|
OPT_SENSOR_GROUP,
|
||||||
|
OPT_SCAN_SW,
|
||||||
|
OPT_FILE_SW,
|
||||||
|
OPT_EMAIL_SW,
|
||||||
|
OPT_COPY_SW,
|
||||||
|
OPT_PAGE_LOADED_SW,
|
||||||
|
|
||||||
/* must come last: */
|
/* must come last: */
|
||||||
NUM_OPTIONS
|
NUM_OPTIONS
|
||||||
};
|
};
|
||||||
|
@ -110,6 +119,7 @@ typedef struct Genesys_Scanner
|
||||||
SANE_Bool scanning; /**< We are currently scanning */
|
SANE_Bool scanning; /**< We are currently scanning */
|
||||||
SANE_Option_Descriptor opt[NUM_OPTIONS]; /**< Option descriptors */
|
SANE_Option_Descriptor opt[NUM_OPTIONS]; /**< Option descriptors */
|
||||||
Option_Value val[NUM_OPTIONS]; /**< Option values */
|
Option_Value val[NUM_OPTIONS]; /**< Option values */
|
||||||
|
Option_Value last_val[NUM_OPTIONS]; /**< Option values as read by the frontend. used for sensors. */
|
||||||
SANE_Parameters params; /**< SANE Parameters */
|
SANE_Parameters params; /**< SANE Parameters */
|
||||||
SANE_Int bpp_list[5]; /**< */
|
SANE_Int bpp_list[5]; /**< */
|
||||||
} Genesys_Scanner;
|
} Genesys_Scanner;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
Copyright (C) 2003-2005 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
Copyright (C) 2003-2005 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
|
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
Copyright (C) 2004-2007 Stephane Voltz <stef.dev@free.fr>
|
Copyright (C) 2004-2007 Stephane Voltz <stef.dev@free.fr>
|
||||||
Copyright (C) 2005 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
Copyright (C) 2005-2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
Copyright (C) 2007 Luke <iceyfor@gmail.com>
|
Copyright (C) 2007 Luke <iceyfor@gmail.com>
|
||||||
|
|
||||||
This file is part of the SANE package.
|
This file is part of the SANE package.
|
||||||
|
@ -475,7 +475,14 @@ static Genesys_Model canon_lide_50_model = {
|
||||||
DAC_CANONLIDE35,
|
DAC_CANONLIDE35,
|
||||||
GPO_CANONLIDE35,
|
GPO_CANONLIDE35,
|
||||||
MOTOR_CANONLIDE35,
|
MOTOR_CANONLIDE35,
|
||||||
GENESYS_FLAG_LAZY_INIT | GENESYS_FLAG_SKIP_WARMUP | GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_FLAG_DARK_WHITE_CALIBRATION, /* Which flags are needed for this scanner? */
|
GENESYS_FLAG_LAZY_INIT | /* Which flags are needed for this scanner? */
|
||||||
|
GENESYS_FLAG_SKIP_WARMUP |
|
||||||
|
GENESYS_FLAG_OFFSET_CALIBRATION |
|
||||||
|
GENESYS_FLAG_DARK_WHITE_CALIBRATION |
|
||||||
|
GENESYS_FLAG_SCAN_SW |
|
||||||
|
GENESYS_FLAG_FILE_SW |
|
||||||
|
GENESYS_FLAG_EMAIL_SW |
|
||||||
|
GENESYS_FLAG_COPY_SW,
|
||||||
280,
|
280,
|
||||||
400
|
400
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
|
Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
Copyright (C) 2004 - 2008 Stéphane Voltz <stef.dev@free.fr>
|
Copyright (C) 2004 - 2008 Stéphane Voltz <stef.dev@free.fr>
|
||||||
Copyright (C) 2005, 2006 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
Copyright (C) 2005 - 2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
Copyright (C) 2007 Luke <iceyfor@gmail.com>
|
Copyright (C) 2007 Luke <iceyfor@gmail.com>
|
||||||
|
|
||||||
This file is part of the SANE package.
|
This file is part of the SANE package.
|
||||||
|
@ -4529,6 +4529,17 @@ gl646_init (Genesys_Device * dev)
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SANE_Status
|
||||||
|
gl646_update_hardware_sensors (Genesys_Scanner * s, SANE_Int option)
|
||||||
|
{
|
||||||
|
/* do what is needed to get a new set of events, but try to not lose
|
||||||
|
any of them.
|
||||||
|
*/
|
||||||
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/** the gl646 command set */
|
/** the gl646 command set */
|
||||||
static Genesys_Command_Set gl646_cmd_set = {
|
static Genesys_Command_Set gl646_cmd_set = {
|
||||||
"gl646-generic", /* the name of this set */
|
"gl646-generic", /* the name of this set */
|
||||||
|
@ -4572,6 +4583,8 @@ static Genesys_Command_Set gl646_cmd_set = {
|
||||||
gl646_bulk_write_register,
|
gl646_bulk_write_register,
|
||||||
gl646_bulk_write_data,
|
gl646_bulk_write_data,
|
||||||
gl646_bulk_read_data,
|
gl646_bulk_read_data,
|
||||||
|
|
||||||
|
gl646_update_hardware_sensors,
|
||||||
};
|
};
|
||||||
|
|
||||||
SANE_Status
|
SANE_Status
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
|
Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
Copyright (C) 2004, 2005 Stephane Voltz <stef.dev@free.fr>
|
Copyright (C) 2004, 2005 Stephane Voltz <stef.dev@free.fr>
|
||||||
Copyright (C) 2005 Philipp Schmid <philipp8288@web.de>
|
Copyright (C) 2005 Philipp Schmid <philipp8288@web.de>
|
||||||
Copyright (C) 2005, 2006 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
Copyright (C) 2005 - 2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
||||||
|
|
||||||
|
|
||||||
|
@ -5270,6 +5270,31 @@ gl841_init (Genesys_Device * dev)
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SANE_Status
|
||||||
|
gl841_update_hardware_sensors (Genesys_Scanner * s, SANE_Int option)
|
||||||
|
{
|
||||||
|
/* do what is needed to get a new set of events, but try to not lose
|
||||||
|
any of them.
|
||||||
|
*/
|
||||||
|
SANE_Status status = SANE_STATUS_GOOD;
|
||||||
|
u_int8_t val;
|
||||||
|
|
||||||
|
if (s->dev->model->gpo_type == GPO_CANONLIDE35)
|
||||||
|
{
|
||||||
|
RIE(sanei_genesys_read_register(s->dev, 0x6d, &val));
|
||||||
|
|
||||||
|
if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
|
||||||
|
s->val[OPT_SCAN_SW].b = (val & 0x01) == 0;
|
||||||
|
if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
|
||||||
|
s->val[OPT_FILE_SW].b = (val & 0x02) == 0;
|
||||||
|
if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
|
||||||
|
s->val[OPT_EMAIL_SW].b = (val & 0x04) == 0;
|
||||||
|
if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
|
||||||
|
s->val[OPT_COPY_SW].b = (val & 0x08) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/** the gl841 command set */
|
/** the gl841 command set */
|
||||||
static Genesys_Command_Set gl841_cmd_set = {
|
static Genesys_Command_Set gl841_cmd_set = {
|
||||||
|
@ -5315,6 +5340,8 @@ static Genesys_Command_Set gl841_cmd_set = {
|
||||||
gl841_bulk_write_register,
|
gl841_bulk_write_register,
|
||||||
gl841_bulk_write_data,
|
gl841_bulk_write_data,
|
||||||
gl841_bulk_read_data,
|
gl841_bulk_read_data,
|
||||||
|
|
||||||
|
gl841_update_hardware_sensors,
|
||||||
};
|
};
|
||||||
|
|
||||||
SANE_Status
|
SANE_Status
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
|
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
Copyright (C) 2004, 2005 Stephane Voltz <stef.dev@free.fr>
|
Copyright (C) 2004, 2005 Stephane Voltz <stef.dev@free.fr>
|
||||||
Copyright (C) 2005 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
Copyright (C) 2005 - 2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
|
||||||
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
|
||||||
Parts of the structs have been taken from the gt68xx backend by
|
Parts of the structs have been taken from the gt68xx backend by
|
||||||
Sergey Vlasov <vsu@altlinux.ru> et al.
|
Sergey Vlasov <vsu@altlinux.ru> et al.
|
||||||
|
@ -97,6 +97,12 @@
|
||||||
#define GENESYS_FLAG_DARK_WHITE_CALIBRATION (1 << 12) /*yet another calibration method. does white and dark shading in one run, depending on a black and a white strip*/
|
#define GENESYS_FLAG_DARK_WHITE_CALIBRATION (1 << 12) /*yet another calibration method. does white and dark shading in one run, depending on a black and a white strip*/
|
||||||
#define GENESYS_FLAG_CUSTOM_GAMMA (1 << 13) /* allow custom gamma tables */
|
#define GENESYS_FLAG_CUSTOM_GAMMA (1 << 13) /* allow custom gamma tables */
|
||||||
|
|
||||||
|
#define GENESYS_FLAG_SCAN_SW (1 << 14) /* scanner has SCAN button */
|
||||||
|
#define GENESYS_FLAG_FILE_SW (1 << 15) /* scanner has FILE button */
|
||||||
|
#define GENESYS_FLAG_COPY_SW (1 << 16) /* scanner has COPY button */
|
||||||
|
#define GENESYS_FLAG_EMAIL_SW (1 << 17) /* scanner has EMAIL button */
|
||||||
|
#define GENESYS_FLAG_PAGE_LOADED_SW (1 << 18) /* scanner has paper in detection */
|
||||||
|
|
||||||
/* USB control message values */
|
/* USB control message values */
|
||||||
#define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN)
|
#define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN)
|
||||||
#define REQUEST_TYPE_OUT (USB_TYPE_VENDOR | USB_DIR_OUT)
|
#define REQUEST_TYPE_OUT (USB_TYPE_VENDOR | USB_DIR_OUT)
|
||||||
|
@ -326,6 +332,7 @@ typedef struct Genesys_Command_Set
|
||||||
SANE_Status (*park_head) (Genesys_Device * dev,
|
SANE_Status (*park_head) (Genesys_Device * dev,
|
||||||
Genesys_Register_Set * reg,
|
Genesys_Register_Set * reg,
|
||||||
SANE_Bool wait_until_home);
|
SANE_Bool wait_until_home);
|
||||||
|
|
||||||
SANE_Status (*bulk_write_register) (Genesys_Device * dev,
|
SANE_Status (*bulk_write_register) (Genesys_Device * dev,
|
||||||
Genesys_Register_Set * reg,
|
Genesys_Register_Set * reg,
|
||||||
size_t elems);
|
size_t elems);
|
||||||
|
@ -335,6 +342,15 @@ typedef struct Genesys_Command_Set
|
||||||
SANE_Status (*bulk_read_data) (Genesys_Device * dev, u_int8_t addr,
|
SANE_Status (*bulk_read_data) (Genesys_Device * dev, u_int8_t addr,
|
||||||
u_int8_t * data, size_t len);
|
u_int8_t * data, size_t len);
|
||||||
|
|
||||||
|
/* Updates hardware sensor information in Genesys_Scanner.val[].
|
||||||
|
If possible, just get information for given option.
|
||||||
|
The sensor state in Genesys_Scanner.val[] should be merged with the
|
||||||
|
new sensor state, using the information that was last read by the frontend
|
||||||
|
in Genesys_Scanner.last_val[], in such a way that a button up/down
|
||||||
|
relative to Genesys_Scanner.last_val[] is not lost.
|
||||||
|
*/
|
||||||
|
SANE_Status (*update_hardware_sensors) (Genesys_Device * dev,
|
||||||
|
SANE_Int option);
|
||||||
} Genesys_Command_Set;
|
} Genesys_Command_Set;
|
||||||
|
|
||||||
typedef struct Genesys_Model
|
typedef struct Genesys_Model
|
||||||
|
|
Ładowanie…
Reference in New Issue