kopia lustrzana https://gitlab.com/sane-project/backends
- finished ECP support for 1220P/2000P
- added low level communication for 610P - added scanner detection for 610P - misc doc updatesmerge-requests/1/head
rodzic
389b608312
commit
e973af58e8
|
@ -1,3 +1,10 @@
|
|||
2004-03-09 Stéphane Voltz <svoltz@wanadoo.fr>
|
||||
|
||||
* backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c
|
||||
doc/sane-umax_pp.man doc/descriptions/umax_pp.desc tools/umax_pp.c:
|
||||
finished ECP support for 1220P/2000P. Added scanner detection and
|
||||
low-level communication for 610P.
|
||||
|
||||
2004-03-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||
|
||||
* tools/check-usb-scanner.c: GL841 max packet size can be 512
|
||||
|
@ -86,7 +93,6 @@
|
|||
* backend/umax_pp_low.h backend/umax_pp_low.c backend/umax_pp.conf
|
||||
backend/umax_pp.c tools/umax_pp.c: added initial ECP support for
|
||||
scanner, laid groundwork for 610P support.
|
||||
* backend/mustek_pp_ccd300.c: forgot parameters to wait_bank_change
|
||||
|
||||
2004-02-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||
|
||||
|
|
Plik diff jest za duży
Load Diff
|
@ -46,7 +46,7 @@
|
|||
/*****************************************************************************/
|
||||
/* set port to 'idle state' and get iopl */
|
||||
/*****************************************************************************/
|
||||
extern int sanei_umax_pp_InitPort (int port, char *name);
|
||||
extern int sanei_umax_pp_initPort (int port, char *name);
|
||||
|
||||
|
||||
|
||||
|
@ -54,14 +54,14 @@ extern int sanei_umax_pp_InitPort (int port, char *name);
|
|||
|
||||
|
||||
|
||||
extern int sanei_umax_pp_ProbeScanner (int recover);
|
||||
extern int sanei_umax_pp_InitScanner (int recover);
|
||||
extern int sanei_umax_pp_InitTransport (int recover);
|
||||
extern int sanei_umax_pp_ReleaseScanner (void);
|
||||
extern int sanei_umax_pp_EndSession (void);
|
||||
extern int sanei_umax_pp_InitCancel (void);
|
||||
extern int sanei_umax_pp_Cancel (void);
|
||||
extern int sanei_umax_pp_CheckModel (void);
|
||||
extern int sanei_umax_pp_probeScanner (int recover);
|
||||
extern int sanei_umax_pp_initScanner (int recover);
|
||||
extern int sanei_umax_pp_initTransport (int recover);
|
||||
extern int sanei_umax_pp_releaseScanner (void);
|
||||
extern int sanei_umax_pp_endSession (void);
|
||||
extern int sanei_umax_pp_initCancel (void);
|
||||
extern int sanei_umax_pp_cancel (void);
|
||||
extern int sanei_umax_pp_checkModel (void);
|
||||
extern int sanei_umax_pp_getauto (void);
|
||||
extern int sanei_umax_pp_UTA (void);
|
||||
extern void sanei_umax_pp_setauto (int mode);
|
||||
|
@ -89,24 +89,24 @@ extern void sanei_umax_pp_setauto (int mode);
|
|||
#define MOTOR_BIT 0x40
|
||||
|
||||
#define UMAX_PP_PARPORT_PS2 0x01
|
||||
#define UMAX_PP_PARPORT_EPP 0x02
|
||||
#define UMAX_PP_PARPORT_EPP_HALF 0x04
|
||||
#define UMAX_PP_PARPORT_BYTE 0x02
|
||||
#define UMAX_PP_PARPORT_EPP 0x04
|
||||
#define UMAX_PP_PARPORT_ECP 0x08
|
||||
|
||||
#endif
|
||||
|
||||
extern int sanei_umax_pp_Scan (int x, int y, int width, int height, int dpi,
|
||||
extern int sanei_umax_pp_scan (int x, int y, int width, int height, int dpi,
|
||||
int color, int brightness, int contrast);
|
||||
extern int sanei_umax_pp_Move (int distance, int precision,
|
||||
extern int sanei_umax_pp_move (int distance, int precision,
|
||||
unsigned char *buffer);
|
||||
extern int sanei_umax_pp_SetLamp (int on);
|
||||
extern int sanei_umax_pp_CompletionWait (void);
|
||||
extern int sanei_umax_pp_CommitScan (void);
|
||||
extern int sanei_umax_pp_Park (void);
|
||||
extern int sanei_umax_pp_ParkWait (void);
|
||||
extern int sanei_umax_pp_ReadBlock (long len, int window, int dpi, int last,
|
||||
extern int sanei_umax_pp_setLamp (int on);
|
||||
extern int sanei_umax_pp_completionWait (void);
|
||||
extern int sanei_umax_pp_commitScan (void);
|
||||
extern int sanei_umax_pp_park (void);
|
||||
extern int sanei_umax_pp_parkWait (void);
|
||||
extern int sanei_umax_pp_readBlock (long len, int window, int dpi, int last,
|
||||
unsigned char *buffer);
|
||||
extern int sanei_umax_pp_StartScan (int x, int y, int width, int height,
|
||||
extern int sanei_umax_pp_startScan (int x, int y, int width, int height,
|
||||
int dpi, int color, int brightness,
|
||||
int contrast, int *rbpp, int *rtw,
|
||||
int *rth);
|
||||
|
@ -117,12 +117,13 @@ extern void sanei_umax_pp_setparport (int fd);
|
|||
extern int sanei_umax_pp_getparport (void);
|
||||
extern void sanei_umax_pp_setastra (int mod);
|
||||
extern int sanei_umax_pp_getastra (void);
|
||||
extern int sanei_umax_pp_ScannerStatus (void);
|
||||
extern int sanei_umax_pp_ReleaseScanner (void);
|
||||
extern int sanei_umax_pp_EndSession (void);
|
||||
extern int sanei_umax_pp_ProbeScanner (int recover);
|
||||
extern int sanei_umax_pp_scannerStatus (void);
|
||||
extern int sanei_umax_pp_releaseScanner (void);
|
||||
extern int sanei_umax_pp_endSession (void);
|
||||
extern int sanei_umax_pp_probeScanner (int recover);
|
||||
|
||||
extern char **sanei_parport_find_port (void);
|
||||
extern char **sanei_parport_find_device (void);
|
||||
|
||||
extern int sanei_umax_pp_CmdSync (int cmd);
|
||||
extern int sanei_umax_pp_cmdSync (int cmd);
|
||||
extern void sanei_umax_pp_gamma (int *red, int *green, int *blue);
|
||||
|
|
|
@ -153,7 +153,7 @@ sanei_umax_pp_model (int port, int *model)
|
|||
*/
|
||||
do
|
||||
{
|
||||
rc = sanei_umax_pp_InitTransport (recover);
|
||||
rc = sanei_umax_pp_initTransport (recover);
|
||||
}
|
||||
while (rc == 2);
|
||||
|
||||
|
@ -164,7 +164,7 @@ sanei_umax_pp_model (int port, int *model)
|
|||
}
|
||||
if (rc != 1)
|
||||
{
|
||||
DBG (0, "sanei_umax_pp_InitTransport() failed (%s:%d)\n", __FILE__,
|
||||
DBG (0, "sanei_umax_pp_initTransport() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
unlock_parport ();
|
||||
return (UMAX1220P_TRANSPORT_FAILED);
|
||||
|
@ -173,13 +173,13 @@ sanei_umax_pp_model (int port, int *model)
|
|||
/* check model only, and if only none given in conf file */
|
||||
if (!sanei_umax_pp_getastra ())
|
||||
{
|
||||
rc = sanei_umax_pp_CheckModel ();
|
||||
rc = sanei_umax_pp_checkModel ();
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = sanei_umax_pp_getastra ();
|
||||
}
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
if (rc < 610)
|
||||
{
|
||||
|
@ -210,19 +210,19 @@ sanei_umax_pp_attach (int port, char *name)
|
|||
}
|
||||
|
||||
sanei_umax_pp_setport (port);
|
||||
if (sanei_umax_pp_InitPort (port, name) != 1)
|
||||
if (sanei_umax_pp_initPort (port, name) != 1)
|
||||
return (UMAX1220P_PROBE_FAILED);
|
||||
|
||||
/* init port locks the port, so we flag that */
|
||||
locked = 1;
|
||||
|
||||
if (sanei_umax_pp_ProbeScanner (recover) != 1)
|
||||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
if (recover)
|
||||
{
|
||||
sanei_umax_pp_InitTransport (recover);
|
||||
sanei_umax_pp_EndSession ();
|
||||
if (sanei_umax_pp_ProbeScanner (recover) != 1)
|
||||
sanei_umax_pp_initTransport (recover);
|
||||
sanei_umax_pp_endSession ();
|
||||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
DBG (0, "Recover failed ....\n");
|
||||
unlock_parport ();
|
||||
|
@ -235,7 +235,7 @@ sanei_umax_pp_attach (int port, char *name)
|
|||
return (UMAX1220P_PROBE_FAILED);
|
||||
}
|
||||
}
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
|
||||
|
||||
|
@ -267,7 +267,7 @@ sanei_umax_pp_open (int port, char *name)
|
|||
*/
|
||||
do
|
||||
{
|
||||
rc = sanei_umax_pp_InitTransport (recover);
|
||||
rc = sanei_umax_pp_initTransport (recover);
|
||||
}
|
||||
while (rc == 2);
|
||||
|
||||
|
@ -280,17 +280,17 @@ sanei_umax_pp_open (int port, char *name)
|
|||
if (rc != 1)
|
||||
{
|
||||
|
||||
DBG (0, "sanei_umax_pp_InitTransport() failed (%s:%d)\n", __FILE__,
|
||||
DBG (0, "sanei_umax_pp_initTransport() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
unlock_parport ();
|
||||
return (UMAX1220P_TRANSPORT_FAILED);
|
||||
}
|
||||
/* init scanner */
|
||||
if (sanei_umax_pp_InitScanner (recover) == 0)
|
||||
if (sanei_umax_pp_initScanner (recover) == 0)
|
||||
{
|
||||
DBG (0, "sanei_umax_pp_InitScanner() failed (%s:%d)\n", __FILE__,
|
||||
DBG (0, "sanei_umax_pp_initScanner() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
return (UMAX1220P_SCANNER_FAILED);
|
||||
}
|
||||
|
@ -308,19 +308,19 @@ sanei_umax_pp_cancel (void)
|
|||
if (lock_parport () == UMAX1220P_BUSY)
|
||||
return (UMAX1220P_BUSY);
|
||||
|
||||
/* maybe bus reset here if exists */
|
||||
sanei_umax_pp_CmdSync (0xC2);
|
||||
sanei_umax_pp_CmdSync (0x00);
|
||||
sanei_umax_pp_CmdSync (0x00);
|
||||
if (sanei_umax_pp_Park () == 0)
|
||||
/* maybe EPAT reset here if exists */
|
||||
sanei_umax_pp_cmdSync (0xC2);
|
||||
sanei_umax_pp_cmdSync (0x00);
|
||||
sanei_umax_pp_cmdSync (0x00);
|
||||
if (sanei_umax_pp_park () == 0)
|
||||
{
|
||||
DBG (0, "Park failed !!! (%s:%d)\n", __FILE__, __LINE__);
|
||||
unlock_parport ();
|
||||
return (UMAX1220P_PARK_FAILED);
|
||||
}
|
||||
/* EndSession() cancels any pending command */
|
||||
/* endSession() cancels any pending command */
|
||||
/* such as parking ...., so we only return */
|
||||
sanei_umax_pp_ReleaseScanner ();
|
||||
sanei_umax_pp_releaseScanner ();
|
||||
unlock_parport ();
|
||||
return (UMAX1220P_OK);
|
||||
}
|
||||
|
@ -339,7 +339,7 @@ sanei_umax_pp_start (int x, int y, int width, int height, int dpi, int color,
|
|||
if (lock_parport () == UMAX1220P_BUSY)
|
||||
return (UMAX1220P_BUSY);
|
||||
/* end session isn't done by cancel any more */
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
|
||||
if (autoset)
|
||||
sanei_umax_pp_setauto (1);
|
||||
|
@ -359,11 +359,11 @@ sanei_umax_pp_start (int x, int y, int width, int height, int dpi, int color,
|
|||
break;
|
||||
}
|
||||
|
||||
if (sanei_umax_pp_StartScan
|
||||
if (sanei_umax_pp_startScan
|
||||
(x + 144, y, width, height, dpi, col, brightness, contrast, rbpp, rtw,
|
||||
rth) != 1)
|
||||
{
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
return (UMAX1220P_START_FAILED);
|
||||
}
|
||||
|
@ -378,9 +378,9 @@ sanei_umax_pp_read (long len, int window, int dpi, int last,
|
|||
DBG (3, "sanei_umax_pp_read\n");
|
||||
if (lock_parport () == UMAX1220P_BUSY)
|
||||
return (UMAX1220P_BUSY);
|
||||
if (sanei_umax_pp_ReadBlock (len, window, dpi, last, buffer) == 0)
|
||||
if (sanei_umax_pp_readBlock (len, window, dpi, last, buffer) == 0)
|
||||
{
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
return (UMAX1220P_READ_FAILED);
|
||||
}
|
||||
unlock_parport ();
|
||||
|
@ -397,7 +397,7 @@ sanei_umax_pp_lamp (int on)
|
|||
if (lock_parport () == UMAX1220P_BUSY)
|
||||
return (UMAX1220P_BUSY);
|
||||
|
||||
if (sanei_umax_pp_SetLamp (on) == 0)
|
||||
if (sanei_umax_pp_setLamp (on) == 0)
|
||||
{
|
||||
DBG (0, "Setting lamp state failed!\n");
|
||||
}
|
||||
|
@ -418,8 +418,8 @@ sanei_umax_pp_status (void)
|
|||
if (lock_parport () == UMAX1220P_BUSY)
|
||||
return (UMAX1220P_BUSY);
|
||||
/* check if head is at home */
|
||||
sanei_umax_pp_CmdSync (0x40);
|
||||
status = sanei_umax_pp_ScannerStatus ();
|
||||
sanei_umax_pp_cmdSync (0x40);
|
||||
status = sanei_umax_pp_scannerStatus ();
|
||||
if ((status & MOTOR_BIT) == 0x00)
|
||||
{
|
||||
unlock_parport ();
|
||||
|
@ -440,7 +440,7 @@ sanei_umax_pp_close ()
|
|||
DBG (3, "sanei_umax_pp_close\n");
|
||||
|
||||
lock_parport ();
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
|
||||
#ifdef HAVE_LINUX_PPDEV_H
|
||||
|
|
|
@ -22,31 +22,35 @@
|
|||
:mfg "UMAX" ; name a manufacturer
|
||||
:url "http://www.umax.com.tw/"
|
||||
|
||||
; These scanners are known to have the same ASIC. What scanners work
|
||||
; isn't actually known. Also the interfaces are only guessed
|
||||
; These scanners are known to have the same ASIC family.
|
||||
|
||||
:model "Astra 1220P"
|
||||
:interface "Parport (EPP)"
|
||||
:interface "Parport (EPP/ECP)"
|
||||
:status :good
|
||||
|
||||
:model "Astra 2000P"
|
||||
:interface "Parport (EPP)"
|
||||
:interface "Parport (EPP/ECP)"
|
||||
:status :good
|
||||
|
||||
:model "Astra 1600P"
|
||||
:interface "Parport (EPP)"
|
||||
:status :good
|
||||
|
||||
:model "Astra 610P"
|
||||
:interface "Parport (EPP)"
|
||||
:model "Astra 600P"
|
||||
:interface "Parport (sPP/ECP)"
|
||||
:status :unsupported
|
||||
:comment "don't work due to lack of hardware to test"
|
||||
:comment "untested, but should be close to 610P"
|
||||
|
||||
:model "Astra 610P"
|
||||
:interface "Parport (SPP/ECP)"
|
||||
:status :minimal
|
||||
:comment "work in progress"
|
||||
|
||||
|
||||
:mfg "Hewlett-Packard"
|
||||
|
||||
:model "Scanjet 3200C"
|
||||
:interface "Parport (EPP)"
|
||||
:interface "Parport (EPP/ECP)"
|
||||
:status :good
|
||||
:comment "works (relabelled 1220P and 2000P)"
|
||||
|
||||
|
|
|
@ -14,6 +14,8 @@ Model:
|
|||
.br
|
||||
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
|
||||
.br
|
||||
Astra 610P
|
||||
.br
|
||||
Astra 1220P
|
||||
.br
|
||||
HP3200C
|
||||
|
@ -33,11 +35,13 @@ There isn't software way to recognize them properly. Under windows, model is
|
|||
set by the driver installed, regardless of the hardware.
|
||||
.PP
|
||||
.TP
|
||||
.B EPP MODE ONLY
|
||||
The current version of the backend use only EPP mode to communicate with the
|
||||
scanner. PS/2 and SPP mode aren't implemented. It is recommended that you set
|
||||
your parallel port to EPP in BIOS with the current version of this backend.
|
||||
ECPEPP will only work if you use a 2.4 kernel with ppdev character device support.
|
||||
.B EPP/ECP MODES ONLY
|
||||
The current version of the backend uses only EPP or ECP mode to communicate
|
||||
with the scanner. PS/2 and SPP mode aren't implemented. It is recommended that
|
||||
you set your parallel port to EPP in BIOS with the current version of this
|
||||
backend. You can leave it to ECP or ECP+EPP, but in this case you may not use
|
||||
ppdev but only direct hardware access if you have to use ECP. ECPEPP will only
|
||||
work if you use a 2.4 or 2.6 kernel with ppdev character device support.
|
||||
.PP
|
||||
This backend does support parport sharing only
|
||||
.I
|
||||
|
@ -172,7 +176,7 @@ Option
|
|||
.B astra
|
||||
allows you to change the model of your scanner. Current auto detection is based
|
||||
on side effects on scanning when using 1220P command set on other models, so
|
||||
it may fail on unkown hardware combination. Valid values are 1220, 1600
|
||||
it may fail on unkown hardware combination. Valid values are 610, 1220, 1600
|
||||
and 2000. It is usefull only when autodetection fails to detect properly
|
||||
your scanner model. If your scanner work properly but is reported wrongly,
|
||||
let it be that way.
|
||||
|
@ -185,7 +189,7 @@ Option
|
|||
.B buffer
|
||||
allows you to change the size of the scan buffer. The size must be specified in
|
||||
bytes. The default value is 2 megabytes. Decreasing this value will improve the
|
||||
smoothness of the updates of progress status in the frontend, but will stall the
|
||||
smoothness of progress bar in the frontend, but will stall the
|
||||
scan more often.
|
||||
|
||||
.PP
|
||||
|
|
171
tools/umax_pp.c
171
tools/umax_pp.c
|
@ -89,7 +89,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected color mode value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
color = 0;
|
||||
i++;
|
||||
|
@ -106,7 +106,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
fprintf (stderr, "unexpected color mode value <%s>\n", argv[i]);
|
||||
fprintf (stderr, "Must be RGB, RGB12, BW, or BW12\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,13 +117,13 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected x value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
x = atoi (argv[i + 1]);
|
||||
if (x < 0 || x > 5100)
|
||||
{
|
||||
fprintf (stderr, "x must be between 0 and 5099\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -135,13 +135,13 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected y value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
y = atoi (argv[i + 1]);
|
||||
if (y < 0 || y > 7000)
|
||||
{
|
||||
fprintf (stderr, "y must be between 0 and 7000\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -153,19 +153,19 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected width value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
width = atoi (argv[i + 1]);
|
||||
if ((width < 1) || (width > 5100))
|
||||
{
|
||||
fprintf (stderr, "width must be between 1 and 5100\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
if (x + width > 5100)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"Right side of scan area exceed physical limits (x+witdh>5100)\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -178,19 +178,19 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected height value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
height = atoi (argv[i + 1]);
|
||||
if ((height < 1) || (height > 7000))
|
||||
{
|
||||
fprintf (stderr, "height must be between 1 and 7000\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
if (y + height > 7100)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"Bottom side of scan area exceed physical limits (y+height>7100)\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -202,7 +202,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected trace value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
trace = atoi (argv[i + 1]);
|
||||
i++;
|
||||
|
@ -229,13 +229,13 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected dpi value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
dpi = atoi (argv[i + 1]);
|
||||
if ((dpi < 75) || (dpi > 1200))
|
||||
{
|
||||
fprintf (stderr, "dpi value has to be between 75 and 1200\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
if ((dpi != 75)
|
||||
&& (dpi != 150)
|
||||
|
@ -243,19 +243,20 @@ main (int argc, char **argv)
|
|||
{
|
||||
fprintf (stderr,
|
||||
"dpi value has to be 75, 150, 300, 600 or 1200\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
}
|
||||
|
||||
if ((strcmp (argv[i], "-g") == 0) || (strcmp (argv[i], "--brightness") == 0))
|
||||
if ((strcmp (argv[i], "-g") == 0)
|
||||
|| (strcmp (argv[i], "--brightness") == 0))
|
||||
{
|
||||
if (i == (argc - 1))
|
||||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected hex brightness value ( ex: A59 )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -263,7 +264,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected hex brightness value ( ex: A59 )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
brightness = strtol (argv[i], NULL, 16);
|
||||
sanei_umax_pp_setauto (0);
|
||||
|
@ -276,7 +277,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected hex contrast value ( ex: A59 )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -284,7 +285,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected hex contrast value ( ex: A59 )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
contrast = strtol (argv[i], NULL, 16);
|
||||
}
|
||||
|
@ -296,7 +297,7 @@ main (int argc, char **argv)
|
|||
Usage (argv[0]);
|
||||
fprintf (stderr,
|
||||
"expected device name ( ex: /dev/parport0 )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -308,7 +309,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected hex io port value ( ex: 3BC )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
i++;
|
||||
found = 1;
|
||||
|
@ -316,7 +317,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected hex io port value ( ex: 378 )\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
port = strtol (argv[i], NULL, 16);
|
||||
}
|
||||
|
@ -328,7 +329,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "expected lamp value\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
lamp = atoi (argv[i + 1]);
|
||||
i++;
|
||||
|
@ -339,7 +340,7 @@ main (int argc, char **argv)
|
|||
{
|
||||
Usage (argv[0]);
|
||||
fprintf (stderr, "unexpected argument <%s>\n", argv[i]);
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* next arg */
|
||||
|
@ -360,10 +361,10 @@ main (int argc, char **argv)
|
|||
|
||||
/* enable I/O */
|
||||
/* parport_claim */
|
||||
if (sanei_umax_pp_InitPort (port, name) != 1)
|
||||
if (sanei_umax_pp_initPort (port, name) != 1)
|
||||
{
|
||||
fprintf (stderr, "failed to gain direct acces to port 0x%X!\n", port);
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
if (trace)
|
||||
{
|
||||
|
@ -381,65 +382,77 @@ main (int argc, char **argv)
|
|||
if ((!scan) && (lamp < 0) && (!probe))
|
||||
scan = 1;
|
||||
|
||||
/* lamp on/off */
|
||||
if (lamp >= 0)
|
||||
{
|
||||
/* init transport layer */
|
||||
if (sanei_umax_pp_InitTransport (recover) != 1)
|
||||
{
|
||||
printf ("InitTransport() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return (0);
|
||||
}
|
||||
if (sanei_umax_pp_SetLamp (lamp) == 0)
|
||||
{
|
||||
fprintf (stderr, "Setting lamp state failed!\n");
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* probe scanner */
|
||||
if (probe)
|
||||
if ((probe) || (lamp >= 0))
|
||||
{
|
||||
printf ("Probing scanner ....\n");
|
||||
if (sanei_umax_pp_ProbeScanner (recover) != 1)
|
||||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
if (recover)
|
||||
{
|
||||
sanei_umax_pp_InitTransport (recover);
|
||||
sanei_umax_pp_EndSession ();
|
||||
if (sanei_umax_pp_ProbeScanner (recover) != 1)
|
||||
sanei_umax_pp_initTransport (recover);
|
||||
sanei_umax_pp_endSession ();
|
||||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
printf ("Recover failed ....\n");
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
printf ("Recover done !\n");
|
||||
}
|
||||
else
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* could be written better .... but it is only test */
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
/* init transport layer */
|
||||
if (sanei_umax_pp_InitTransport (0) != 1)
|
||||
if (sanei_umax_pp_initTransport (0) != 1)
|
||||
{
|
||||
printf ("InitTransport() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return (0);
|
||||
printf ("initTransport() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
i = sanei_umax_pp_CheckModel ();
|
||||
if (i < 610)
|
||||
i = sanei_umax_pp_checkModel ();
|
||||
if (i < 600)
|
||||
{
|
||||
sanei_umax_pp_EndSession ();
|
||||
printf ("CheckModel() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return (0);
|
||||
sanei_umax_pp_endSession ();
|
||||
printf ("checkModel() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
if (trace)
|
||||
printf ("UMAX Astra %dP detected \n", i);
|
||||
|
||||
/* free scanner if a scan is planned */
|
||||
if (scan)
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
}
|
||||
|
||||
/* lamp on/off: must come after probing (610p handling) */
|
||||
if (lamp >= 0)
|
||||
{
|
||||
/* init transport layer */
|
||||
if (trace)
|
||||
printf ("Tryning to set lamp %s\n", lamp ? "on" : "off");
|
||||
if (sanei_umax_pp_initTransport (recover) != 1)
|
||||
{
|
||||
printf ("initTransport() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (trace)
|
||||
printf ("initTransport passed...\n");
|
||||
}
|
||||
if (sanei_umax_pp_setLamp (lamp) == 0)
|
||||
{
|
||||
fprintf (stderr, "Setting lamp state failed!\n");
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (trace)
|
||||
printf ("sanei_umax_pp_setLamp passed...\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* scan */
|
||||
|
@ -452,43 +465,43 @@ main (int argc, char **argv)
|
|||
*/
|
||||
do
|
||||
{
|
||||
i = sanei_umax_pp_InitTransport (recover);
|
||||
i = sanei_umax_pp_initTransport (recover);
|
||||
}
|
||||
while (i == 2);
|
||||
if (i != 1)
|
||||
{
|
||||
printf ("InitTransport() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return (0);
|
||||
printf ("initTransport() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
/*i = sanei_umax_pp_CheckModel ();
|
||||
/*i = sanei_umax_pp_checkModel ();
|
||||
if (i < 610)
|
||||
{
|
||||
sanei_umax_pp_EndSession ();
|
||||
printf ("CheckModel() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return (0);
|
||||
sanei_umax_pp_endSession ();
|
||||
printf ("checkModel() failed (%s:%d)\n", __FILE__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
if (trace)
|
||||
printf ("UMAX Astra %dP detected \n", i); */
|
||||
/* init scanner */
|
||||
if (sanei_umax_pp_InitScanner (recover) == 0)
|
||||
if (sanei_umax_pp_initScanner (recover) == 0)
|
||||
{
|
||||
sanei_umax_pp_EndSession ();
|
||||
return (0);
|
||||
sanei_umax_pp_endSession ();
|
||||
return 0;
|
||||
}
|
||||
/* scan */
|
||||
if (sanei_umax_pp_Scan
|
||||
if (sanei_umax_pp_scan
|
||||
(x, y, width, height, dpi, color, brightness, contrast) != 1)
|
||||
{
|
||||
sanei_umax_pp_ReleaseScanner ();
|
||||
sanei_umax_pp_EndSession ();
|
||||
return (0);
|
||||
sanei_umax_pp_releaseScanner ();
|
||||
sanei_umax_pp_endSession ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* wait for head parking */
|
||||
sanei_umax_pp_ParkWait ();
|
||||
sanei_umax_pp_ReleaseScanner ();
|
||||
sanei_umax_pp_parkWait ();
|
||||
sanei_umax_pp_releaseScanner ();
|
||||
}
|
||||
sanei_umax_pp_EndSession ();
|
||||
sanei_umax_pp_endSession ();
|
||||
|
||||
return (1);
|
||||
return 1;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue