kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'scanjet_g4010' into 'master'
Updated button support for HP Scanjet G4010 See merge request sane-project/backends!622pixma-add-canon-ts-3400-series
commit
bfa3e39de2
|
@ -279,6 +279,7 @@ std::ostream& operator<<(std::ostream& out, GpioId id)
|
|||
case GpioId::CANON_8600F: out << "CANON_8600F"; break;
|
||||
case GpioId::DP665: out << "DP665"; break;
|
||||
case GpioId::DP685: out << "DP685"; break;
|
||||
case GpioId::G4010: out << "G4010"; break;
|
||||
case GpioId::G4050: out << "G4050"; break;
|
||||
case GpioId::HP2300: out << "HP2300"; break;
|
||||
case GpioId::HP2400: out << "HP2400"; break;
|
||||
|
|
|
@ -372,6 +372,7 @@ enum class GpioId : unsigned
|
|||
DP665,
|
||||
DP685,
|
||||
G4050,
|
||||
G4010,
|
||||
HP2300,
|
||||
HP2400,
|
||||
HP3670,
|
||||
|
|
|
@ -4992,16 +4992,28 @@ static void init_options(Genesys_Scanner* s)
|
|||
s->opt[OPT_POWER_SW].cap = SANE_CAP_INACTIVE;
|
||||
|
||||
/* 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->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;
|
||||
}
|
||||
|
||||
// transparency/scan_film button
|
||||
s->opt[OPT_TRANSP_SW].name = "transparency";
|
||||
s->opt[OPT_TRANSP_SW].title = SANE_I18N ("Transparency button");
|
||||
s->opt[OPT_TRANSP_SW].desc = SANE_I18N ("Transparency button");
|
||||
s->opt[OPT_TRANSP_SW].type = SANE_TYPE_BOOL;
|
||||
s->opt[OPT_TRANSP_SW].unit = SANE_UNIT_NONE;
|
||||
if (model->buttons & GENESYS_HAS_TRANSP_SW) {
|
||||
s->opt[OPT_TRANSP_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
} else {
|
||||
s->opt[OPT_TRANSP_SW].cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
||||
/* calibration needed */
|
||||
s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration";
|
||||
|
@ -5821,6 +5833,7 @@ static void get_option_value(Genesys_Scanner* s, int option, void* val)
|
|||
case OPT_OCR_SW:
|
||||
case OPT_POWER_SW:
|
||||
case OPT_EXTRA_SW:
|
||||
case OPT_TRANSP_SW:
|
||||
s->dev->cmd_set->update_hardware_sensors(s);
|
||||
*reinterpret_cast<SANE_Bool*>(val) = s->buttons[genesys_option_to_button(option)].read();
|
||||
break;
|
||||
|
@ -6456,6 +6469,7 @@ GenesysButtonName genesys_option_to_button(int option)
|
|||
case OPT_OCR_SW: return BUTTON_OCR_SW;
|
||||
case OPT_POWER_SW: return BUTTON_POWER_SW;
|
||||
case OPT_EXTRA_SW: return BUTTON_EXTRA_SW;
|
||||
case OPT_TRANSP_SW: return BUTTON_TRANSP_SW;
|
||||
default: throw std::runtime_error("Unknown option to convert to button index");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -124,6 +124,7 @@ enum Genesys_Option
|
|||
OPT_OCR_SW,
|
||||
OPT_POWER_SW,
|
||||
OPT_EXTRA_SW,
|
||||
OPT_TRANSP_SW,
|
||||
OPT_NEED_CALIBRATION_SW,
|
||||
OPT_BUTTON_GROUP,
|
||||
OPT_CALIBRATE,
|
||||
|
@ -144,6 +145,7 @@ enum GenesysButtonName : unsigned {
|
|||
BUTTON_OCR_SW,
|
||||
BUTTON_POWER_SW,
|
||||
BUTTON_EXTRA_SW,
|
||||
BUTTON_TRANSP_SW,
|
||||
NUM_BUTTONS
|
||||
};
|
||||
|
||||
|
|
|
@ -1240,6 +1240,7 @@ void CommandSetGl843::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
dev->interface->write_register(0x7e, 0x04);
|
||||
break;
|
||||
case GpioId::G4050:
|
||||
case GpioId::G4010:
|
||||
dev->interface->write_register(REG_0xA7, 0xfe);
|
||||
dev->interface->write_register(REG_0xA8, 0x3e);
|
||||
dev->interface->write_register(REG_0xA9, 0x06);
|
||||
|
@ -1680,6 +1681,7 @@ void CommandSetGl843::update_hardware_sensors(Genesys_Scanner* s) const
|
|||
*/
|
||||
|
||||
uint8_t val = s->dev->interface->read_register(REG_0x6D);
|
||||
DBG(DBG_io, "%s: read buttons_gpio value=0x%x\n", __func__, (int)val);
|
||||
|
||||
switch (s->dev->model->gpio_id)
|
||||
{
|
||||
|
@ -1692,6 +1694,12 @@ void CommandSetGl843::update_hardware_sensors(Genesys_Scanner* s) const
|
|||
s->buttons[BUTTON_EMAIL_SW].write((val & 0x04) == 0);
|
||||
s->buttons[BUTTON_COPY_SW].write((val & 0x08) == 0);
|
||||
break;
|
||||
case GpioId::G4010:
|
||||
s->buttons[BUTTON_FILE_SW].write((val & 0x01) == 0);
|
||||
s->buttons[BUTTON_COPY_SW].write((val & 0x04) == 0);
|
||||
s->buttons[BUTTON_TRANSP_SW].write((val & 0x40) == 0);
|
||||
s->buttons[BUTTON_SCAN_SW].write((val & 0x08) == 0);
|
||||
break;
|
||||
case GpioId::CANON_4400F:
|
||||
case GpioId::CANON_8400F:
|
||||
default:
|
||||
|
|
|
@ -116,6 +116,7 @@
|
|||
#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 */
|
||||
#define GENESYS_HAS_TRANSP_SW (1 << 9) /**< scanner has TRANSPARCY/SCAN_FILM button */
|
||||
|
||||
/* USB control message values */
|
||||
#define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN)
|
||||
|
|
|
@ -257,6 +257,21 @@ void genesys_init_gpo_tables()
|
|||
s_gpo->push_back(gpo);
|
||||
|
||||
|
||||
gpo = Genesys_Gpo();
|
||||
gpo.id = GpioId::G4010;
|
||||
gpo.regs = {
|
||||
{ 0x6c, 0x20 },
|
||||
{ 0x6d, 0x00 },
|
||||
{ 0x6e, 0xfc },
|
||||
{ 0x6f, 0x00 },
|
||||
{ 0xa6, 0x08 },
|
||||
{ 0xa7, 0x1e },
|
||||
{ 0xa8, 0x3e },
|
||||
{ 0xa9, 0x06 },
|
||||
};
|
||||
s_gpo->push_back(gpo);
|
||||
|
||||
|
||||
gpo = Genesys_Gpo();
|
||||
gpo.id = GpioId::HP_N6310;
|
||||
gpo.regs = {
|
||||
|
|
|
@ -342,12 +342,12 @@ void genesys_init_usb_device_tables()
|
|||
model.is_sheetfed = false;
|
||||
model.sensor_id = SensorId::CCD_G4050;
|
||||
model.adc_id = AdcId::G4050;
|
||||
model.gpio_id = GpioId::G4050;
|
||||
model.gpio_id = GpioId::G4010;
|
||||
model.motor_id = MotorId::G4050;
|
||||
model.flags = ModelFlag::WARMUP |
|
||||
ModelFlag::DARK_CALIBRATION |
|
||||
ModelFlag::CUSTOM_GAMMA;
|
||||
model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW;
|
||||
model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_TRANSP_SW;
|
||||
model.search_lines = 100;
|
||||
|
||||
s_usb_devices->emplace_back(0x03f0, 0x4505, model);
|
||||
|
|
Ładowanie…
Reference in New Issue