[sane-devel] TODO list

Henning Meier-Geinitz henning@meier-geinitz.de
Wed, 17 Apr 2002 21:48:19 +0200


Hi,

This is the current TODO list. I don't think that we have any
release-critical bugs but they will show up immediately before the
release as usual :-/

Backend-maintainers please check if the TODO list contains an entry
about your backend. If an entry is obsolete, please change it in the
TODO list or contact me.

Other interested people are invited to send patches or proposals for
the TODO entries.

A general comment: The next release isn't that far away. Please test
sane-backends as much as you can. We have 7 new backends until now,
many many backend updates, and lots of internal changes including a
new libtool and SCSI changes.

Bye,
  Henning
  
TODO (2002-04-17)

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

backends
--------
  * Add new backends (+ means: scheduled for version 1.0.8, (+) means: 
    still maintained and/or updates will come)
    + Coolscan2 backend: support for LS-40, LS-4000, and LS-8000
      http://coolscan2.sourceforge.net/
   (+)hp4200 http://hp4200-backend.sourceforge.net/
   (+)Relisys Scorpio Super 3 SCSI II
      Mark Plowman <sane-devel@plowman.xs4all.nl>
      http://www.xs4all.nl/~plowman/
   (+)Genius Vivid Pro USB, Colorado USB 19200, Visioneer OneTouch 7600 
      IBM IdeaScan 2000 USB 
      http://homepages.paradise.net.nz/stevenel/scanner/
   (+)Hewlett-Packard ScanJet 3300C / 3400C and 4300C (wip)
      http://sourceforge.net/projects/hp3300backend

  * Update backends
    + Canon FB620S flatbed scanner and FS2710 film scanner support
      (update for canon backend).
      ftp://stthd0.pc.uni-koeln.de/pub/canon-1.08.tar.gz
      Ulrich Deiters <ukd@xenon.pc.Uni-Koeln.DE>
    
  * All backends should check for TL_X < BR_X and TL_Y < BR_Y to
    avoid segfaults or even scanner damage. This should NOT be done
    in sane_control_option, it should be possible to temporary set
    TL_X > BR_X or TL_ > BR, otherwise it is hard for a frontend to
    set the correct values.

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

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

  * dll: 
     - Rewrite to use libtool ltdl library
     - Check what happens when calling sane_init/sane_open and sane_exit
       more than once.

  * dc210, dc240, gphoto2, 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/fujitsu (?)
      - microtek
      - qcam
      - ricoh
      - s9036
      - sharp
      - sp15c
      - tamarack
      
      - etc?

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

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

  * net: add IPv6 support.

  * Fix warnings about DBG calls:
    - avision
    - sm3600
    - umax1220u
    - v4l
 
  * Make all symbols that don't start with sane_ or sanei_ static (see
    make libcheck):
    - artec: cap_data
    - avision: Avision_Device_List
    - canon: option_name
  
  * bh: Suspicious loop ("../../backend/bh.c", line 1923: warning:
    end-of-loop code not reached), see sane-devel.

  * coolscan: Lots of compilation warnings (e.g.
    "../../backend/coolscan-scsidef.h", line 160: warning: initialization
    type mismatch; empty declarations), see sane-devel.

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

  * sane.tex:
    - Define the return values for sane_init?  Define the consequences if
      sane_init doesn't return SANE_STATUS_GOOD.
    - Add a warning/explanation about problems with sane_get_select_fd, Unix
      select() calls and sane_cancel.
    - Add some text about the meaning of bits in 1-bit modes.
    - Define, how to handle SANE_CAP_ADVANCED for groups.

  * sane-backends.html should be sorted by manufacturer, not by backend.
    (wip by Henning Meier-Geinitz).

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.
     - Add IPv6 support.

  * scanimage: Add i18n (NLS) support?

  * scanimage: Fix pnm 16 bit output (partly patch available).

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

sanei
-----
  * sanei_scsi: Think about a completely new interface. Details are in
    http://www.mostang.com/pipermail/sane-devel/2002-January/001995.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. 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.

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

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

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

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

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

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

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

  * Add support to sane-find-scanner to check whole directories for device
    files.

  * Fix inclusion of saneopts.??.po in po/. Currently, the "" header is
    defined twice.