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
Henning Geinitz 2001-09-10 20:24:14 +00:00
rodzic 7fd03ff509
commit 6a5048f486
8 zmienionych plików z 921 dodań i 556 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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"

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;

Wyświetl plik

@ -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

Wyświetl plik

@ -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 ------------------- */

Wyświetl plik

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