kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			200 dpi support for 600 CU. Some internal reorganizations.
New version: 1.0-5. Henning Meier-Geinitz <henning@meier-geinitz.de>DEVEL_2_0_BRANCH-1
							rodzic
							
								
									7fd03ff509
								
							
						
					
					
						commit
						6a5048f486
					
				| 
						 | 
				
			
			@ -45,7 +45,7 @@
 | 
			
		|||
 | 
			
		||||
   This file implements a SANE backend for Mustek 1200UB flatbed scanners.  */
 | 
			
		||||
 | 
			
		||||
#define BUILD 4
 | 
			
		||||
#define BUILD 5
 | 
			
		||||
 | 
			
		||||
#include "../include/sane/config.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -100,8 +100,8 @@ static const SANE_Int resbit_list[] =
 | 
			
		|||
 | 
			
		||||
static const SANE_Int resbit300_list[] =
 | 
			
		||||
{
 | 
			
		||||
  4,
 | 
			
		||||
  50, 100, 150, 300
 | 
			
		||||
  5,
 | 
			
		||||
  50, 100, 150, 200, 300
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* NOTE: This is used for Brightness, Contrast, Threshold, AutoBackAdj
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
:backend "mustek_usb"
 | 
			
		||||
:status :alpha
 | 
			
		||||
:version "1.0-4"
 | 
			
		||||
:version "1.0-5"
 | 
			
		||||
:manpage "sane-mustek_usb"
 | 
			
		||||
:url "http://www.meier-geinitz.de/sane/"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,13 +8,15 @@
 | 
			
		|||
 | 
			
		||||
:mfg "Mustek"
 | 
			
		||||
:url "http://www.mustek.com"
 | 
			
		||||
:model "1200 UB"
 | 
			
		||||
:model "600 CU"
 | 
			
		||||
:interface "USB"
 | 
			
		||||
:comment "Only 1200 UB is supported, NOT UB Plus!"
 | 
			
		||||
:model "1200 CU"
 | 
			
		||||
:interface "USB"
 | 
			
		||||
:model "1200 CU Plus"
 | 
			
		||||
:interface "USB"
 | 
			
		||||
:model "1200 UB"
 | 
			
		||||
:interface "USB"
 | 
			
		||||
:comment "Only 1200 UB is supported, NOT UB Plus!"
 | 
			
		||||
 | 
			
		||||
:mfg "Trust"
 | 
			
		||||
:url "http://www.trust-site.com"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -959,7 +959,7 @@ usb_high_scan_back_home (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_low_open (dev->chip, dev->device_name));
 | 
			
		||||
 | 
			
		||||
  RIE(usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_home (dev->chip));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_home (dev->chip));
 | 
			
		||||
  RIE(usb_low_close (dev->chip));
 | 
			
		||||
 | 
			
		||||
  DBG (5, "usb_high_scan_back_home: exit\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1024,7 +1024,7 @@ usb_high_scan_reset (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_low_open (dev->chip, dev->device_name));
 | 
			
		||||
  RIE(usb_high_scan_init_asic (dev, dev->chip->sensor));
 | 
			
		||||
  RIE(usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_home (dev->chip));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_home (dev->chip));
 | 
			
		||||
  RIE(usb_low_close (dev->chip));
 | 
			
		||||
  RIE(usb_high_scan_set_threshold (dev, dev->init_threshold));
 | 
			
		||||
  RIE(usb_high_scan_embed_gamma (dev, NULL));
 | 
			
		||||
| 
						 | 
				
			
			@ -1049,7 +1049,7 @@ usb_high_scan_wait_carriage_home (Mustek_Usb_Device * dev)
 | 
			
		|||
  if (status != SANE_STATUS_GOOD)
 | 
			
		||||
    {
 | 
			
		||||
      RIE(usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
 | 
			
		||||
      RIE(usb_mid_motor1200_prepare_home (dev->chip));
 | 
			
		||||
      RIE(usb_mid_motor_prepare_home (dev->chip));
 | 
			
		||||
      do
 | 
			
		||||
	{
 | 
			
		||||
	  status = usb_low_get_home_sensor (dev->chip);
 | 
			
		||||
| 
						 | 
				
			
			@ -1080,116 +1080,37 @@ usb_high_scan_hardware_calibration (Mustek_Usb_Device * dev)
 | 
			
		|||
      switch (dev->scan_mode)
 | 
			
		||||
	{
 | 
			
		||||
	case RGB24EXT:
 | 
			
		||||
	  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
	  if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    {
 | 
			
		||||
	      if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
 | 
			
		||||
		  dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
 | 
			
		||||
		  dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
 | 
			
		||||
		  RIE(usb_high_scan_adjust_rgb_600_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      else
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->red_rgb_300_pga = dev->init_red_rgb_300_pga;
 | 
			
		||||
		  dev->green_rgb_300_pga = dev->init_green_rgb_300_pga;
 | 
			
		||||
		  dev->blue_rgb_300_pga = dev->init_blue_rgb_300_pga;
 | 
			
		||||
		  RIE(usb_high_scan_adjust_rgb_300_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	    }
 | 
			
		||||
	  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
	    {
 | 
			
		||||
	      if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
 | 
			
		||||
		  dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
 | 
			
		||||
		  dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
 | 
			
		||||
		  RIE(usb_high_scan_adjust_rgb_600_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      else
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->red_rgb_300_pga = dev->init_red_rgb_300_pga;
 | 
			
		||||
		  dev->green_rgb_300_pga = dev->init_green_rgb_300_pga;
 | 
			
		||||
		  dev->blue_rgb_300_pga = dev->init_blue_rgb_300_pga;
 | 
			
		||||
		  RIE(usb_high_scan_adjust_rgb_300_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      dev->expose_time = dev->init_expose_time;
 | 
			
		||||
	      dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
 | 
			
		||||
	      dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
 | 
			
		||||
	      dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
 | 
			
		||||
	      RIE(usb_high_scan_adjust_rgb_600_power_delay (dev));
 | 
			
		||||
	    }
 | 
			
		||||
	  else
 | 
			
		||||
	    {
 | 
			
		||||
	      if (usb_mid_c600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
 | 
			
		||||
		  dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
 | 
			
		||||
		  dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
 | 
			
		||||
		  RIE(usb_high_scan_adjust_rgb_600_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      else
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->red_rgb_300_pga = dev->init_red_rgb_300_pga;
 | 
			
		||||
		  dev->green_rgb_300_pga = dev->init_green_rgb_300_pga;
 | 
			
		||||
		  dev->blue_rgb_300_pga = dev->init_blue_rgb_300_pga;
 | 
			
		||||
		  RIE(usb_high_scan_adjust_rgb_300_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      dev->expose_time = dev->init_expose_time;
 | 
			
		||||
	      dev->red_rgb_300_pga = dev->init_red_rgb_300_pga;
 | 
			
		||||
	      dev->green_rgb_300_pga = dev->init_green_rgb_300_pga;
 | 
			
		||||
	      dev->blue_rgb_300_pga = dev->init_blue_rgb_300_pga;
 | 
			
		||||
	      RIE(usb_high_scan_adjust_rgb_300_power_delay (dev));
 | 
			
		||||
	    }
 | 
			
		||||
	  break;
 | 
			
		||||
	case GRAY8EXT:
 | 
			
		||||
	  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
	  if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    {
 | 
			
		||||
	      if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->mono_600_pga = dev->init_mono_600_pga;
 | 
			
		||||
		  RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
		  RIE(usb_high_scan_adjust_mono_600_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      else
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->mono_300_pga = dev->init_mono_300_pga;
 | 
			
		||||
		  RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
		  RIE(usb_high_scan_adjust_mono_300_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	    }
 | 
			
		||||
	  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
	    {
 | 
			
		||||
	      if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->mono_600_pga = dev->init_mono_600_pga;
 | 
			
		||||
		  RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
		  RIE(usb_high_scan_adjust_mono_600_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      else
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->mono_300_pga = dev->init_mono_300_pga;
 | 
			
		||||
		  RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
		  RIE(usb_high_scan_adjust_mono_300_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      dev->expose_time = dev->init_expose_time;
 | 
			
		||||
	      dev->mono_600_pga = dev->init_mono_600_pga;
 | 
			
		||||
	      RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
	      RIE(usb_high_scan_adjust_mono_600_power_delay (dev));
 | 
			
		||||
	    }
 | 
			
		||||
	  else
 | 
			
		||||
	    {
 | 
			
		||||
	      if (usb_mid_c600_is600_mode
 | 
			
		||||
		  (dev->chip, dev->x_dpi))
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->mono_600_pga = dev->init_mono_600_pga;
 | 
			
		||||
		  RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
		  RIE(usb_high_scan_adjust_mono_600_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      else
 | 
			
		||||
		{
 | 
			
		||||
		  dev->expose_time = dev->init_expose_time;
 | 
			
		||||
		  dev->mono_300_pga = dev->init_mono_300_pga;
 | 
			
		||||
		  RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
		  RIE(usb_high_scan_adjust_mono_300_power_delay (dev));
 | 
			
		||||
		}
 | 
			
		||||
	      dev->expose_time = dev->init_expose_time;
 | 
			
		||||
	      dev->mono_300_pga = dev->init_mono_300_pga;
 | 
			
		||||
	      RIE(usb_high_scan_evaluate_pixel_rate (dev));
 | 
			
		||||
	      RIE(usb_high_scan_adjust_mono_300_power_delay (dev));
 | 
			
		||||
	    }
 | 
			
		||||
	  break;
 | 
			
		||||
	default:
 | 
			
		||||
| 
						 | 
				
			
			@ -1234,58 +1155,20 @@ usb_high_scan_line_calibration (Mustek_Usb_Device * dev)
 | 
			
		|||
    {
 | 
			
		||||
    case RGB24EXT:
 | 
			
		||||
      RIE(usb_high_scan_prepare_rgb_24 (dev));
 | 
			
		||||
      if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300600_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
	  RIE( usb_mid_c600_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
	RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
      RIE(usb_mid_sensor_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
      RIE(usb_high_scan_calibration_rgb_24 (dev));
 | 
			
		||||
      break;
 | 
			
		||||
    case GRAY8EXT:
 | 
			
		||||
      RIE(usb_high_scan_prepare_mono_8 (dev));
 | 
			
		||||
      if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300600_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c600_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
	RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
      RIE(usb_mid_sensor_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
      RIE(usb_high_scan_calibration_mono_8 (dev));
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
| 
						 | 
				
			
			@ -1310,67 +1193,23 @@ usb_high_scan_prepare_scan (Mustek_Usb_Device * dev)
 | 
			
		|||
      dev->get_line = &usb_high_scan_Get_rgb_24_bit_line;
 | 
			
		||||
      dev->backtrack = &usb_high_scan_backtrack_rgb_24;
 | 
			
		||||
 | 
			
		||||
      if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300600_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c600_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      if (dev->chip->scanner_type == MT_600CU)
 | 
			
		||||
	RIE(usb_mid_motor600_prepare_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
      else
 | 
			
		||||
	RIE(usb_mid_motor1200_prepare_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
	RIE(usb_high_scan_prepare_rgb_signal_300_dpi (dev));
 | 
			
		||||
      RIE(usb_mid_sensor_prepare_rgb (dev->chip, dev->x_dpi));
 | 
			
		||||
      RIE(usb_mid_motor_prepare_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
      break;
 | 
			
		||||
    case GRAY8EXT:
 | 
			
		||||
      RIE(usb_high_scan_prepare_mono_8 (dev));
 | 
			
		||||
      dev->get_line = &usb_high_scan_Get_mono_8_bit_line;
 | 
			
		||||
      dev->backtrack = &usb_high_scan_backtrack_mono_8;
 | 
			
		||||
      if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300600_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c300600_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_c600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_600_dpi (dev));
 | 
			
		||||
	  else
 | 
			
		||||
	    RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
	  RIE(usb_mid_c600_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
	}
 | 
			
		||||
      if (dev->chip->scanner_type == MT_600CU)
 | 
			
		||||
	RIE(usb_mid_motor600_prepare_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
      else
 | 
			
		||||
	RIE(usb_mid_motor1200_prepare_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
	RIE(usb_high_scan_prepare_mono_signal_300_dpi (dev));
 | 
			
		||||
      RIE(usb_mid_sensor_prepare_mono (dev->chip, dev->x_dpi));
 | 
			
		||||
      RIE(usb_mid_motor_prepare_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (5, "usb_high_scan_prepare_scan: unmatched mode\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -1390,23 +1229,41 @@ usb_high_scan_suggest_parameters (Mustek_Usb_Device * dev,
 | 
			
		|||
  DBG (5, "usb_high_scan_suggest_parameters: start\n");
 | 
			
		||||
 | 
			
		||||
  /* Looking up Optical Y Resolution */
 | 
			
		||||
  for (i = 0; usb_mid_motor1200_optical_dpi[i] != 0; i++)
 | 
			
		||||
  if (dev->chip->motor == MT_600)
 | 
			
		||||
    {
 | 
			
		||||
      if (usb_mid_motor1200_optical_dpi[i] <= target->dpi)
 | 
			
		||||
      for (i = 0; usb_mid_motor600_optical_dpi[i] != 0; i++)
 | 
			
		||||
	{
 | 
			
		||||
	  suggest->y_dpi = usb_mid_motor1200_optical_dpi[i];
 | 
			
		||||
	  break;
 | 
			
		||||
	  if (usb_mid_motor600_optical_dpi[i] <= target->dpi)
 | 
			
		||||
	    {
 | 
			
		||||
	      suggest->y_dpi = usb_mid_motor600_optical_dpi[i];
 | 
			
		||||
	      break;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
      if (usb_mid_motor600_optical_dpi[i] == 0)
 | 
			
		||||
	{
 | 
			
		||||
	  i--;
 | 
			
		||||
	  suggest->y_dpi = usb_mid_motor600_optical_dpi[i];
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
  if (usb_mid_motor1200_optical_dpi[i] == 0)
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      i--;
 | 
			
		||||
      suggest->y_dpi = usb_mid_motor1200_optical_dpi[i];
 | 
			
		||||
      for (i = 0; usb_mid_motor1200_optical_dpi[i] != 0; i++)
 | 
			
		||||
	{
 | 
			
		||||
	  if (usb_mid_motor1200_optical_dpi[i] <= target->dpi)
 | 
			
		||||
	    {
 | 
			
		||||
	      suggest->y_dpi = usb_mid_motor1200_optical_dpi[i];
 | 
			
		||||
	      break;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
      if (usb_mid_motor1200_optical_dpi[i] == 0)
 | 
			
		||||
	{
 | 
			
		||||
	  i--;
 | 
			
		||||
	  suggest->y_dpi = usb_mid_motor1200_optical_dpi[i];
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  /* Looking up Optical X Resolution */
 | 
			
		||||
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    {
 | 
			
		||||
      for (i = 0; usb_mid_c300600_optical_x_dpi[i] != 0; i++)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -1422,7 +1279,7 @@ usb_high_scan_suggest_parameters (Mustek_Usb_Device * dev,
 | 
			
		|||
	  suggest->x_dpi = usb_mid_c300600_optical_x_dpi[i];
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    {
 | 
			
		||||
      for (i = 0; usb_mid_c300_optical_x_dpi[i] != 0; i++)
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -1518,11 +1375,20 @@ usb_high_scan_detect_sensor (Mustek_Usb_Device *dev)
 | 
			
		|||
 | 
			
		||||
  DBG (5, "usb_high_scan_detect_sensor: start\n");
 | 
			
		||||
 | 
			
		||||
  if (dev->is_cis_detected)
 | 
			
		||||
    {
 | 
			
		||||
      DBG (5, "usb_high_scan_detect_sensor: sensor already detected\n");
 | 
			
		||||
      return SANE_STATUS_GOOD;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (dev->chip->scanner_type == MT_600CU)
 | 
			
		||||
    {
 | 
			
		||||
      DBG (5, "usb_high_scan_detect_sensor: sensor looks like Canon "
 | 
			
		||||
	   "300 dpi\n");
 | 
			
		||||
      dev->chip->sensor = SR_CANON300;
 | 
			
		||||
      dev->chip->sensor = ST_CANON300;
 | 
			
		||||
      DBG (5, "usb_high_scan_detect_sensor: motor looks like 600 dpi\n");
 | 
			
		||||
      dev->chip->motor = MT_600;
 | 
			
		||||
      
 | 
			
		||||
      return SANE_STATUS_GOOD;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1530,12 +1396,6 @@ usb_high_scan_detect_sensor (Mustek_Usb_Device *dev)
 | 
			
		|||
  l_temp = 0;
 | 
			
		||||
  r_temp = 0;
 | 
			
		||||
 | 
			
		||||
  if (dev->is_cis_detected)
 | 
			
		||||
    {
 | 
			
		||||
      DBG (5, "usb_high_scan_detect_sensor: sensor already detected\n");
 | 
			
		||||
      return SANE_STATUS_GOOD;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  buffer = (SANE_Byte *) malloc (dev->init_bytes_per_strip);
 | 
			
		||||
 | 
			
		||||
  if (!buffer)
 | 
			
		||||
| 
						 | 
				
			
			@ -1551,7 +1411,7 @@ usb_high_scan_detect_sensor (Mustek_Usb_Device *dev)
 | 
			
		|||
  RIE(usb_low_open (dev->chip, dev->device_name));
 | 
			
		||||
 | 
			
		||||
  dev->is_opened = SANE_TRUE;
 | 
			
		||||
  RIE(usb_high_scan_init_asic (dev, SR_CANON600));
 | 
			
		||||
  RIE(usb_high_scan_init_asic (dev, ST_CANON600));
 | 
			
		||||
  RIE(usb_low_turn_peripheral_power (dev->chip, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_enable_motor (dev->chip, SANE_TRUE));	/* Enable Motor */
 | 
			
		||||
  RIE(usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
 | 
			
		||||
| 
						 | 
				
			
			@ -1583,7 +1443,7 @@ usb_high_scan_detect_sensor (Mustek_Usb_Device *dev)
 | 
			
		|||
       l_temp, r_temp);
 | 
			
		||||
  if (r_temp > 50)
 | 
			
		||||
    {
 | 
			
		||||
      dev->chip->sensor = SR_CANON600;
 | 
			
		||||
      dev->chip->sensor = ST_CANON600;
 | 
			
		||||
      DBG (5, "usb_high_scan_detect_sensor: sensor looks like Canon 600 "
 | 
			
		||||
	   "dpi\n");
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1591,8 +1451,11 @@ usb_high_scan_detect_sensor (Mustek_Usb_Device *dev)
 | 
			
		|||
    {
 | 
			
		||||
      DBG (5, "usb_high_scan_detect_sensor: sensor looks like Canon "
 | 
			
		||||
	   "300/600 dpi\n");
 | 
			
		||||
      dev->chip->sensor = SR_CANON300600;
 | 
			
		||||
      dev->chip->sensor = ST_CANON300600;
 | 
			
		||||
    }
 | 
			
		||||
  DBG (5, "usb_high_scan_detect_sensor: motor looks like 1200 dpi\n");
 | 
			
		||||
  dev->chip->motor = MT_1200;
 | 
			
		||||
 | 
			
		||||
  /* Release Resource */
 | 
			
		||||
  usb_low_close (dev->chip);
 | 
			
		||||
  free (buffer);
 | 
			
		||||
| 
						 | 
				
			
			@ -1658,68 +1521,17 @@ usb_high_scan_setup_scan (Mustek_Usb_Device * dev, Colormode color_mode,
 | 
			
		|||
      break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
    {
 | 
			
		||||
      if (usb_mid_c300600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	{
 | 
			
		||||
	  left_bound =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (x) * 600L) / (SANE_Word) (dev->x_dpi)) 
 | 
			
		||||
	    + dev->init_skips_per_row_600;	/* in 600dpi */
 | 
			
		||||
	  dev->skips_per_row =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (left_bound % 32) 
 | 
			
		||||
			  * (SANE_Word) (dev->x_dpi) + 300L) / 600L);
 | 
			
		||||
	}
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  left_bound =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (x) * 300L) / (SANE_Word) (dev->x_dpi)) +
 | 
			
		||||
	    dev->init_skips_per_row_300;	/* in 300dpi */
 | 
			
		||||
	  dev->skips_per_row =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (left_bound % 32) 
 | 
			
		||||
			  * (SANE_Word) (dev->x_dpi) +  150L) / 300L);
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
    {
 | 
			
		||||
      if (usb_mid_c300_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	{
 | 
			
		||||
	  left_bound =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (x) * 600L) / (SANE_Word) (dev->x_dpi)) 
 | 
			
		||||
	    + dev->init_skips_per_row_600;	/* in 600dpi */
 | 
			
		||||
	  dev->skips_per_row =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (left_bound % 32) 
 | 
			
		||||
			  * (SANE_Word) (dev->x_dpi) + 300L) / 600L);
 | 
			
		||||
	}
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  left_bound =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (x) * 300L) / (SANE_Word) (dev->x_dpi)) +
 | 
			
		||||
	    dev->init_skips_per_row_300;	/* in 300dpi */
 | 
			
		||||
	  dev->skips_per_row =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (left_bound % 32) 
 | 
			
		||||
			  * (SANE_Word) (dev->x_dpi) +  150L) / 300L);
 | 
			
		||||
	}
 | 
			
		||||
      /* in 600dpi */
 | 
			
		||||
      left_bound = (x * 600 / dev->x_dpi) + dev->init_skips_per_row_600;
 | 
			
		||||
      dev->skips_per_row = (((left_bound % 32) * dev->x_dpi + 300) / 600);
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      if (usb_mid_c600_is600_mode (dev->chip, dev->x_dpi))
 | 
			
		||||
	{
 | 
			
		||||
	  left_bound =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (x) * 600L) / (SANE_Word) (dev->x_dpi))
 | 
			
		||||
	    + dev->init_skips_per_row_600;	/* in 600dpi */
 | 
			
		||||
	  dev->skips_per_row =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) (left_bound % 32) 
 | 
			
		||||
			  * (SANE_Word) (dev->x_dpi) + 300L) / 600L);
 | 
			
		||||
	}
 | 
			
		||||
      else
 | 
			
		||||
	{
 | 
			
		||||
	  left_bound = 
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) x) * 300L / (SANE_Word) dev->x_dpi) +
 | 
			
		||||
	    dev->init_skips_per_row_300;	/* in 300dpi */
 | 
			
		||||
	  dev->skips_per_row =
 | 
			
		||||
	    (SANE_Word) (((SANE_Word) left_bound % 32 
 | 
			
		||||
			  * ((SANE_Word) dev->x_dpi) + 150L) / 300L);
 | 
			
		||||
	}
 | 
			
		||||
      /* in 300dpi */
 | 
			
		||||
      left_bound = (x * 300 / dev->x_dpi) + dev->init_skips_per_row_300;
 | 
			
		||||
      dev->skips_per_row = (((left_bound % 32) * dev->x_dpi + 150) / 300);
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
  dev->dummy = (left_bound / 32) * 32;
 | 
			
		||||
| 
						 | 
				
			
			@ -1904,12 +1716,13 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
 | 
			
		|||
  SANE_Byte motor = 0;
 | 
			
		||||
  SANE_Bool fix_pattern = SANE_FALSE;
 | 
			
		||||
  SANE_Byte ad_timing = 0;
 | 
			
		||||
  Banksize bank_size;
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (5, "usb_high_scan_init_asic: start\n");
 | 
			
		||||
  switch (sensor)
 | 
			
		||||
    {
 | 
			
		||||
    case SR_TOSHIBA600:
 | 
			
		||||
    case ST_TOSHIBA600:
 | 
			
		||||
      ccd_dpi = 32;
 | 
			
		||||
      select = 240;
 | 
			
		||||
      adjust = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1917,9 +1730,10 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
 | 
			
		|||
      motor = 0;
 | 
			
		||||
      fix_pattern = SANE_FALSE;
 | 
			
		||||
      ad_timing = 0;
 | 
			
		||||
      bank_size = BS_16K;
 | 
			
		||||
      DBG (5, "usb_high_scan_init_asic: sensor is set to TOSHIBA600\n");
 | 
			
		||||
      break;
 | 
			
		||||
    case SR_CANON300:
 | 
			
		||||
    case ST_CANON300:
 | 
			
		||||
      ccd_dpi = 232;
 | 
			
		||||
      select = 232;
 | 
			
		||||
      adjust = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1927,9 +1741,10 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
 | 
			
		|||
      motor = 0;
 | 
			
		||||
      fix_pattern = SANE_FALSE;
 | 
			
		||||
      ad_timing = 1;
 | 
			
		||||
      bank_size = BS_4K;
 | 
			
		||||
      DBG (5, "usb_high_scan_init_asic: sensor is set to CANON300\n");
 | 
			
		||||
      break;
 | 
			
		||||
    case SR_CANON300600:
 | 
			
		||||
    case ST_CANON300600:
 | 
			
		||||
      ccd_dpi = 232;
 | 
			
		||||
      select = 232;
 | 
			
		||||
      adjust = 64;
 | 
			
		||||
| 
						 | 
				
			
			@ -1937,9 +1752,10 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
 | 
			
		|||
      motor = 0;
 | 
			
		||||
      fix_pattern = SANE_FALSE;
 | 
			
		||||
      ad_timing = 1;
 | 
			
		||||
      bank_size = BS_16K;
 | 
			
		||||
      DBG (5, "usb_high_scan_init_asic: sensor is set to CANON300600\n");
 | 
			
		||||
      break;
 | 
			
		||||
    case SR_CANON600:
 | 
			
		||||
    case ST_CANON600:
 | 
			
		||||
      ccd_dpi = 232;
 | 
			
		||||
      select = 232;
 | 
			
		||||
      adjust = 64;
 | 
			
		||||
| 
						 | 
				
			
			@ -1947,6 +1763,7 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
 | 
			
		|||
      motor = 0;
 | 
			
		||||
      fix_pattern = SANE_FALSE;
 | 
			
		||||
      ad_timing = 1;
 | 
			
		||||
      bank_size = BS_16K;
 | 
			
		||||
      DBG (5, "usb_high_scan_init_asic: sensor is set to CANON600\n");
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
| 
						 | 
				
			
			@ -1957,7 +1774,7 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
 | 
			
		|||
  RIE(usb_low_adjust_timing (dev->chip, adjust));
 | 
			
		||||
  RIE(usb_low_select_timing (dev->chip, select));
 | 
			
		||||
  RIE(usb_low_set_timing (dev->chip, ccd_dpi));
 | 
			
		||||
  RIE(usb_low_set_sram_bank (dev->chip, BS_16K));
 | 
			
		||||
  RIE(usb_low_set_sram_bank (dev->chip, bank_size));
 | 
			
		||||
  RIE(usb_low_set_asic_io_pins (dev->chip, pin));
 | 
			
		||||
  RIE(usb_low_set_rgb_sel_pins (dev->chip, pin));
 | 
			
		||||
  RIE(usb_low_set_motor_signal (dev->chip, motor));
 | 
			
		||||
| 
						 | 
				
			
			@ -2104,10 +1921,10 @@ usb_high_scan_adjust_rgb_600_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_low_set_pixel_depth (dev->chip, PD_8BIT));
 | 
			
		||||
 | 
			
		||||
  /* adjust GreenPD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 600)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
| 
						 | 
				
			
			@ -2119,10 +1936,10 @@ usb_high_scan_adjust_rgb_600_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
       max_power_delay, 0, dev->init_max_power_delay, dev->adjust_length_600));
 | 
			
		||||
 | 
			
		||||
  /* adjust BluePD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_BLUE));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_BLUE));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 600)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
| 
						 | 
				
			
			@ -2134,10 +1951,10 @@ usb_high_scan_adjust_rgb_600_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
       max_power_delay, 0, dev->init_max_power_delay, dev->adjust_length_600));
 | 
			
		||||
 | 
			
		||||
  /* adjust RedPD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_RED));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_RED));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 600)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
| 
						 | 
				
			
			@ -2181,10 +1998,10 @@ usb_high_scan_adjust_mono_600_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_low_set_pixel_depth (dev->chip, PD_8BIT));
 | 
			
		||||
 | 
			
		||||
  /* adjust GreenGrayPD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 600)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 600));
 | 
			
		||||
| 
						 | 
				
			
			@ -2231,11 +2048,11 @@ usb_high_scan_adjust_rgb_300_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_low_set_pixel_depth (dev->chip, PD_8BIT));
 | 
			
		||||
 | 
			
		||||
  /* adjust GreenPD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 300)); /* fixme? */
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 300));
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2247,10 +2064,10 @@ usb_high_scan_adjust_rgb_300_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
     max_power_delay, 0, dev->init_max_power_delay, dev->adjust_length_300));
 | 
			
		||||
 | 
			
		||||
  /* adjust BluePD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_BLUE));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_BLUE));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 300)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
| 
						 | 
				
			
			@ -2262,10 +2079,10 @@ usb_high_scan_adjust_rgb_300_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
     max_power_delay, 0, dev->init_max_power_delay, dev->adjust_length_300));
 | 
			
		||||
 | 
			
		||||
  /* adjust RedPD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_RED));
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_RED));
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 300)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
| 
						 | 
				
			
			@ -2309,11 +2126,11 @@ usb_high_scan_adjust_mono_300_power_delay (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_low_set_pixel_depth (dev->chip, PD_8BIT));
 | 
			
		||||
 | 
			
		||||
  /* adjust GreenGrayPD */
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
 | 
			
		||||
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    RIE(usb_mid_c300600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    RIE(usb_mid_c300_prepare_rgb (dev->chip, 300)); /* fixme */
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_c600_prepare_rgb (dev->chip, 300));
 | 
			
		||||
| 
						 | 
				
			
			@ -2352,7 +2169,7 @@ usb_high_scan_calibration_rgb_24 (Mustek_Usb_Device * dev)
 | 
			
		|||
  SANE_Word lines_left;
 | 
			
		||||
 | 
			
		||||
  DBG (5, "usb_high_scan_calibration_rgb_24: start, dev=%p\n", dev);
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_calibrate_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_calibrate_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
 | 
			
		||||
 | 
			
		||||
  dev->red_calibrator = (Calibrator *) malloc (sizeof (Calibrator));
 | 
			
		||||
| 
						 | 
				
			
			@ -2428,7 +2245,7 @@ usb_high_scan_calibration_rgb_24 (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_high_cal_evaluate_white (dev->red_calibrator,
 | 
			
		||||
				   dev->init_red_factor));
 | 
			
		||||
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_calibrate_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_calibrate_rgb (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_low_enable_motor (dev->chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_turn_lamp_power (dev->chip, SANE_FALSE));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2466,14 +2283,14 @@ usb_high_scan_calibration_rgb_24 (Mustek_Usb_Device * dev)
 | 
			
		|||
    }
 | 
			
		||||
  RIE(usb_low_stop_rowing (dev->chip));
 | 
			
		||||
  RIE(usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
 | 
			
		||||
  /* Caculate average */
 | 
			
		||||
  /* Calculate average */
 | 
			
		||||
  RIE(usb_high_cal_evaluate_dark (dev->green_calibrator,
 | 
			
		||||
				  dev->init_green_black_factor));
 | 
			
		||||
  RIE(usb_high_cal_evaluate_dark (dev->blue_calibrator,
 | 
			
		||||
				  dev->init_blue_black_factor));
 | 
			
		||||
  RIE(usb_high_cal_evaluate_dark (dev->red_calibrator,
 | 
			
		||||
				  dev->init_red_black_factor));
 | 
			
		||||
  /* Caculate Mapping */
 | 
			
		||||
  /* Calculate Mapping */
 | 
			
		||||
  RIE(usb_high_cal_evaluate_calibrator (dev->green_calibrator));
 | 
			
		||||
  RIE(usb_high_cal_evaluate_calibrator (dev->blue_calibrator));
 | 
			
		||||
  RIE(usb_high_cal_evaluate_calibrator (dev->red_calibrator));
 | 
			
		||||
| 
						 | 
				
			
			@ -2491,7 +2308,7 @@ usb_high_scan_calibration_mono_8 (Mustek_Usb_Device * dev)
 | 
			
		|||
  SANE_Word lines_left;
 | 
			
		||||
  
 | 
			
		||||
  DBG (5, "usb_high_scan_calibration_mono_8: start\n");
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_calibrate_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_calibrate_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
 | 
			
		||||
 | 
			
		||||
  dev->mono_calibrator = (Calibrator *) malloc (sizeof (Calibrator));
 | 
			
		||||
| 
						 | 
				
			
			@ -2521,7 +2338,7 @@ usb_high_scan_calibration_mono_8 (Mustek_Usb_Device * dev)
 | 
			
		|||
  RIE(usb_high_cal_evaluate_white (dev->mono_calibrator, 
 | 
			
		||||
				   dev->init_gray_factor));
 | 
			
		||||
  
 | 
			
		||||
  RIE(usb_mid_motor1200_prepare_calibrate_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_calibrate_mono (dev->chip, dev->y_dpi));
 | 
			
		||||
  RIE(usb_low_enable_motor (dev->chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_turn_lamp_power (dev->chip, SANE_FALSE));
 | 
			
		||||
  
 | 
			
		||||
| 
						 | 
				
			
			@ -2558,10 +2375,7 @@ usb_high_scan_step_forward (Mustek_Usb_Device * dev, SANE_Int step_count)
 | 
			
		|||
  /* Initialize */
 | 
			
		||||
  RIE(usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
 | 
			
		||||
  RIE(usb_low_set_motor_direction (dev->chip, SANE_FALSE));
 | 
			
		||||
  if (dev->chip->scanner_type == MT_600CU)
 | 
			
		||||
    RIE(usb_mid_motor600_prepare_step (dev->chip, (SANE_Word) step_count));
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_motor1200_prepare_step (dev->chip, (SANE_Word) step_count));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_step (dev->chip, (SANE_Word) step_count));
 | 
			
		||||
  /* Startup */
 | 
			
		||||
  RIE(usb_low_start_rowing (dev->chip));
 | 
			
		||||
  /* Wait to Stop */
 | 
			
		||||
| 
						 | 
				
			
			@ -2586,10 +2400,7 @@ usb_high_scan_safe_forward (Mustek_Usb_Device * dev, SANE_Int step_count)
 | 
			
		|||
  /* Initialize */
 | 
			
		||||
  RIE(usb_low_set_ccd_width (dev->chip, 5400));
 | 
			
		||||
  RIE(usb_low_set_motor_direction (dev->chip, SANE_FALSE));
 | 
			
		||||
  if (dev->chip->scanner_type == MT_600CU)
 | 
			
		||||
    RIE(usb_mid_motor600_prepare_step (dev->chip, (SANE_Word) step_count));
 | 
			
		||||
  else
 | 
			
		||||
    RIE(usb_mid_motor1200_prepare_step (dev->chip, (SANE_Word) step_count));
 | 
			
		||||
  RIE(usb_mid_motor_prepare_step (dev->chip, (SANE_Word) step_count));
 | 
			
		||||
  /* Startup */
 | 
			
		||||
  RIE(usb_low_start_rowing (dev->chip));
 | 
			
		||||
  /* Wait to Stop */
 | 
			
		||||
| 
						 | 
				
			
			@ -2617,10 +2428,9 @@ usb_high_scan_calculate_max_rgb_600_expose (Mustek_Usb_Device * dev,
 | 
			
		|||
  green_light_up = dev->expose_time - dev->green_rgb_600_power_delay * 64;
 | 
			
		||||
  blue_light_up = dev->expose_time - dev->blue_rgb_600_power_delay * 64;
 | 
			
		||||
  max_light_up = MAX (red_light_up, MAX (green_light_up, blue_light_up));
 | 
			
		||||
  ideal_expose_time = MAX (MAX (5376, max_light_up),
 | 
			
		||||
			   usb_mid_motor1200_rgb_capability (dev->y_dpi));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  ideal_expose_time 
 | 
			
		||||
    = MAX (MAX (5376, max_light_up), 
 | 
			
		||||
	   usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
 | 
			
		||||
  ideal_expose_time = (ideal_expose_time + 63) / 64 * 64;
 | 
			
		||||
  *ideal_red_pd = (SANE_Byte) ((ideal_expose_time - red_light_up) / 64);
 | 
			
		||||
  *ideal_green_pd = (SANE_Byte) ((ideal_expose_time - green_light_up) / 64);
 | 
			
		||||
| 
						 | 
				
			
			@ -2650,8 +2460,8 @@ usb_high_scan_calculate_max_mono_600_expose (Mustek_Usb_Device * dev,
 | 
			
		|||
    transfer_time = 16000;
 | 
			
		||||
  ideal_expose_time 
 | 
			
		||||
    = MAX (MAX (5376, max_light_up),  
 | 
			
		||||
	   MAX (transfer_time, usb_mid_motor1200_mono_capability 
 | 
			
		||||
		(dev->y_dpi)));
 | 
			
		||||
	   MAX (transfer_time, usb_mid_motor_mono_capability 
 | 
			
		||||
		(dev->chip, dev->y_dpi)));
 | 
			
		||||
  ideal_expose_time = (ideal_expose_time + 63) / 64 * 64;
 | 
			
		||||
  *ideal_red_pd = (SANE_Byte) ((ideal_expose_time) / 64);
 | 
			
		||||
  *ideal_green_pd = (SANE_Byte) ((ideal_expose_time - max_light_up) / 64);
 | 
			
		||||
| 
						 | 
				
			
			@ -2678,23 +2488,23 @@ usb_high_scan_calculate_max_rgb_300_expose (Mustek_Usb_Device * dev,
 | 
			
		|||
  blue_light_up = dev->expose_time - dev->blue_rgb_300_power_delay * 64;
 | 
			
		||||
  max_light_up = MAX (red_light_up, MAX (green_light_up, blue_light_up));
 | 
			
		||||
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    {
 | 
			
		||||
      ideal_expose_time =
 | 
			
		||||
	MAX (MAX (2624, max_light_up),
 | 
			
		||||
	     usb_mid_motor1200_rgb_capability (dev->y_dpi));
 | 
			
		||||
	     usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
 | 
			
		||||
    }
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    {
 | 
			
		||||
      ideal_expose_time =
 | 
			
		||||
	MAX (MAX (2624, max_light_up), /* fixme? */
 | 
			
		||||
	     usb_mid_motor1200_rgb_capability (dev->y_dpi));
 | 
			
		||||
	     usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      ideal_expose_time =
 | 
			
		||||
	MAX (MAX (5376, max_light_up),
 | 
			
		||||
	     usb_mid_motor1200_rgb_capability (dev->y_dpi));
 | 
			
		||||
	     usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  ideal_expose_time = (ideal_expose_time + 63) / 64 * 64;
 | 
			
		||||
| 
						 | 
				
			
			@ -2724,26 +2534,26 @@ usb_high_scan_calculate_max_mono_300_expose (Mustek_Usb_Device * dev,
 | 
			
		|||
 | 
			
		||||
  if (transfer_time > 16000)
 | 
			
		||||
    transfer_time = 16000;
 | 
			
		||||
  if (dev->chip->sensor == SR_CANON300600)
 | 
			
		||||
  if (dev->chip->sensor == ST_CANON300600)
 | 
			
		||||
    {
 | 
			
		||||
      ideal_expose_time =
 | 
			
		||||
	MAX (MAX (2688, max_light_up),
 | 
			
		||||
	     MAX (transfer_time,
 | 
			
		||||
		  usb_mid_motor1200_mono_capability (dev->y_dpi)));
 | 
			
		||||
		  usb_mid_motor_mono_capability (dev->chip, dev->y_dpi)));
 | 
			
		||||
    }
 | 
			
		||||
  else if (dev->chip->sensor == SR_CANON300)
 | 
			
		||||
  else if (dev->chip->sensor == ST_CANON300)
 | 
			
		||||
    {
 | 
			
		||||
      ideal_expose_time =
 | 
			
		||||
	MAX (MAX (2688, max_light_up), /* fixme? */
 | 
			
		||||
	     MAX (transfer_time,
 | 
			
		||||
		  usb_mid_motor1200_mono_capability (dev->y_dpi)));
 | 
			
		||||
		  usb_mid_motor_mono_capability (dev->chip, dev->y_dpi)));
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      ideal_expose_time =
 | 
			
		||||
	MAX (MAX (5376, max_light_up),
 | 
			
		||||
	     MAX (transfer_time,
 | 
			
		||||
		  usb_mid_motor1200_mono_capability (dev->y_dpi)));
 | 
			
		||||
		  usb_mid_motor_mono_capability (dev->chip, dev->y_dpi)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  ideal_expose_time = (ideal_expose_time + 63) / 64 * 64;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,7 +149,8 @@ usb_low_init (ma1017 ** chip_address)
 | 
			
		|||
  chip->lines_left = 0x00;
 | 
			
		||||
  for (i = 0; i < 32; i++)
 | 
			
		||||
    chip->is_transfer_table[i] = SANE_FALSE;
 | 
			
		||||
  chip->sensor = SR_CANON600;
 | 
			
		||||
  chip->sensor = ST_CANON600;
 | 
			
		||||
  chip->motor = MT_1200;
 | 
			
		||||
  
 | 
			
		||||
  DBG (7, "usb_low_init: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			@ -2486,7 +2487,7 @@ usb_low_get_row_resample (ma1017 * chip, SANE_Byte * data,
 | 
			
		|||
    {
 | 
			
		||||
      RIE(usb_low_read_rows (chip, resample_buffer, chip->byte_width));
 | 
			
		||||
 | 
			
		||||
      if ((chip->sensor == SR_CANON600) && (chip->pixel_depth == 0x20))
 | 
			
		||||
      if ((chip->sensor == ST_CANON600) && (chip->pixel_depth == 0x20))
 | 
			
		||||
	{
 | 
			
		||||
	  pixel_temp = (SANE_Word *) malloc (6 * 1024 * sizeof (SANE_Word));
 | 
			
		||||
	  if (!pixel_temp)
 | 
			
		||||
| 
						 | 
				
			
			@ -2533,7 +2534,7 @@ usb_low_get_row_resample (ma1017 * chip, SANE_Byte * data,
 | 
			
		|||
    {
 | 
			
		||||
      RIE(usb_low_read_rows (chip, resample_buffer, chip->byte_width));
 | 
			
		||||
      
 | 
			
		||||
      if ((chip->sensor == SR_CANON600) && (chip->pixel_depth == 0x20))
 | 
			
		||||
      if ((chip->sensor == ST_CANON600) && (chip->pixel_depth == 0x20))
 | 
			
		||||
	{
 | 
			
		||||
	  pixel_temp = (SANE_Word *) malloc (6 * 1024 * sizeof (SANE_Word));
 | 
			
		||||
	  if (!pixel_temp)
 | 
			
		||||
| 
						 | 
				
			
			@ -2682,7 +2683,7 @@ usb_low_write_reg (ma1017 * chip, SANE_Byte reg_no, SANE_Byte data)
 | 
			
		|||
	   "wrote %ul: %s\n", 2, (unsigned long) n, sane_strstatus (status));
 | 
			
		||||
      return SANE_STATUS_IO_ERROR;
 | 
			
		||||
    }
 | 
			
		||||
  DBG (7, "usb_low_write_reg: reg: %02x, value: %02x\n",
 | 
			
		||||
  DBG (7, "usb_low_write_reg: reg: 0x%02x, value: 0x%02x\n",
 | 
			
		||||
       reg_no, data);
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2733,7 +2734,7 @@ usb_low_read_reg (ma1017 * chip, SANE_Byte reg_no, SANE_Byte *data)
 | 
			
		|||
    }
 | 
			
		||||
  if (data)
 | 
			
		||||
    *data = read_byte;
 | 
			
		||||
  DBG (7, "usb_low_read_reg: Reg: %02x, Value: %02x\n",
 | 
			
		||||
  DBG (7, "usb_low_read_reg: Reg: 0x%02x, Value: 0x%02x\n",
 | 
			
		||||
       reg_no, read_byte);
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,16 +80,24 @@ Mustek_Type;
 | 
			
		|||
 | 
			
		||||
typedef enum Sensor_Type
 | 
			
		||||
{
 | 
			
		||||
  SR_NONE=0,
 | 
			
		||||
  SR_INI=1,
 | 
			
		||||
  SR_INI_DARK=2,
 | 
			
		||||
  SR_CANON300=3,
 | 
			
		||||
  SR_CANON600=4,
 | 
			
		||||
  SR_TOSHIBA600=5,
 | 
			
		||||
  SR_CANON300600=6
 | 
			
		||||
  ST_NONE=0,
 | 
			
		||||
  ST_INI=1,
 | 
			
		||||
  ST_INI_DARK=2,
 | 
			
		||||
  ST_CANON300=3,
 | 
			
		||||
  ST_CANON600=4,
 | 
			
		||||
  ST_TOSHIBA600=5,
 | 
			
		||||
  ST_CANON300600=6
 | 
			
		||||
} 
 | 
			
		||||
Sensor_Type;
 | 
			
		||||
 | 
			
		||||
typedef enum Motor_Type
 | 
			
		||||
{
 | 
			
		||||
  MT_NONE=0,
 | 
			
		||||
  MT_600=1,
 | 
			
		||||
  MT_1200=2
 | 
			
		||||
} 
 | 
			
		||||
Motor_Type;
 | 
			
		||||
 | 
			
		||||
struct ma1017;
 | 
			
		||||
 | 
			
		||||
typedef struct ma1017
 | 
			
		||||
| 
						 | 
				
			
			@ -167,6 +175,7 @@ typedef struct ma1017
 | 
			
		|||
  SANE_Word lines_left;
 | 
			
		||||
  SANE_Bool is_transfer_table[32];
 | 
			
		||||
  Sensor_Type sensor;
 | 
			
		||||
  Motor_Type motor;
 | 
			
		||||
  Mustek_Type scanner_type;
 | 
			
		||||
}
 | 
			
		||||
ma1017;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -307,14 +307,6 @@ usb_mid_c600_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		|||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Bool
 | 
			
		||||
usb_mid_c600_is600_mode (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  DBG (6, "usb_mid_c600_is600_mode: start, chip=%p, dpi=%d, TRUE\n",
 | 
			
		||||
       chip, dpi);
 | 
			
		||||
  /* Cannon 600 CIS is 600 dpi mode always. */
 | 
			
		||||
  return SANE_TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ------------------- sensor 300/600 CIS functions ----------------------- */
 | 
			
		||||
| 
						 | 
				
			
			@ -575,61 +567,10 @@ usb_mid_c300600_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		|||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Bool
 | 
			
		||||
usb_mid_c300600_is600_mode (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 300:
 | 
			
		||||
    case 150:
 | 
			
		||||
    case 100:
 | 
			
		||||
    case 50:
 | 
			
		||||
      DBG (6, "usb_mid_c300600_is600_mode: chip=%p, dpi=%d, FALSE\n", 
 | 
			
		||||
	   chip, dpi);
 | 
			
		||||
      return SANE_FALSE;
 | 
			
		||||
    case 600:
 | 
			
		||||
    case 400:
 | 
			
		||||
    case 200:
 | 
			
		||||
      DBG (6, "usb_mid_c300600_is600_mode: chip=%p, dpi=%d, TRUE\n", 
 | 
			
		||||
	   chip, dpi);
 | 
			
		||||
      return SANE_TRUE;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_c300600_is600_mode: unmatched DPI?\n");
 | 
			
		||||
      return SANE_FALSE;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ---------------------- sensor 600 CIS functions ----------------------- */
 | 
			
		||||
/* ---------------------- sensor 300 CIS functions ----------------------- */
 | 
			
		||||
 | 
			
		||||
static SANE_Word usb_mid_c300_optical_x_dpi[] =
 | 
			
		||||
  { 600, 400, 300, 200, 150, 100, 50, 0 };
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_600_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_600_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P6P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_600_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_400_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_400_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P4P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_400_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
  { 300, 200, 150, 100, 50, 0 };
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_300_dpi (ma1017 * chip)
 | 
			
		||||
| 
						 | 
				
			
			@ -637,8 +578,7 @@ usb_mid_c300_prepare_rgb_300_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P6P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P6P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			@ -651,7 +591,6 @@ usb_mid_c300_prepare_rgb_200_dpi (ma1017 * chip)
 | 
			
		|||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_200_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P4P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_200_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			@ -663,8 +602,7 @@ usb_mid_c300_prepare_rgb_150_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_150_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P3P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P3P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_150_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			@ -676,8 +614,7 @@ usb_mid_c300_prepare_rgb_100_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_100_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P2P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P2P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_100_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
| 
						 | 
				
			
			@ -689,48 +626,20 @@ usb_mid_c300_prepare_rgb_50_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_50_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P1P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P1P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_rgb_50_dpi: start\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_600_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_600_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P6P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_600_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_400_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_400_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P4P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_400_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P6P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P6P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -742,8 +651,7 @@ usb_mid_c300_prepare_mono_200_dpi (ma1017 * chip)
 | 
			
		|||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_200_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P4P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_200_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -754,9 +662,8 @@ usb_mid_c300_prepare_mono_150_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_150_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P3P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P3P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_150_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -767,9 +674,8 @@ usb_mid_c300_prepare_mono_100_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_100_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P2P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P2P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_100_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -780,9 +686,8 @@ usb_mid_c300_prepare_mono_50_dpi (ma1017 * chip)
 | 
			
		|||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_50_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_FALSE, SW_P1P6));
 | 
			
		||||
  RIE(usb_low_set_soft_resample (chip, 1));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P1P6));
 | 
			
		||||
  RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
 | 
			
		||||
  DBG(6, "usb_mid_c300_prepare_mono_50_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -808,12 +713,6 @@ usb_mid_c300_prepare_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		|||
    case 300:
 | 
			
		||||
      return usb_mid_c300_prepare_rgb_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 400:
 | 
			
		||||
      return usb_mid_c300_prepare_rgb_400_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 600:
 | 
			
		||||
      return usb_mid_c300_prepare_rgb_600_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_c300_prepare_rgb: unmatched DPI?\n");
 | 
			
		||||
      return SANE_STATUS_INVAL;
 | 
			
		||||
| 
						 | 
				
			
			@ -843,12 +742,6 @@ usb_mid_c300_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		|||
    case 300:
 | 
			
		||||
      return usb_mid_c300_prepare_mono_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 400:
 | 
			
		||||
      return usb_mid_c300_prepare_mono_400_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 600:
 | 
			
		||||
      return usb_mid_c300_prepare_mono_600_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_c300_prepare_mono: unmatched DPI?\n");
 | 
			
		||||
      return SANE_STATUS_INVAL;
 | 
			
		||||
| 
						 | 
				
			
			@ -857,13 +750,76 @@ usb_mid_c300_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		|||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* -------------------------- sensor functions ---------------------------- */
 | 
			
		||||
 | 
			
		||||
SANE_Bool
 | 
			
		||||
usb_mid_c300_is600_mode (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
usb_mid_sensor_is600_mode (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  DBG (6, "usb_mid_c300_is600_mode: chip=%p, dpi=%d, FALSE\n", chip, dpi);
 | 
			
		||||
  if (chip->sensor == ST_CANON300)
 | 
			
		||||
    {
 | 
			
		||||
      DBG (6, "usb_mid_sensor_is600_mode: chip=%p, dpi=%d, FALSE\n",
 | 
			
		||||
	   chip, dpi);
 | 
			
		||||
      return SANE_FALSE;
 | 
			
		||||
    }
 | 
			
		||||
  else if (chip->sensor == ST_CANON600)
 | 
			
		||||
    {
 | 
			
		||||
      DBG (6, "usb_mid_sensor_is600_mode: chip=%p, dpi=%d, TRUE\n",
 | 
			
		||||
	   chip, dpi);
 | 
			
		||||
      return SANE_TRUE;
 | 
			
		||||
    }
 | 
			
		||||
  else 
 | 
			
		||||
    {
 | 
			
		||||
      switch (dpi)
 | 
			
		||||
	{
 | 
			
		||||
	case 300:
 | 
			
		||||
	case 150:
 | 
			
		||||
	case 100:
 | 
			
		||||
	case 50:
 | 
			
		||||
	  DBG (6, "usb_mid_sensor_is600_mode: chip=%p, dpi=%d, FALSE\n", 
 | 
			
		||||
	       chip, dpi);
 | 
			
		||||
	  return SANE_FALSE;
 | 
			
		||||
	case 600:
 | 
			
		||||
	case 400:
 | 
			
		||||
	case 200:
 | 
			
		||||
	  DBG (6, "usb_mid_sensor_is600_mode: chip=%p, dpi=%d, TRUE\n", 
 | 
			
		||||
	       chip, dpi);
 | 
			
		||||
	  return SANE_TRUE;
 | 
			
		||||
	default:
 | 
			
		||||
	  DBG (3, "usb_mid_sensor_is600_mode: unmatched DPI?\n");
 | 
			
		||||
	  return SANE_FALSE;
 | 
			
		||||
	  break;
 | 
			
		||||
	}
 | 
			
		||||
      
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
  return SANE_FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_sensor_prepare_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->sensor == ST_CANON300)
 | 
			
		||||
    return usb_mid_c300_prepare_rgb (chip, dpi);
 | 
			
		||||
  else if (chip->sensor == ST_CANON600)
 | 
			
		||||
    return usb_mid_c600_prepare_rgb (chip, dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_c300600_prepare_rgb (chip, dpi);
 | 
			
		||||
 | 
			
		||||
  return SANE_STATUS_INVAL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_sensor_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->sensor == ST_CANON300)
 | 
			
		||||
    return usb_mid_c300_prepare_mono (chip, dpi);
 | 
			
		||||
  else if (chip->sensor == ST_CANON600)
 | 
			
		||||
    return usb_mid_c600_prepare_mono (chip, dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_c300600_prepare_mono (chip, dpi);
 | 
			
		||||
 | 
			
		||||
  return SANE_STATUS_INVAL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ---------------1200 dpi motor function declarations --------------------- */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1638,6 +1594,169 @@ usb_mid_motor1200_mono_capability (SANE_Word dpi)
 | 
			
		|||
 | 
			
		||||
/* ---------------600 dpi motor function declarations --------------------- */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static SANE_Word usb_mid_motor600_optical_dpi[] =
 | 
			
		||||
{ 600, 300, 200, 150, 120, 100, 75, 60, 50, 0 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_600_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_600_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 4));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_FALSE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_600_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 4));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_FALSE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_200_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_200_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 5, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 5));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_200_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_150_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_150_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 3));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_150_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_100_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_100_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 5, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 5));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_100_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_50_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_50_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_BLUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 3));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_50_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_600_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_600_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 2));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_600_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 2));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_200_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -1645,31 +1764,10 @@ usb_mid_motor600_prepare_mono_200_dpi (ma1017 * chip)
 | 
			
		|||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_200_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 5, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 6, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 7, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 8, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 9, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 10, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 11, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 12, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 13, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 14, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 15, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 16, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 17, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 18, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 19, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 20, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 21, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 22, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 23, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 24, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 24));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 3));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
| 
						 | 
				
			
			@ -1678,35 +1776,171 @@ usb_mid_motor600_prepare_mono_200_dpi (ma1017 * chip)
 | 
			
		|||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
usb_mid_motor600_prepare_mono_150_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_Monorgb: start\n");
 | 
			
		||||
  RIE(usb_low_move_motor_home (chip, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  /* No Motor & Forward */
 | 
			
		||||
  RIE(usb_low_set_motor_direction (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_enable_motor (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_150_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 2));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_150_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_100_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_100_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 3));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_100_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_50_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_50_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 3));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_50_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_half_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_half_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_BLUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_BLUE, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_RED, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 5, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 6, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 6));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_half_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_bi_full_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_bi_full_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 3, CH_BLUE, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 4, CH_RED, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 5, CH_RED, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 6, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 6));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_FALSE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb_bi_full_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_half_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_half_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 2));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_half_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_bi_full_300_dpi (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_bi_full_300_dpi: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, CH_GREEN, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, CH_GREEN, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 2));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_mono_bi_full_300_dpi: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_rgb: start\n");
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 600:
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_600_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 300:
 | 
			
		||||
      return usb_mid_motor1200_prepare_rgb_600_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 200:
 | 
			
		||||
      return usb_mid_motor1200_prepare_rgb_400_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_200_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 150:
 | 
			
		||||
      return usb_mid_motor1200_prepare_rgb_300_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_150_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 100:
 | 
			
		||||
      return usb_mid_motor1200_prepare_rgb_200_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_100_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 50:
 | 
			
		||||
      return usb_mid_motor1200_prepare_rgb_100_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_50_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_motor600_prepare_rgb: unmatched dpi (%d)\n", dpi);
 | 
			
		||||
      DBG (3, "usb_mid_motor600_prepare_rgb: unmatched dpi?\n");
 | 
			
		||||
      return SANE_STATUS_INVAL;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1715,33 +1949,90 @@ usb_mid_motor600_prepare_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		|||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  DBG (3, "usb_mid_motor600_prepare_mono: start\n");
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 600:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_600_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 300:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 200:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_200_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 150:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_150_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 100:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_100_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 50:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_50_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_motor600_prepare_mono_: unmatched dpi?\n");
 | 
			
		||||
      return SANE_STATUS_INVAL;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_calibrate_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (3, "usb_mid_motor600_prepare_mono: start\n");
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_calibrate_rgb: start\n");
 | 
			
		||||
  RIE(usb_low_move_motor_home (chip, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  /* No Motor & Forward */
 | 
			
		||||
  RIE(usb_low_set_motor_direction (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_enable_motor (chip, SANE_TRUE));
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 300:
 | 
			
		||||
      return usb_mid_motor1200_prepare_mono_600_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 600:
 | 
			
		||||
    case 200:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_200_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_half_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 300:
 | 
			
		||||
    case 150:
 | 
			
		||||
      return usb_mid_motor1200_prepare_mono_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 100:
 | 
			
		||||
      return usb_mid_motor1200_prepare_mono_200_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 50:
 | 
			
		||||
      return usb_mid_motor1200_prepare_mono_100_dpi (chip);
 | 
			
		||||
      return usb_mid_motor600_prepare_rgb_bi_full_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_motor600_prepare_mono: unmatched dpi (%d)\n", dpi);
 | 
			
		||||
      DBG (3, "usb_mid_motor600_prepare_calibrate_rgb: unmatched dpi?\n");
 | 
			
		||||
      return SANE_STATUS_INVAL;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_calibrate_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_calibrate_mono: start\n");
 | 
			
		||||
  RIE(usb_low_move_motor_home (chip, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  /* No Motor & Forward */
 | 
			
		||||
  RIE(usb_low_set_motor_direction (chip, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_enable_motor (chip, SANE_TRUE));
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 600:
 | 
			
		||||
    case 200:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_half_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    case 300:
 | 
			
		||||
    case 150:
 | 
			
		||||
    case 100:
 | 
			
		||||
    case 50:
 | 
			
		||||
      return usb_mid_motor600_prepare_mono_bi_full_300_dpi (chip);
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_motor600_prepare_calibrate_mono: unmatched dpi?\n");
 | 
			
		||||
      return SANE_STATUS_INVAL;
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -1755,7 +2046,7 @@ usb_mid_motor600_prepare_step (ma1017 * chip, SANE_Word step_count)
 | 
			
		|||
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_step: start\n");
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  /* Make it in 600dpi */
 | 
			
		||||
  /* Make it in 300dpi */
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE)); /* (IO3) ? High power : Low power */
 | 
			
		||||
  RIE(usb_low_move_motor_home (chip, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  /* No Motor & Forward */
 | 
			
		||||
| 
						 | 
				
			
			@ -1790,6 +2081,163 @@ usb_mid_motor600_prepare_step (ma1017 * chip, SANE_Word step_count)
 | 
			
		|||
  DBG (6, "usb_mid_motor600_prepare_step: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_home (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_home: start\n");
 | 
			
		||||
  RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
 | 
			
		||||
  /* Make it in 600dpi */
 | 
			
		||||
  RIE(usb_low_set_io_3 (chip, SANE_TRUE)); /* (IO3) ? High power : Low power */
 | 
			
		||||
  RIE(usb_low_move_motor_home (chip, SANE_TRUE, SANE_TRUE));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_home: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_adjust (ma1017 * chip, Channel channel)
 | 
			
		||||
{
 | 
			
		||||
  SANE_Status status;
 | 
			
		||||
  
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_adjust: start\n");
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 0, channel, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 1, channel, SANE_FALSE, SANE_TRUE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table (chip, 2, channel, SANE_FALSE, SANE_FALSE));
 | 
			
		||||
  RIE(usb_low_set_cmt_table_length (chip, 2));
 | 
			
		||||
  RIE(usb_low_set_cmt_second_position (chip, 0));
 | 
			
		||||
  RIE(usb_low_set_cmt_loop_count (chip, 0xefff));
 | 
			
		||||
  DBG (6, "usb_mid_motor600_prepare_adjust: exit\n");
 | 
			
		||||
  return SANE_STATUS_GOOD;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SANE_Word
 | 
			
		||||
usb_mid_motor600_rgb_capability (SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  DBG (6, "usb_mid_motor600_rgb_capability: start\n");
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 600:
 | 
			
		||||
    case 300:
 | 
			
		||||
    case 200:
 | 
			
		||||
      return 2600;
 | 
			
		||||
    case 100:
 | 
			
		||||
      return 4500;
 | 
			
		||||
    case 150:
 | 
			
		||||
    case 50:
 | 
			
		||||
      return 9000;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_motor600_rgb_capability: unmatched DPI?\n");
 | 
			
		||||
      return 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SANE_Word
 | 
			
		||||
usb_mid_motor600_mono_capability (SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  DBG (5, "usb_mid_motor600_mono_capability: start\n");
 | 
			
		||||
  switch (dpi)
 | 
			
		||||
    {
 | 
			
		||||
    case 600:
 | 
			
		||||
    case 200:
 | 
			
		||||
      return 2600;
 | 
			
		||||
    case 300:
 | 
			
		||||
    case 100:
 | 
			
		||||
      return 4500;
 | 
			
		||||
    case 150:
 | 
			
		||||
    case 50:
 | 
			
		||||
      return 9000;
 | 
			
		||||
    default:
 | 
			
		||||
      DBG (3, "usb_mid_motor600_mono_capability: unmatched dpi?\n");
 | 
			
		||||
      return 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ------------------ motor function declarations ------------------------ */
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_home (ma1017 * chip)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_home (chip);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_home (chip);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status 
 | 
			
		||||
usb_mid_motor_prepare_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_rgb (chip, dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_rgb (chip, dpi);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_mono (chip, dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_mono (chip, dpi);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_adjust (ma1017 * chip, Channel channel)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_adjust (chip, channel);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_adjust (chip, channel);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_calibrate_rgb (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_calibrate_rgb (chip, dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_calibrate_rgb (chip, dpi);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_calibrate_mono (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_calibrate_mono (chip, dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_calibrate_mono (chip, dpi);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_step (ma1017 * chip, SANE_Word step_count)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_prepare_step (chip, step_count);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_prepare_step (chip, step_count);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Word
 | 
			
		||||
usb_mid_motor_rgb_capability (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_rgb_capability (dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_rgb_capability (dpi);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static SANE_Word
 | 
			
		||||
usb_mid_motor_mono_capability (ma1017 * chip, SANE_Word dpi)
 | 
			
		||||
{
 | 
			
		||||
  if (chip->motor == MT_600)
 | 
			
		||||
    return usb_mid_motor600_mono_capability (dpi);
 | 
			
		||||
  else
 | 
			
		||||
    return usb_mid_motor1200_mono_capability (dpi);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ----------------------------- frontend ------------------------------- */
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,9 +56,6 @@
 | 
			
		|||
 | 
			
		||||
/* ----------------- sensor 600 CIS function declarations ----------------- */
 | 
			
		||||
 | 
			
		||||
static SANE_Bool
 | 
			
		||||
usb_mid_c600_is600_mode (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c600_prepare_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -109,9 +106,6 @@ usb_mid_c600_prepare_mono_50_dpi (ma1017 * chip);
 | 
			
		|||
 | 
			
		||||
/* -------------- sensor 300/600 CIS function declarations ---------------- */
 | 
			
		||||
 | 
			
		||||
static SANE_Bool
 | 
			
		||||
usb_mid_c300600_is600_mode (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300600_prepare_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -162,21 +156,12 @@ usb_mid_c300600_prepare_mono_50_dpi (ma1017 * chip);
 | 
			
		|||
 | 
			
		||||
/* ----------------- sensor 300 CIS function declarations ----------------- */
 | 
			
		||||
 | 
			
		||||
static SANE_Bool
 | 
			
		||||
usb_mid_c300_is600_mode (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_600_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_400_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -192,12 +177,6 @@ usb_mid_c300_prepare_rgb_100_dpi (ma1017 * chip);
 | 
			
		|||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_rgb_50_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_600_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_400_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +192,18 @@ usb_mid_c300_prepare_mono_100_dpi (ma1017 * chip);
 | 
			
		|||
static SANE_Status
 | 
			
		||||
usb_mid_c300_prepare_mono_50_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
/* ---------------------- motor function declarations --------------------- */
 | 
			
		||||
/* --------------------- sensor function declarations -------------------- */
 | 
			
		||||
 | 
			
		||||
SANE_Bool
 | 
			
		||||
usb_mid_sensor_is600_mode (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_sensor_prepare_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_sensor_prepare_mono (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
/* ------------------- motor 1200 function declarations ------------------ */
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor1200_prepare_rgb_1200_dpi (ma1017 * chip);
 | 
			
		||||
| 
						 | 
				
			
			@ -310,18 +300,110 @@ usb_mid_motor1200_mono_capability (SANE_Word dpi);
 | 
			
		|||
 | 
			
		||||
/* ---------------600 dpi motor function declarations --------------------- */
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_600_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_200_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_150_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_100_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_50_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_600_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_200_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_150_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_100_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_50_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_half_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_rgb_bi_full_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_half_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono_bi_full_300_dpi (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status 
 | 
			
		||||
usb_mid_motor600_prepare_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_mono (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
SANE_Status
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_calibrate_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_calibrate_mono (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_step (ma1017 * chip, SANE_Word step_count);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_home (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor600_prepare_adjust (ma1017 * chip, Channel channel);
 | 
			
		||||
 | 
			
		||||
static SANE_Word
 | 
			
		||||
usb_mid_motor600_rgb_capability (SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Word
 | 
			
		||||
usb_mid_motor600_mono_capability (SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
/* ------------------ motor function declarations ------------------------ */
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_home (ma1017 * chip);
 | 
			
		||||
 | 
			
		||||
static SANE_Status 
 | 
			
		||||
usb_mid_motor_prepare_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_mono (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_adjust (ma1017 * chip, Channel channel);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_calibrate_rgb (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_calibrate_mono (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Status
 | 
			
		||||
usb_mid_motor_prepare_step (ma1017 * chip, SANE_Word step_count);
 | 
			
		||||
 | 
			
		||||
static SANE_Word
 | 
			
		||||
usb_mid_motor_rgb_capability (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
static SANE_Word
 | 
			
		||||
usb_mid_motor_mono_capability (ma1017 * chip, SANE_Word dpi);
 | 
			
		||||
 | 
			
		||||
/* --------------------- frontend function declarations ------------------- */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,18 @@
 | 
			
		|||
CHANGES for the SANE Mustek USB backend
 | 
			
		||||
 | 
			
		||||
2001-09-10
 | 
			
		||||
  * Release of version 1.0-5.
 | 
			
		||||
 | 
			
		||||
2001-09-10
 | 
			
		||||
  * mustek_usb_mid: Added functions for 300 dpi sensor.
 | 
			
		||||
  * mustek_usb_mid: Fixed 200 dpi mode.
 | 
			
		||||
  * mustek_usb_mid: added general sensor functions.
 | 
			
		||||
 | 
			
		||||
2001-09-09
 | 
			
		||||
  * mustek_usb_mid: Added functions for 600 dpi motor.
 | 
			
		||||
  * mustek_usb_mid, usb_high: Added functions for selecting the motor
 | 
			
		||||
    functions.
 | 
			
		||||
 | 
			
		||||
2001-09-06
 | 
			
		||||
  * Release of version 1.0-4.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue