[sane-devel] experimental/genesys backend status update

svoltz@wanadoo.fr svoltz@wanadoo.fr
Sat, 19 Feb 2005 07:34:17 +0100


        Hello,

        here's another status update of the experimental genesys backend after 
checkin last updates. Scanner does origin searching, coarse gain, offset and 
shading calibration. Gray level and color 8 bits scans works for 50, 100, 150, 200,
300, 350, 400 and 600 dpi. Image quality is allready rather good in spite of the
issues below.

        There are important problems to fix before the backend  is fully 
	operational:
	- head moving to scan area is broken. The steps amount computing has to
	  be fixed.
        - R, G and B lines don't come in sync and we will have to do line
	  distance correction. I'm rather inclined to do it when scanning will
	  work reliably, because it would be currently too complex for
	  debugging.
	- the MD6471 motor can be set to any resolution from 50 to 1200 dpi, with
	  50 dpi steps. This doesn't fit with the current enumeration of Y 
	  resolutions.
	- starting from 250 dpi, there is a lot of backtracking. This doesn't 
	  happen under windows, even with usbsnoop running. So there is something
	  wrong with bulk reads. Maybe we should use sanei_usb_read_int instead of
	  sanei_usb_read_bulk, or do some synchronization.
	- sometimes, depending on the amount of data read by a previous can,
	  scanimage hangs in genesys_park_head, after searching origin. When xsane
	  this doesn't happen sine origin searching is done once.
	- since CCD and motor resolution are not allways the same, scan lines have
	  to be shrunk. Currently, this is done by 'deletion', averaging should
	  be better. Maybe this resizing could be made a sanei function.
	- current calibration are designed for 'half CCD' resolution, and will
	  have to be modified for full optical range, depending on scan's
	  settings.
	- 650 to 1200 dpi scans must be fixed.
        - shading calibration is broken. I believe it because the data sent has
	  to match the scan area (SHDAREA is set), while it is currently for the
	  whole line.
        - shading calibration uses a hard coded value in genesys_dummy_dark_shading
        - there are 2 settings for CCD, one for full resolution, another for
          half resolution. So I think we need two regs_0x08_0x0b sets in
          Genesys_Sensor. 
        - we need a Genesys_Motor struct where we will move all harcoded values.
        - genesys_park_head has an hack: it restarts motor, will have to find why
	  it stops.

Regards,
        Stef