Hi All

Working from libsane Ubuntu (Karmic(1.0.20)) I have fixed several problems 
related to the Visioneer 9450 scanner.

Please see my notes below about "avision.c"

Other Notes:

Best Modes:
150, 300 dpi
Grey, Color

Document Feeder works.

Some resolutions are buggy.? Like in the 180 - 299 range.? Hangs the scanner, 
only sometimes.
High resolutions time - out and hang sometimes.? I went up to 600 dpi color and 
it work sometimes.


BEGIN "avision.c"

ln 914
The Visioneer 9450 is in here but either somebody didn't test it or there are 
different version of the chipset or firmware in different hardware production 
runs.
    { NULL, NULL,
      0x04a7, 0x0421,
      "Visioneer", "9450",
      AV_ADF_BGR_ORDER_INVERT /* AJS */
    
},


ln 2019
FUNCTION: Avision_Cmd
Not sure this is helping anything, but it is working anyway.
    /* may I vote for the possibility to use C99 ... */
#define min_usb_size 10
#define max_usb_size 512 * 1024 /* or 0x10000, used by AV Windows driver during 
background raster read, ... ? */ //ajs up max_usb_size to 512

line 3173
FUNCTION Get_Button_Status
Uh yeah.....bad bug for this scanner/firmware/chipset something
static SANE_Status
get_button_status (Avision_Scanner* s)
{
//ajs !!!!!!!!!!!!!!!!!!!!!!!!
return SANE_STATUS_GOOD;
   
ln 4220
FUNCTION: Send_Tune_Scan_Length
uh..bad bug for scanner firmware/chipset you get the idea
static SANE_Status
send_tune_scan_length (Avision_Scanner* s)
{
    return SANE_STATUS_GOOD;
//ajs !!!!!!!!!!!!!!!!!!!!!! 
 
ln 4549
FUNCTION:Set_Calib_Data
Yeah, somebody didn't test this or there are a lot of different 
chipset/firmwares running around labeled as Visioneer 9450.  I keep looking at 
the vertically striped output from color scans and it looked MOSTLY like a 
massive calibration error, not any other gamma/shading whatever whatever.
TO FIX: Visioneer 9450 cannot handle the 3 channel color calibration data in 
one burst. Only if we are doing 1 channel calibration for gray or lineart or 
whatever do we send all the data in one burst.  Otherwise we stream the 
calibration data separately for each color channel.

  memset (&scmd, 0x00, sizeof (scmd));
  scmd.opc = AVISION_SCSI_SEND;
  scmd.datatypecode = send_type;
.......................................................
  out_size = format->pixel_per_line * 2;
 
  /* send data in one command? */
  /* FR: HP5370 reports one-pass, but needs multi (or other format in single) */
  if (format->channels == 1) //ajs ||
//ajs       ( ( (dev->hw->feature_type & AV_ONE_CALIB_CMD) ||
//ajs      ! BIT(format->ability1, 0) ) &&
//ajs     ! (dev->hw->feature_type & AV_MULTI_CALIB_CMD) ) )
    /* one command (most scanners) */
...........................................................
  return SANE_STATUS_GOOD;
}

END "avision.c"



      

Reply via email to