[sane-devel] Fwd: sanei_usb limitations

Reinhold Kainhofer reinhold at kainhofer.com
Wed Jan 5 01:01:08 UTC 2011

Am Dienstag, 4. Januar 2011, um 22:19:16 schrieb m. allan noah:
> I think your previous idea of adding a a new function to set the
> currently 'active' endpoint would be simpler. 

Actually, that was never my idea for overriding the endpoints for a single 
transactions, only for setting the global defaults. For the defaults, it is 
definitely cleaner/easier to use one function to set the default endpoints.

For overriding the ep of a single transaction I don't like this approach too 
much. Having to call a setter function first to set a global variable, before 
you do the actual function call is highly thread-unsafe, and I would prefer to 
pass the ep right to the function itself.

> something like:
> /*endpoint types*/
> #define SANEI_USB_BULK_OUT 0
> #define SANEI_USB_BULK_IN  1
> ...

What do you have against bitmasks like (USB_DIR_IN | USB_ENDPOINT_TYPE_BULK)? 
Then we don't need any new constants...

> sanei_usb_set_endpoint(SANE_Int dn, SANE_Int endpoint_type, SANE_Int
> endpoint_number){
>   switch/case setting devices[devcount].xxxx
> }
> Then you've only got one new function, and no other code changes?

Reinhold Kainhofer, reinhold at kainhofer.com, http://reinhold.kainhofer.com/
 * Financial & Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * LilyPond, Music typesetting, http://www.lilypond.org

More information about the sane-devel mailing list