Hello, here's the status of the genesy backend after last commit:
- MD6471 is fully supported in color, gray and linart modes, at 50, 100, 150, 200, 250, 300, 400, 500, 600, 800 and 1200 dpi - code have been split up so that the genesys_low.c file is now unused, and replaced by genesys_gl646.c and genesys_gl841.c files. These hold functions specific to their related ASIC. - common code to both AISCs have been moved to genesys.c. "higher" level functions calls code from genesys_gl646.c or genesys_gl841.c based on the asic_type field which is initialized in genesys_devices.c Bugs left: - scanner init fails if the previous scan got certain amount of data. ie it doesn't fail allways. I'm trying to track it down, but that's not easy. Unplugging/replugging the scanner solves it. Once xsane has done a scan, the whole following session is OK. Todo: - for the MD6471, at dpi higher than 600, pixels are staggered. It is how the scanner sends them. So after doing 'line distance' calibration, this effect has then to be corrected (by shifting columns). Features to add: - true hardware lineart will be added when we find a scanner doing it. - add 16 bit scanning, which involves cancelling gamma calibration in this case. Some tests I did show that images aren't of good quality without hardware gamma correction. I'd like the current backend been reviewed so that we know what would be done to make it leave the experimental staging, and include it in the regular CVS. I think it is almost ready, and is only lacking a man page. Currently the gl841 file is a copy of the gl646, and needs quite some work before having GL841 based scanners work. In the process, we may have to add or move functions between genesys.c and low level files. My plan is that genesys.c will keep all common functions, functions that differs only by a few lines and so test the asic_field. Registers will have to be read or set by using the genesys_read_reg_from_set() and genesys_set_reg_from_set(). The speficic files will contain all functions that heavily use registers, or register of different meaning. Registers can be accessed directly by using the anonymous enum defined at the top of these files (841 one needs updating...). Some of the existing functions that are in the low level files could be split into a part that deals with registers, and another part of higher level which could be moved to genesys.c . However, I think it's a bit early to do it and that we'll handle such cases when enough gl841 code will have been written. Regards, Stef