diff --git a/backend/Makefile.in b/backend/Makefile.in index fcb08aa60..35768f299 100644 --- a/backend/Makefile.in +++ b/backend/Makefile.in @@ -54,8 +54,8 @@ COMPILE = $(CC) -c $(CFLAGS) $(DEFS) $(INCLUDES) $(CPPFLAGS) PRELOADABLE_BACKENDS = abaton agfafocus apple artec as6e avision bh canon \ coolscan dc25 @DC210@ @DC240@ dmc epson hp m3096g microtek microtek2 \ - mustek mustek_pp nec @NET@ pie @PINT@ plustek @PNM@ @QCAM@ ricoh s9036 \ - sharp snapscan sp15c st400 tamarack umax @V4L@ + mustek mustek_pp nec @NET@ pie @PINT@ plustek @PNM@ @QCAM@ ricoh \ + s9036 sharp snapscan sp15c st400 tamarack umax umax_pp @V4L@ ALL_BACKENDS = $(PRELOADABLE_BACKENDS) dll LIBS = $(addprefix libsane-,$(addsuffix .la,$(ALL_BACKENDS))) @@ -155,6 +155,7 @@ libsane.la: dll.lo dll-s.lo $(EXTRA) $(addsuffix .lo,$(DLL_PRELOAD)) $(LIBOBJS) # additional dependencies EXTRA_hp = hp-accessor hp-device hp-handle hp-hpmem hp-option hp-scl +EXTRA_umax_pp = umax_pp_low umax_pp_mid EXTRA_dc210 = djpeg EXTRA_dc240 = djpeg @@ -262,6 +263,9 @@ libsane-umax.la: ../sanei/sanei_config2.lo libsane-umax.la: ../sanei/sanei_constrain_value.lo libsane-umax.la: ../sanei/sanei_scsi.lo libsane-v4l.la: ../sanei/sanei_constrain_value.lo +libsane-umax_pp.la: $(addsuffix .lo,$(EXTRA_umax_pp)) +libsane-umax_pp.la: ../sanei/sanei_constrain_value.lo +libsane-umax_pp.la: ../sanei/sanei_config2.lo ifneq ($(DLL_PRELOAD),) # need to make dll dependent on all sanei files: diff --git a/backend/dll.conf b/backend/dll.conf index e566fb9db..0b128181d 100644 --- a/backend/dll.conf +++ b/backend/dll.conf @@ -33,4 +33,5 @@ snapscan sp15c tamarack umax +#umax_pp v4l diff --git a/backend/umax_pp-s.c b/backend/umax_pp-s.c new file mode 100644 index 000000000..baafc7c2b --- /dev/null +++ b/backend/umax_pp-s.c @@ -0,0 +1,83 @@ +#include "sane/sanei_backend.h" + +/* Now define the wrappers (we could use aliases here, but go for + robustness for now...: */ + +SANE_Status +sane_init (SANE_Int *vc, SANE_Auth_Callback cb) +{ + return ENTRY(init) (vc, cb); +} + +SANE_Status +sane_get_devices (const SANE_Device ***dl, SANE_Bool local) +{ + return ENTRY(get_devices) (dl, local); +} + +SANE_Status +sane_open (SANE_String_Const name, SANE_Handle *h) +{ + return ENTRY(open) (name, h); +} + +const SANE_Option_Descriptor * +sane_get_option_descriptor (SANE_Handle h, SANE_Int opt) +{ + return ENTRY(get_option_descriptor) (h, opt); +} + +SANE_Status +sane_control_option (SANE_Handle h, SANE_Int opt, SANE_Action act, + void *val, SANE_Word *info) +{ + return ENTRY(control_option) (h, opt, act, val, info); +} + +SANE_Status +sane_get_parameters (SANE_Handle h, SANE_Parameters *parms) +{ + return ENTRY(get_parameters) (h, parms); +} + +SANE_Status +sane_start (SANE_Handle h) +{ + return ENTRY(start) (h); +} + +SANE_Status +sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp) +{ + return ENTRY(read) (h, buf, maxlen, lenp); +} + +SANE_Status +sane_set_io_mode (SANE_Handle h, SANE_Bool non_blocking) +{ + return ENTRY(set_io_mode) (h, non_blocking); +} + +SANE_Status +sane_get_select_fd (SANE_Handle h, SANE_Int *fdp) +{ + return ENTRY(get_select_fd) (h, fdp); +} + +void +sane_cancel (SANE_Handle h) +{ + ENTRY(cancel) (h); +} + +void +sane_close (SANE_Handle h) +{ + ENTRY(close) (h); +} + +void +sane_exit (void) +{ + ENTRY(exit) (); +} diff --git a/backend/umax_pp.desc b/backend/umax_pp.desc new file mode 100644 index 000000000..7c4b1f575 --- /dev/null +++ b/backend/umax_pp.desc @@ -0,0 +1,57 @@ +; +; SANE Backend specification file +; +; It's basically emacs-lisp --- so ";" indicates comment to end of line. +; All syntactic elements are keyword tokens, followed by a string or +; keyword argument, as specified. +; +; ":backend" *must* be specified. +; All other information is optional (but what good is the file without it?). +; + +:backend "umax_pp" ; name of backend +:version "1" ; version of backend +:status :new ; :alpha, :beta, :stable, :new +:manpage "sane-umax_pp" ; name of manpage (if it exists) + ; backend's web page +:url "http://umax1220p.sourceforge.net/" + +:devicetype :scanner ; start of a list of devices.... + ; other types: :stillcam, :vidcam, + ; :meta, :api + +:mfg "UMAX" ; name a manufacturer +:url "http://www.umax.com/" + +; These scanners are known to have the same ASIC. What scanners work +; isn't actually known. Also the interfaces are only guessed + +:model "Astra 1220P" +:interface "Parport (EPP)" +:comment "works" + +:model "Astra 2000P" +:interface "Parport (EPP)" +:comment "works" + +:model "Astra 1600P" +:interface "Parport (EPP)" +:comment "works" + +:model "ASTRA 610 P" +:interface "Parport (EPP)" +:comment "don't work (yet)" + + +:mfg "Hewlett-Packard" + +:model "HP 3200 C" +:interface "Parport (EPP)" +:comment "works (relabelled 1220P and 2000P)" + + +; :comment and :url specifiers are optional after :mfg, :model, :desc, +; and at the top-level. + + +