5/29/01

Directories:
NSCSTIU - sources for the LM9831/2/3 USB minidriver nscstiu.dll.
LM983x  - sources for Data Source for LM9831/2/3

Sources build with VC++ 6.0

SOURCE updates:
Version 1.094 of nscstiu.dll
  nscdevice.cpp: Fix bug which caused overwrite of data when outputting
		 a debug message when a USB error occurred.
  nscstiu.inf supports Canon n650u scanner

Version 1.093 of nscstiu.dll
  nscdevice.cpp: Add mutex which is locked while waiting on a RawReadData. 
		 If it is locked more than KICKSTART millisecs (default=250ms),
		 then send an enable/disable remote wakeup command. This 
		 restarts any read which may have been held up by the step counter
		 terminating a scan.
	
Version 1.092 of nscstiu.dll
  nscstiu.inf supports Umax 3400

Version 1.091 of nscstiu.dll
  nscdevice.cpp: Add mutexes to prevent polling when port opened more than once
	         Check register 7 and do remotewakeup enable every 10 seconds
 		 Read register 7 during WHQL test

Version 1.08 of nscstiu.dll
  nscdevice.cpp: Change devicereset to reset USB pipe

Version 1.06 of nscstiu.dll
  nscdevice.cpp: Change mutex object for Win2000


NOTE: Every new version of LM983x has nscscan.rc and twd_prot.c 
updated for version number
Version 2.03 of LM983x
  scan_hardware.cpp:
	Add ini file sections [hdpi x:y] for settings based on the resolution
	Verify writes to register 7 to fix homing
	Add new ini entries to support even/odd sensors, Max_Sensor_Resolution
	and EvenOdd_Line_Separation.
	Add new ini entry Max_IntTimeAdj to control maximum register 19 value
  scan_scan.cpp:
	Pass base (non-interpolated) resolutions to User Interface
	Support even/odd line separation
	Correct step counter operation
	Fix calibration strip width calculation when reg 19 is nonzero
	Return exact number of pixels requested for a line
  scan_scan2bmp.cpp:
	Support even/odd line separation
  scan_scanner.cpp:
	Initialize default scan settings
  twain_scaninterface:
	Pass base resolutions to UI
  ui_scandialog:
	Display base resolutions in menu
	Check ini file error

Version 2.01a of LM983x
  scan_hardware.cpp:
	Properly home before scanning
	Properly pass errors during scanning
  scan_scan.cpp:	
	Properly home before scanning
	Improve gain and offset guesses for coarse calibration
  ui_scandialog.cpp:
	Preview display is corrected for Win 2000

Version 2.00 of LM983x
  Code is now configured as a Data source with a new
  simplified interface between TWAIN,SCAN, and UI modules
  (see Twain_LM983x.h,UI_LM983x.h, and Scan_LM983x.h in the include 
  directory for functional interface). 
  There is a new TWAIN module, and the Scan and UI code is modified 
  to support the new functional interface. Filenames have the module
  name as a prefix. Specific changes to previous source files follow:
  scan_driverusb.cpp:  	
	The USB pipe reset is no longer done here, only in the driver.
  scan_hardware.cpp:  	
	TR is now a multiple of 4*stepsize for standard resolutions.
	Software reset is done when reg 0x18=24 to guarantee operation
	The ini file code is now based on a table structure.
	All files are in windows\twain_32\lm983x.
	Active pixel start is always 0.
  scan_scan.cpp:
	The mode is switched from pixel rate to line rate to limit
	 the use of register 0x19, integration time adjust.
	The code now returns the exact number of vertical and horizontal
	 pixels requested.
	There is a new interface to the TWAIN module.
  scan_scanner.cpp:
	New interface to the TWAIN module.
  UI_scandialog.cpp
	New interface to the TWAIN module.
	Added image and scan size, and progress bar.
	Preview image ratio is now maintained.
	All files are now in windows\twain_32\lm983x.
  UI_gammadlg.cpp:
	All files are now in windows\twain_32\lm983x.
	Code cleanup
	
Version 1.31 of LM983x
  hardware.cpp:   When register 58 written, flush register 2
		  Do software reset only on block write of 
		  registers; set register 0x18=24 first
  scan.cpp:       Fix calculation of MCLK for max and min 
		  integration time
		  Add .1 sec delay in coarse calibration loop
		  Only allow pixel rate when <= 600 hdpi
		  Minimum line rate vdpi is 100
 
Version 1.30 of LM983x
  driverusb.cpp:  Open port in DATA mode
  hardware.cpp:   Add close port routine
  scan.cpp:       Add close port routine
  scanstatemachine.cpp: Close port when scan terminated

Version 1.29 of LM983x
  hardware.cpp:   Add support for LM9833
  scan.cpp:       Add support for LM9833
  driverusb.cpp:  Change USB open to use STI_DEVICE_CREATE_STATUS
		  to allow multiple opens of the port
  nscscandlg.cpp: Determine valid bits/pixel and resolution entries
		  based on .ini file,
		  Display USB device string from the .ini file

Version 1.28 of LM983x
  scan.cpp: In coarse calibration:
            Set black clamping before Optical_Black_Pixel_Start 
            Limit static offset to register range in all cases
            Continue static offset/gain adjustment if lamp settings 
	    are changing 

Version 1.27 of LM983x
  hardware.cpp: Add reset scan counter
  scanstatemachine.cpp: Use reset scan counter for multiple scans

Version 1.26 of LM983x
  hardware.cpp:	15 second CCD lamp warmup when LM9831/2 is reset
		Gamma files are now 12 bits 
		Grayscale CIS scan fixed to do gray scan

  scan.cpp:	Minor change to averaging algorithm for fine calibration
		Grayscale CIS scan fixed to do gray scan

  scan2bmp.cpp:	TWAIN image mode is GrayScale and not Indexed Color


Version 1.25 of LM983x 
  hardware.cpp:	Support for all LM9832 registers in .ini file
		Triple_TR ini entry
		USB_Device,USB_Manufacturer string to .ini file
		Support for LM9830 removed from package
	
  scan.cpp:	Support for all LM9832 registers in .ini file
		Step down PWM of CCD lamp during calibration
		Support for LM9830 removed from package
		Support for 16 bit scan data
  
  scan2bmp.cpp: Support for 16 bit scan data

Version 1.22c
  hardware.cpp:	Set register 3=0 before scan to prevent occasional failure
  scan.cpp:	Fix for LM9830 calibration

Version 1.22a
  scan.cpp:	16 calibration, for both coarse and fine calibration.
		Added black fine calibration.
  hardware.cpp:	Target values in the .ini files are now 16 bit
		Can enable or disable the black fine calibration
 
Version 1.21b
  scan.cpp:	Fixed bug which caused 1.21 to hang during scan
		Fixed bug which caused calibration to fail sometimes

Version 1.21
  hardware.cpp: Added Mirror_Image and Start_of_Calibration to .ini file 
  scan.cpp: 	Added Mirror_Image and Start_of_Calibration 
	
Version 1.19
  scan.cpp:	Fixed 100 dpi scan
		Added some filtering for calibration

Version 1.18
  scan.cpp:	Removed vertical lines caused by calibration

Version 1.17 of LM983x
  scan.cpp:	Fix gray and color bit depth display
  hardware.cpp: Fix gray and color bit depth display

Version 1.16 of LM983x
  scan.cpp:	Fix calibration for CIS
  hardware.cpp: Fix calibration for CIS

Version 1.15 of LM983x
  scan.cpp:	Changes for 1 channel color
		Add static gain ini support   	
  hardware.cpp: Changes for 1 channel color 
		Add ini file changes for Minimum_Static_Gain

Version 1.14 of LM983x
  scan.cpp:   	Improve offset,gain calculation for calibration
		Improve gray scan speed
  hardware.cpp: Improve error message for data transfer error
  driverusb.cpp:Search multiple ports for LM9831	

Version 1.12 of LM983x
  scan.cpp:   	Add PWM dimming lamp control based on integration time
  hardware.cpp:	Add max integration and PWM lamp control to .ini file

Version 1.11 of LM983x
  scan.cpp:   	Use minimum integration time for computing
		clock divider
  hardware.cpp: Add minimum integration time to ini file	

See the readme.txt in the binary install package for more information.

