[sane-devel] Adding 700F/5600F to the gensys backend

stef stef.dev at free.fr
Tue Dec 28 20:53:59 UTC 2010


	Hello,
	
	the canon LiDE 700F and 5600F are GL847 based and such can be added to 
the genesys backend. The files handling this asic are genesys_gl847.[ch] . 
Each device is described in genesys_devices.c . I have added provisional 
entries that are mere clone of the LiDE 200 for these models. I have also 
added their USB ids to genesys.conf.in. So now the backend will detect them 
and try to use them the same way than the LiDE 200. 
	The LiDE 700F is a CIS scanner like the LiDE 200, so it may just work 
without touching anything. The 5600F case is different, it is using a CCD. 
Adding it will represent the same amount of work than done to add the 
Opticbook 3600 to the GL841 code. So reviewing the git history in the last 
days will show you a working example of how doing it.
	Since these scanners may differ in motor, sensor, GPIO, etc .. you may 
have to change these functions:
	- registers values for d0-d2, e0-e7 in genesys_gl847.h memory_layout 
table
	- GPIO definitions in genesys_devices.c, in this case, you'll have to 
create a new define and a new entry.
	- motor definition in genesys_devices.c, here again you'll have to add a 
new entry.
	- sensor definition in genesys_devices.c, here again you'll have to add a 
new entry. The 5600f will need a new one.
	- gl847_init_registers() for power-on default register settings

	All the values can be extracted from USB logs recorded under windows with 
http://www.pcausa.com/Utilities/UsbSnoop/ and processed with the 'decode.sh' 
in the appended archive.

	The 700F up to 1200 dpi seems an easy target, while the 5600F will need 
more work. One thing you must be aware is that the LiDE devices use a sensor 
which is composed of several 600 dpi segments slightly shifted. Once 
interleaved this gives higher resolution that the 600 dpi base. But it needs 
some special code to cope with (see ODD_EVEN_CIS flag in code). For now this 
code only handles 2 segments. If the sensor is made of more than 2 segments, 
the interleaving code will have to be changed.

	The development process consist in tuning the register values, run a test 
with full debug and compare it to the decode log of a scan done under windows, 
fixing all the differences.

	I'll be happy to answer any question you'll have or review any patch you 
would submit on the list (git diff against recent git prefered...).
	
Regards,
	Stef
-------------- next part --------------
A non-text attachment was scrubbed...
Name: scripts.tar.gz
Type: application/x-compressed-tar
Size: 3517 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/sane-devel/attachments/20101228/87574ae2/attachment.bin>


More information about the sane-devel mailing list