On Wednesday 11 May 2005 08:12, stef wrote: > Hello, > > I've started to address the points you raised (and I sohouldn't have > forgotten ...). I'll signal when I'll feel the backend is up to the > requirements. > > Regards, > Stef > Another thing, I've forgotten: See the file genesys.c, i.e. function genesys_init() static SANE_Status genesys_init (Genesys_Device * dev) { switch (dev->model->asic_type) { case GENESYS_GL646: return sanei_gl646_init (dev); case GENESYS_GL841: return sanei_gl841_init (dev); } return SANE_STATUS_INVAL; }
which is called later on: RIE (genesys_init (dev)); In a former post, I suggested to use a per ASIC/Model function pointer thing to use, which could make life much more easier, that way, that you simply write: dev->model->cmd_set->init(dev); This will be done as follows: We define a command set structure with all the functions needed (here all functions that differ between GL646 and GL841): struct genesys_cmd_set { SANE_Status (*init) (Genesys_Device * dev); . . . . } This command set structure then will be part of the Genesys_Model structure, which is also part of the device structure... This method is used intensively in gt68xx backend and I think we should keep this also for the genesys backend as it allows easy extension of the command set (think of adding also GL842)... Gerhard