[sane-devel] TODO list

Henning Meier-Geinitz henning@meier-geinitz.de
Thu, 29 Nov 2001 21:01:05 +0100


Hi,

this is the current TODO list of the sane-backends CVS:

TODO (2001-11-29)

******** todo ********

backends
--------
  * Configuration problems:
    - add options "--exec-prefix=...." and "--prefix=..." compareable
      to gtk-config

  * Add new backends (?)
    - primax http://primax.sourceforge.net/
    - hp4200 http://hp4200-backend.sourceforge.net/
    - v4l2 http://video.inodes.org/sane-v4l2/
    - Relisys Scorpio Super 3 SCSI II
      Mark Plowman <mplowman@wxs.nl>
    - Linux Handscanner Ioctl Interface scanner by Harald
      Bauer <bauer-h@web.de>
    - viceo (Visioneer OneTouch 8600)
      http://www.abaforum.es/martim/bird/otlinux.htm
    - Genius Vivid Pro USB, Colorado USB 19200, Visioneer OneTouch 7600 
      IBM IdeaScan 2000 USB 
      http://homepages.paradise.net.nz/stevenel/scanner/
    - Fujitsu M3091DCd support
      Frederik Ramm <frederik@remote.org>
      http://www.remote.org/frederik/projects/software/sane/
    - Canon FB620S flatbed scanner and FS2710 film scanner
      ftp://stthd0.pc.uni-koeln.de/pub/canon-1.08.tar.gz
      Ulrich Deiters <ukd@xenon.pc.Uni-Koeln.DE>
    - UMAX Astra 1220U  backend
      http://umax1220u-sane.sourceforge.net/

  * Update backends
    - Combine all the Fujitsu backends into one single backend

  * Check all backends which use fork/kill for the kill (-1,...) bug
    first found in the microtek2 backend.

  * All backends should check for TL_X < BR_X and TL_Y < BR_Y to
    avoid segfaults or even scanner damage.

  * Really fix all the parport/inb/outb compilation issues which break
    porting to some non-i386 platforms.

  * Use DBG(...) instead of fprintf(stderr, ...) or printf
     - microtek

  * Check net/saned
     - saned times out after 5 minutes (now 60 minutes). Check if the
       watchdog timer is really necessary (e.g. to avoid blocking scanners
       by one user). Maybe add an command line option to saned to set the
       timeout. Otherwise turn on TCP keep alive (where available) and
       (maybe) check the connection from server side.

  * qcam:
     - implement auto mode for brightness and black-level (don't
       just advertise it!) Actually, implement an auto "backend" instead
       that can be plugged in front of any backend with brightness/contrast
       etc controls
     - figure out how/if to support bulb mode
     - convert to use sanei_pio functions instead of direct port
       access.
     - Check file handling in /tmp.

  * dc210 and jpeg stuff: move sanei_* functions to sanei/ (if they are 
    necessary).

  * v4l: Problems (crash) with more than one video card. It looks like 
    the two different cards are identified as the same card.

  * Fix backends where sane_exit() does not release memory allocated by
    sane_get_devices().
      - abaton
      - agfafocus
      - apple
      - as6e
      - avision
      - bh
      - canon
      - coolscan
      - dmc
      - m3096
      - microtek
      - qcam
      - ricoh
      - s9036
      - sharp
      - sp15c
      - tamarack
      
      - etc?

  * as6e: attach: memory (dev + dev-sane.name) isn't freed if diver isn't
    found.

  * avision: line 1393: word isn't freed sometimes (maybe if  cp == line?)

  * add a contact address for each backend (in backend.desc).

doc
---
  * Documentation for sanei API
    - any ideas for this?
    - Options:
      - Doxygen, <URL:http://www.stack.nl/~dimitri/doxygen/>
      - ROBODoc, <URL:http://www.xs4all.nl/~rfsber/Robo/>

  * sane.tex: Define the return values for sane_init?  Define the
    consequences if sane_init do not return SANE_STATUS_GOOD.
    Add a warning/explanation about problems with sane_get_select_fd,
    Unix select() calls and sane_cancel.

  * Update backend manpages

frontends
---------
  * dll: Rewrite to use libtool ltdl library

  * Add a check in the frontends if the backend delivers more data than
    it announced by sane_get_parameters to avoid segfaults with bad 
    backends?

 [the remaining entries have been moved to the sane-frontends package]

sanei
-----
  * SCSI access doesn't seem to work on Linux/Sparc. See emails from
    Tomislav Renic on sane-devel (2001-09-21).

  * sanei_scsi: Check return values of req_wait and cmd in case of
    SCSI DEVICE BUSY. Better specification of the behaviour of sanei_scsi
    functions (e.g. return values, timeout 10 min versus 1 min)?

  * sanei_usb: Add sanei_usb_write_control or similar. At least the Linux
    USB scanner driver allows to send control messages since kernel 2.4.13.

  * create sanei_parport_* and remove all inb, outb,... from all backends;
    use libieee1284 if available (see
    http://people.redhat.com/twaugh/libieee1284/). Or just include this
    library into sane.

  * Add support for semaphores also for OS/2 (currently used in snapscan).

misc
----
  * Remove compiler warnings (>300 warnings even in disable-warnings mode,
    >700 with --enable-warnings))

  * Test SANE on different os/platforms, fix possible compilation problems 
     Test methods: scanimage -d pnm:0 --filename=file.pnm -T
                   scanimage -d net:localhost:pnm:0 --filename=file.pnm -T
                   (start saned by inetd or saned -d before testing)
                   xscanimage / gimp with xscanimage plugin (where available)
     All the above with shared and static libraries.

  * Keep config.guess and config.sub uptodate.

  * Use #include "../include/sane/..." instead of #include <sane...>

  * Use #include "../include/lalloca.h" instead of #include <lalloca.h>

  * Check include/sane/config.h.in for unnecessary macros.

  * Add configure option to enable only the net backend for users without
    local scanners. Install only sane-dll/sane-net (or even only sane-net).
    Maybe something like  --network-client-only or --disable-local-devices.

  * check memory leaks (checked with purify and mtrace (from glibc)):

  * Add installation procedure for translations of SANE backend's options.
 
  * Add AC_OBJEXT and AC_EXEEXT to configure.in for automatically adding
    the correct extensions (e.g. for OS/2). Also update the Makefiles
     accordingly.

Bye,
  Henning