* backend/hp3900_sane.c, backend/hp3900_config.c, backend/hp3900_types.c,

backend/hp3900.conf.in, doc/sane-hp3900.man, doc/descriptions/hp3900.desc:
  Added support for HP Scanjet G3110 scanner.
merge-requests/1/head
Jonathan Bravo Lopez 2009-01-06 15:09:22 +00:00
rodzic e11de37747
commit 4b9e686065
7 zmienionych plików z 64 dodań i 15 usunięć

Wyświetl plik

@ -1,3 +1,9 @@
2009-01-06 Jonathan Bravo Lopez <jkdsoft@gmail.com>
* backend/hp3900_sane.c, backend/hp3900_config.c,
backend/hp3900_types.c, backend/hp3900.conf.in, doc/sane-hp3900.man,
doc/descriptions/hp3900.desc:
Added support for HP Scanjet G3110 scanner.
2009-01-05 Jeremy Johnson <jeremy a t acjlaw dot net>
Added code to read_data() to pad image data to
requested length and to zero out any garbage using

Wyświetl plik

@ -20,6 +20,9 @@ usb 0x03f0 0x2805
# HP Scanjet G3010
usb 0x03f0 0x4205
# HP Scanjet G3110
usb 0x03f0 0x4305
# UMAX Astra 4900/4950
usb 0x06dc 0x0020

Wyświetl plik

@ -369,7 +369,8 @@ static SANE_Int cfg_device_get(SANE_Int product, SANE_Int vendor)
{ 0x3f0, 0x2305, HP3970 }, /* HP Scanjet 3970c */
{ 0x3f0, 0x2405, HP4070 }, /* HP Scanjet 4070 Photosmart */
{ 0x3f0, 0x4105, HP4370 }, /* HP Scanjet 4370 */
{ 0x3f0, 0x4205, HPG3010} /* HP Scanjet G3010 */
{ 0x3f0, 0x4205, HPG3010}, /* HP Scanjet G3010 */
{ 0x3f0, 0x4305, HPG3110} /* HP Scanjet G3010 */
};
SANE_Int rst = -1; /* default */
@ -406,7 +407,8 @@ static SANE_Int cfg_chipset_model_get(SANE_Int device)
{ HP3970 , RTS8822L_01H },
{ HP4070 , RTS8822L_01H },
{ HP4370 , RTS8822L_02A },
{ HPG3010, RTS8822L_02A }
{ HPG3010, RTS8822L_02A },
{ HPG3110, RTS8822L_02A }
};
SANE_Int rst = RTS8822L_01H; /* default */
@ -488,7 +490,8 @@ static SANE_Int cfg_buttons_get(struct st_buttons *reg)
{ HP3970 , {4 , {0x04, 0x08, 0x02, 0x01, -1, -1}}},
{ HP4070 , {4 , {0x04, 0x08, 0x02, 0x01, -1, -1}}},
{ HP4370 , {4 , {0x04, 0x08, 0x02, 0x01, -1, -1}}},
{ HPG3010, {4 , {0x04, 0x08, 0x02, 0x01, -1, -1}}}
{ HPG3010, {4 , {0x04, 0x08, 0x02, 0x01, -1, -1}}},
{ HPG3110, {4 , {0x04, 0x08, 0x02, 0x01, -1, -1}}}
};
SANE_Int a;
@ -532,7 +535,8 @@ static SANE_Int cfg_sscg_get(SANE_Int *enable, SANE_Int *mode, SANE_Int *clock)
{ HP3970, {1 , 1, 0}},
{ HP4070, {1 , 1, 0}},
{ HP4370, {1 , 1, 0}},
{HPG3010, {1 , 1, 0}}
{HPG3010, {1 , 1, 0}},
{HPG3110, {1 , 1, 0}}
};
SANE_Int a;
@ -582,7 +586,8 @@ static SANE_Int cfg_motor_get(struct st_motorcfg *reg)
{ HP3970, {MT_OUTPUTSTATE, 2400, 30, 800, 1, 0, 0, TRUE}},
{ HP4070, {MT_OUTPUTSTATE, 2400, 30, 800, 1, 0, 0, TRUE}},
{ HP4370, {MT_OUTPUTSTATE, 2400, 30, 800, 1, 0, 0, TRUE}},
{HPG3010, {MT_OUTPUTSTATE, 2400, 30, 800, 1, 0, 0, TRUE}}
{HPG3010, {MT_OUTPUTSTATE, 2400, 30, 800, 1, 0, 0, TRUE}},
{HPG3110, {MT_OUTPUTSTATE, 2400, 30, 800, 1, 0, 0, TRUE}}
};
SANE_Int a;
@ -630,7 +635,8 @@ static SANE_Int cfg_sensor_get(struct st_sensorcfg *reg)
{ HP3970, {CCD_SENSOR, TCD2952, 2400 , {CL_RED , CL_GREEN, CL_BLUE}, {CL_RED , 0}, {CL_RED , CL_GREEN, CL_BLUE}, 24 , 4 }},
{ HP4070, {CCD_SENSOR, TCD2952, 2400 , {CL_RED , CL_GREEN, CL_BLUE}, {CL_RED , 0}, {CL_RED , CL_GREEN, CL_BLUE}, 24 , 4 }},
{ HP4370, {CCD_SENSOR, TCD2958, 4800 , {CL_RED , CL_GREEN, CL_BLUE}, {CL_RED , 0}, {CL_RED , CL_GREEN, CL_BLUE}, 128 , 6 }},
{HPG3010, {CCD_SENSOR, TCD2958, 4800 , {CL_RED , CL_GREEN, CL_BLUE}, {CL_RED , 0}, {CL_RED , CL_GREEN, CL_BLUE}, 128 , 6 }}
{HPG3010, {CCD_SENSOR, TCD2958, 4800 , {CL_RED , CL_GREEN, CL_BLUE}, {CL_RED , 0}, {CL_RED , CL_GREEN, CL_BLUE}, 128 , 6 }},
{HPG3110, {CCD_SENSOR, TCD2958, 4800 , {CL_RED , CL_GREEN, CL_BLUE}, {CL_RED , 0}, {CL_RED , CL_GREEN, CL_BLUE}, 128 , 6 }}
};
SANE_Int a;
@ -954,6 +960,7 @@ static void cfg_offset_get(SANE_Int sensortype, SANE_Int resolution, SANE_Int sc
break;
case HPG3010:
case HPG3110:
case HP4370:
hp4370_offset(resolution, scantype, left, width);
break;
@ -988,7 +995,8 @@ static SANE_Int cfg_constrains_get(struct st_constrains *constrain)
{ HP4070 , {{ 0, 220, 0, 300}, { 58, 99, 0, 197}, { 58, 99, 0, 197}}},
{ HP4370 , {{ 0, 220, 0, 300}, { 90, 45, 0, 85}, { 90, 45, 0, 100}}},
{ UA4900 , {{ 0, 220, 0, 300}, { 88, 42, 0, 83}, { 88, 42, 0, 83}}},
{HPG3010 , {{ 0, 220, 0, 300}, { 90, 45, 0, 85}, { 89, 45, 0, 100}}}
{HPG3010 , {{ 0, 220, 0, 300}, { 90, 45, 0, 85}, { 89, 45, 0, 100}}},
{HPG3110 , {{ 0, 220, 0, 300}, { 90, 45, 0, 85}, { 89, 45, 0, 100}}}
};
if (constrain != NULL)
@ -1071,7 +1079,8 @@ static void cfg_autoref_get(struct st_autoref *reg)
{ HP3970 , {REF_TAKEFROMSCANNER, 88, 717, 600 , 40}},
{ HP4070 , {REF_TAKEFROMSCANNER, 88, 717, 600 , 40}},
{ HP4370 , {REF_TAKEFROMSCANNER, 88, 717, 600 , 40}},
{HPG3010 , {REF_TAKEFROMSCANNER, 88, 717, 600 , 40}}
{HPG3010 , {REF_TAKEFROMSCANNER, 88, 717, 600 , 40}},
{HPG3110 , {REF_TAKEFROMSCANNER, 88, 717, 600 , 40}}
};
SANE_Int a;
@ -1240,6 +1249,7 @@ static SANE_Int cfg_effectivepixel_get(SANE_Int sensortype, SANE_Int resolution)
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_effectivepixel(resolution);
break;
@ -1453,6 +1463,7 @@ static SANE_Int cfg_gainoffset_get(SANE_Int sensortype, struct st_gain_offset *r
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_gainoffset(RTS_Debug->usbtype, reg);
break;
@ -1627,6 +1638,7 @@ static SANE_Int cfg_checkstable_get(SANE_Int lamp, struct st_checkstable *check)
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_checkstable(lamp, check);
break;
@ -1789,6 +1801,7 @@ static SANE_Int cfg_fixedpwm_get(SANE_Int sensortype, SANE_Int scantype)
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_fixedpwm(scantype, RTS_Debug->usbtype);
break;
@ -1813,6 +1826,7 @@ static void cfg_vrefs_get(SANE_Int sensortype, SANE_Int res, SANE_Int *ser, SANE
case HP4370:
case HPG3010:
case HPG3110:
hp4370_vrefs(res, ser, ler);
break;
@ -2115,6 +2129,7 @@ static SANE_Int cfg_scanmode_get(SANE_Int sensortype, SANE_Int sm, struct st_sca
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_scanmodes(RTS_Debug->usbtype, sm, mymode);
break;
@ -3145,6 +3160,7 @@ static void cfg_wrefs_get(SANE_Int sensortype, SANE_Int depth, SANE_Int res, SAN
case HP4370:
case HPG3010:
case HPG3110:
hp4370_wrefs(res, scantype, red, green, blue);
break;
@ -3518,6 +3534,7 @@ static void cfg_shading_cut_get(SANE_Int sensortype, SANE_Int depth, SANE_Int re
case HP4370:
case HPG3010:
case HPG3110:
hp4370_shading_cut(depth, res, scantype, red, green, blue);
break;
@ -3741,6 +3758,7 @@ static SANE_Int cfg_timing_get(SANE_Int sensortype, SANE_Int tm, struct st_timin
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_timing_get(tm, reg);
break;
@ -4148,6 +4166,7 @@ static SANE_Int *cfg_motorcurve_get()
case HP4370:
case HPG3010:
case HPG3110:
rst = hp4370_motor();
break;
@ -4536,6 +4555,7 @@ static int fc_calibreflective(int option, int defvalue)
case HPG2710:
case HP3800: rst = hp3800_calibreflective(option, defvalue); break;
case HPG3010:
case HPG3110:
case HP4370: rst = hp4370_calibreflective(option, defvalue); break;
default : rst = hp3970_calibreflective(option, defvalue); break;
}
@ -4920,6 +4940,7 @@ static int fc_calibtransparent(int option, int defvalue)
case HPG2710:
case HP3800: rst = hp3800_calibtransparent(option, defvalue); break;
case HPG3010:
case HPG3110:
case HP4370: rst = hp4370_calibtransparent(option, defvalue); break;
default : rst = hp3970_calibtransparent(option, defvalue); break;
}
@ -5307,6 +5328,7 @@ static int fc_calibnegative(int option, int defvalue)
case HPG2710:
case HP3800: rst = hp3800_calibnegative(option, defvalue); break;
case HPG3010:
case HPG3110:
case HP4370: rst = hp4370_calibnegative(option, defvalue); break;
default : rst = hp3970_calibnegative(option, defvalue); break;
}
@ -5741,6 +5763,7 @@ static int srt_sec_get(int file, int section, int option, int defvalue)
case HPG2710:
case HP3800: rst = srt_hp3800_scanparam_get(option, defvalue); break;
case HPG3010:
case HPG3110:
case HP4370: rst = srt_hp4370_scanparam_get(file, option, defvalue); break;
default : rst = srt_hp3970_scanparam_get(file, option, defvalue); break;
}
@ -5758,6 +5781,7 @@ static int srt_sec_get(int file, int section, int option, int defvalue)
case HP3800: rst = srt_hp3800_platform_get(option, defvalue); break;
case UA4900: rst = srt_ua4900_platform_get(option, defvalue); break;
case HPG3010:
case HPG3110:
case HP4370: rst = srt_hp4370_platform_get(option, defvalue); break;
default : rst = srt_hp3970_platform_get(option, defvalue); break;
}

Wyświetl plik

@ -1,5 +1,5 @@
/* HP Scanjet 3900 series - SANE Backend controller
Copyright (C) 2005-2008 Jonathan Bravo Lopez <jkdsoft@gmail.com>
Copyright (C) 2005-2009 Jonathan Bravo Lopez <jkdsoft@gmail.com>
This file is part of the SANE package.
@ -293,6 +293,7 @@ bknd_resolutions (TScanner * scanner, SANE_Int model)
case HP4370:
case HPG3010:
case HPG3110:
{
SANE_Int myres[] =
{ 10, 50, 75, 100, 150, 200, 300, 600, 1200, 2400, 4800 };
@ -342,7 +343,7 @@ bknd_models (TScanner * scanner)
/* at this moment all devices use the same list */
SANE_String_Const mymodel[] =
{ "HP3800", "HP3970", "HP4070", "HP4370", "UA4900", "HPG3010",
"BQ5550", "HPG2710", 0 };
"BQ5550", "HPG2710", "HPG3110", 0 };
/* allocate space to save list */
model = (SANE_String_Const *) malloc (sizeof (mymodel));
@ -633,9 +634,9 @@ set_ScannerModel (SANE_Int proposed, SANE_Int product, SANE_Int vendor)
/* This function will set the device behaviour */
SANE_Int current = Device_get (product, vendor);
char *sdevname[9] =
char *sdevname[10] =
{ "Unknown", "HP3970", "HP4070", "HP4370", "UA4900", "HP3800", "HPG3010",
"BQ5550", "HPG2710" };
"BQ5550", "HPG2710", "HPG3110" };
DBG (DBG_FNC,
"> set_ScannerModel(proposed=%i, product=%04x, vendor=%04x)\n",
@ -996,6 +997,8 @@ Get_Model (SANE_String model)
rst = HP4370;
else if (strcmp (model, "HPG3010") == 0)
rst = HPG3010;
else if (strcmp (model, "HPG3110") == 0)
rst = HPG3110;
else if (strcmp (model, "UA4900") == 0)
rst = UA4900;
else if (strcmp (model, "BQ5550") == 0)
@ -1716,6 +1719,10 @@ attach_one_device (SANE_String_Const devname)
sModel.pszVendor = (char *) strdup ("Hewlett-Packard");
sModel.pszName = (char *) strdup ("Scanjet G3010");
break;
case HPG3110:
sModel.pszVendor = (char *) strdup ("Hewlett-Packard");
sModel.pszName = (char *) strdup ("Scanjet G3110");
break;
case UA4900:
sModel.pszVendor = (char *) strdup ("UMAX");
sModel.pszName = (char *) strdup ("Astra 4900");
@ -1791,6 +1798,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
sanei_usb_attach_matching_devices ("usb 0x03f0 0x2405", attach_one_device); /* HP4070 */
sanei_usb_attach_matching_devices ("usb 0x03f0 0x4105", attach_one_device); /* HP4370 */
sanei_usb_attach_matching_devices ("usb 0x03f0 0x4205", attach_one_device); /* HPG3010 */
sanei_usb_attach_matching_devices ("usb 0x03f0 0x4305", attach_one_device); /* HPG3110 */
sanei_usb_attach_matching_devices ("usb 0x06dc 0x0020", attach_one_device); /* UA4900 */
sanei_usb_attach_matching_devices ("usb 0x04a5 0x2211", attach_one_device); /* BQ5550 */
}

Wyświetl plik

@ -1,6 +1,6 @@
/* HP Scanjet 3900 series - Structures and global variables
Copyright (C) 2005-2008 Jonathan Bravo Lopez <jkdsoft@gmail.com>
Copyright (C) 2005-2009 Jonathan Bravo Lopez <jkdsoft@gmail.com>
This file is part of the SANE package.
@ -41,7 +41,7 @@
*/
/* devices */
#define DEVSCOUNT 0x08 /* Number of scanners supported by this backend */
#define DEVSCOUNT 0x09 /* Number of scanners supported by this backend */
#define HP3970 0x00 /* rts8822l-01H HP Scanjet 3970 */
#define HP4070 0x01 /* rts8822l-01H HP Scanjet 4070 */
@ -51,6 +51,7 @@
#define HPG3010 0x05 /* rts8822l-02A HP Scanjet G3010 */
#define BQ5550 0x06 /* rts8823l-01E BenQ 5550 */
#define HPG2710 0x07 /* rts8822bl-03A HP Scanjet G2710 */
#define HPG3110 0x08 /* rts8822l-02A HP Scanjet G3110 */
/* chipset models */
#define RTS8822L_01H 0x00

Wyświetl plik

@ -54,6 +54,12 @@
:status :basic
:comment "Similar to hp scanjet 4370"
:model "ScanJet G3110"
:interface "USB"
:usbid "0x03f0" "0x4305"
:status :basic
:comment "Similar to hp scanjet 4370"
; -----------------------------------------------------
:mfg "UMAX"
:url "http://www.umax.com"

Wyświetl plik

@ -1,4 +1,4 @@
.TH sane\-hp3900 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.TH sane\-hp3900 5 "06 Jan 2009" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.IX sane\-hp3900
.SH NAME
sane\-hp3900 \- SANE backend for RTS8822 chipset based scanners
@ -19,6 +19,7 @@ HP ScanJet 4070 Photosmart RTS8822L-01H
HP ScanJet 4370 RTS8822L-02A
HP ScanJet G2710 RTS8822BL-03A
HP ScanJet G3010 RTS8822L-02A
HP ScanJet G3110 RTS8822L-02A
UMAX Astra 4900/4950 RTS8822L-01H *
BenQ 5550 RTS8823L-01E *
.fi