[sane-devel] Current TODO list

Henning Meier-Geinitz henning@meier-geinitz.de
Tue, 1 Apr 2003 17:28:52 +0200


Hi developers,

I'll append the current TODO list from CVS. If anything is obsolete,
wrong or missing, please tell me or update in CVS.

Any news about the listed (or other) backends that should be included
in the next release?

Bye,
  Henning
  
TODO (2003-03-30)

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

backends
--------
  * Add new backends (+ means scheduled for SANE 1.0.12)
    - Hewlett-Packard ScanJet 3300C / 3400C and 4300C (wip)
      http://sourceforge.net/projects/hp3300backend
    - Hewlett-Packard 4200c
      http://hp4200-backend.sourceforge.net/
      http://www.linuxprinting.org/till/tmp/sane-backends-1.0.9-hp4200-0.3.patch.bz2
      http://fz.eryx.net/sane/#hp4200

  * 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.
     - The result of locking isn't checked --> does it make sense at all?

  * sm3600.c, .h:
     - Fix comment header (wrong author, wrong description)

  * dc210, dc240, gphoto2, and jpeg stuff: move sanei_* functions to sanei/
    (if they are necessary). That's probably for SANE2.

  * v4l:
     - Geometry support is missing
     - Frequency setting is missing
     - check if v4lctl distributed with xawtv can be used
     - Add v4l updates from Martin Palm

  * memory leaks:
    - sane_exit() does not release memory allocated by sane_get_devices():
      abaton, agfafocus, apple, as6e, bh, canon, coolscan, dmc, qcam,
      ricoh, s9036, sp15c, tamarack
    - as6e: attach: memory (dev + dev-sane.name) isn't freed if driver isn't
      found.

  * suspicious warnings or type mismatchs:
    - bh: backend/bh.c", line 1923: warning: end-of-loop code not reached
      see sane-devel. Also don't use mktemp.
    - coolscan: Lots of compilation warnings (e.g.
      "backend/coolscan-scsidef.h", line 160: warning: initialization
      type mismatch; empty declarations), see sane-devel.

  * Check if sp15c backend (Fujitsu ScanPartner 15C) can be included in
    fujitsu or avision backends.

  * artec
    - Fix misdetection of AT3. Add something like this to the version detection
      code:
        else if (strstr (str, "AT3") == str)
          {
            str[3] = '\0';
            strncpy (product_revision, str + 8, 4);
          }
      The AT3 seems to behave similar to the A6000C PLUS and includes its
      version in the model string:
      [artec] 0x00: 06 00 02 01 5b 00 00 00 55 4c 54 49 4d 41 20 20 ....[...ULTIMA
      [artec] 0x10: 41 54 33 20 20 20 20 20 31 2e 36 30 20 20 20 20 AT3    1.60
    - Fix email address of Chris Pinkham. cpinkham@infi.net bounces.

  * All backends:
    Check that global variables are initialized propperly. sane_init can be
    called more than once (if sane_exit was called before)! Global variables
    must be either initialized in sane_init or reset in sane_exit.
    At least these backends segfault:
    - artec
    - mustek_pp
    - umax
    

doc
---
  * Add doxygen documentation for the remaining sanei files:
    - sanei_pio.h
    - sanei_pv8630.h
    - sanei_wire.h

  * desc files:
    - Add keywords "vendor-id" and "product-id" for SCSI and USB ids.
    - snapscan: add Epson Perfection 660
    - plustek:  check status of Umax 3450 USB scanner (same as 3400?)
    - umax: genius.kye.de times out?

  * manpages:
    - html manpages have broken links to other man pages if link is wrapped at
      the end of the line (e.g. sane-pint points to pint.5.html).

frontends
---------
  * saned:
     - saned times out after 60 minutes. Check if the
       watchdog timer is really necessary (e.g. to avoid blocking scanners
       by one user). Maybe add a 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.
     - Check for wire errors everywhere. Maybe create a macro?
     - Can the amount of memory that's used for strings be limited? 
       Otherwise remote computers can allocate huge amounts of memories on the
       server.
     - Think about a complete rewrite with security in mind.

  * scanimage: Check range of width and height. scanimage just uses the ranges
    from br-x and br-y but this is wrong for tl-x and tl-y != 0 and for
    SANE_UNIT_PIXEL.
  
  * scanimage: Reduce range of width and length if tlx or tly is different 
    from 0 to avoid warnings.

  * scanimage: Check handling of short string-list options.

sanei
-----
  * sanei_scsi: Think about a completely new interface. Details are in
    http://www.mostang.com/pipermail/sane-devel/2002-January/001995.html and
    http://www.mostang.com/pipermail/sane-devel/2002-December/016773.html.

  * 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.

  * Check if the device file has the right type before accessing it. E.g.
    check for major/minor numbers to avoid accessing a USB file as SCSI 
    device. This is finished for sanei_scsi.c/Linux and sane-find-scanner.
    Patches for other platforms are welcome.

  * sanei_scsi (Linux): Make sure that the SCSI driver is loaded when
    checking for scanners. Ideas: Open/close all the /dev/sg* files in
    sanei_scsi.c, dll.c or in a new backend.

  * sanei_usb, sanei_scsi: Print all data send to and received from devices.
    Use high debug level.

  * sanei_usb:
    - some scanners seem to provide more than one bulk-in endpoint(?) 


platform-specific
-----------------

  * Fix MacOS X issues: 
    - Add support in sanei_scsi.c.
    - Find out why libusb doesn't work propperly. Seems to work with some
      scanners, however.
    - More docu in README.darwin.
    - sm3600 is reported to crash with MacOS X. Actually, the crash is in
      libusb::usb_find_devices().
  
  * OS/2 issues: 
    - Add $EXEEXT or sed expression to Makefiles to get the .exe extension?
    - Add support for semaphores also for OS/2 (currently used in snapscan).

  * icc on ia32 + ia64:
    - fix sys/io.h problems (see README.linux)

misc
----
  * sane-config: add options "--exec-prefix=...." and "--prefix=..."
    compareable to gtk-config

  * Make output of sane-find-scanner more flexible. See scanimage -f for
    details.

  * Check licence issues with getopt*.c and md5.c. These files are GPLed, so
    if they are used in backends, their SANE exception will be void.

  * Can we link external libraries only to backends that need them?
    See http://fz.eryx.net/sane/#configure.

  * Fix japi to run on current jdks. Swing is now included, and there is
    a segfault in Sane.c. Silvio Vogt <blackhol at web.de> is working on this
    topic.

  * Update Dutch translation from Martin Kho (see sane-devel).

  * add configure switch to enable/disable libusb support