kopia lustrzana https://gitlab.com/sane-project/backends
Fixed problem with 1200UB sensor detection. Started work on 1200 USB.
New version: 1.0-7. Henning Meier-Geinitz <henning@meier-geinitz.de>DEVEL_2_0_BRANCH-1
rodzic
deeea5d96b
commit
07484eae82
|
@ -45,7 +45,7 @@
|
|||
|
||||
This file implements a SANE backend for Mustek 1200UB flatbed scanners. */
|
||||
|
||||
#define BUILD 6
|
||||
#define BUILD 7
|
||||
|
||||
#include "../include/sane/config.h"
|
||||
|
||||
|
@ -495,6 +495,9 @@ attach (SANE_String_Const devname, Mustek_Usb_Device ** devp,
|
|||
case MT_1200CU_PLUS:
|
||||
dev->sane.model = "1200 CU Plus";
|
||||
break;
|
||||
case MT_1200USB:
|
||||
dev->sane.model = "1200 USB";
|
||||
break;
|
||||
case MT_1200UB:
|
||||
dev->sane.model = "1200 UB";
|
||||
break;
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
# Autodetect 1200 UB and Trust Compact Scan USB 19200
|
||||
usb 0x055f 0x0006
|
||||
|
||||
# Autodetect 1200 USB
|
||||
usb 0x055f 0x0003
|
||||
|
||||
# Autodetect 1200 CU
|
||||
usb 0x055f 0x0001
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
:backend "mustek_usb"
|
||||
:status :new
|
||||
:version "1.0-6"
|
||||
:version "1.0-7"
|
||||
:manpage "sane-mustek_usb"
|
||||
:url "http://www.meier-geinitz.de/sane/"
|
||||
|
||||
|
|
|
@ -846,6 +846,7 @@ usb_high_scan_init (Mustek_Usb_Device * dev)
|
|||
dev->mono_calibrator = NULL;
|
||||
|
||||
dev->is_cis_detected = SANE_FALSE;
|
||||
dev->is_sensor_detected = SANE_FALSE;
|
||||
|
||||
RIE(usb_low_init (&dev->chip));
|
||||
|
||||
|
@ -1264,27 +1265,111 @@ usb_high_scan_suggest_parameters (Mustek_Usb_Device * dev, SANE_Word dpi,
|
|||
SANE_Status
|
||||
usb_high_scan_detect_sensor (Mustek_Usb_Device *dev)
|
||||
{
|
||||
if (dev->is_sensor_detected)
|
||||
{
|
||||
DBG (5, "usb_high_scan_detect_sensor: sensor already detected\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
dev->is_sensor_detected = SANE_TRUE;
|
||||
|
||||
switch (dev->chip->scanner_type)
|
||||
{
|
||||
case MT_600CU:
|
||||
dev->chip->sensor = ST_CANON300;
|
||||
dev->chip->motor = MT_600;
|
||||
DBG (5, "usb_high_scan_detect_sensor: sensor=Canon 300 dpi, motor="
|
||||
dev->is_cis_detected = SANE_TRUE;
|
||||
DBG (4, "usb_high_scan_detect_sensor: sensor=Canon 300 dpi, motor="
|
||||
"600 dpi\n");
|
||||
break;
|
||||
case MT_1200USB:
|
||||
dev->chip->sensor = ST_NEC600;
|
||||
dev->chip->motor = MT_1200;
|
||||
DBG (4, "usb_high_scan_detect_sensor: sensor=Canon 600 dpi, motor="
|
||||
"1200 dpi\n");
|
||||
break;
|
||||
case MT_1200UB:
|
||||
dev->chip->sensor = ST_CANON600;
|
||||
dev->chip->motor = MT_1200;
|
||||
DBG (5, "usb_high_scan_detect_sensor: sensor=Canon 600 dpi, motor="
|
||||
"1200 dpi\n");
|
||||
break;
|
||||
case MT_1200CU:
|
||||
case MT_1200CU_PLUS:
|
||||
dev->chip->sensor = ST_CANON300600;
|
||||
dev->chip->motor = MT_1200;
|
||||
DBG (5, "usb_high_scan_detect_sensor: sensor=Canon 300/600 dpi, motor="
|
||||
"1200 dpi\n");
|
||||
break;
|
||||
case MT_1200CU: /* need to check if it's a 300600 or 600 dpi sensor */
|
||||
{
|
||||
SANE_Byte *buffer;
|
||||
static SANE_Word l_temp = 0, r_temp = 0;
|
||||
SANE_Int i;
|
||||
SANE_Status status;
|
||||
SANE_Word lines_left;
|
||||
|
||||
dev->chip->motor = MT_1200;
|
||||
dev->is_cis_detected = SANE_TRUE;
|
||||
|
||||
buffer = NULL;
|
||||
l_temp = 0;
|
||||
r_temp = 0;
|
||||
|
||||
buffer = (SANE_Byte *) malloc (dev->init_bytes_per_strip);
|
||||
|
||||
if (!buffer)
|
||||
return SANE_STATUS_NO_MEM;
|
||||
|
||||
for (i = 0; i < 5400; i++)
|
||||
buffer[i] = 0xaa;
|
||||
|
||||
dev->scan_mode = GRAY8EXT;
|
||||
dev->x_dpi = 600;
|
||||
dev->y_dpi = 1200;
|
||||
dev->width = 5400;
|
||||
RIE(usb_low_open (dev->chip, dev->device_name));
|
||||
|
||||
dev->is_opened = SANE_TRUE;
|
||||
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));
|
||||
RIE(usb_low_invert_image (dev->chip, SANE_FALSE));
|
||||
RIE(usb_low_set_image_dpi (dev->chip, SANE_TRUE, SW_P6P6));
|
||||
dev->bytes_per_strip = dev->adjust_length_600;
|
||||
dev->bytes_per_row = 5400;
|
||||
dev->dummy = 0;
|
||||
|
||||
RIE(usb_high_scan_wait_carriage_home (dev));
|
||||
RIE(usb_high_scan_hardware_calibration (dev));
|
||||
RIE(usb_high_scan_prepare_scan (dev));
|
||||
|
||||
/* Get Data */
|
||||
RIE(usb_low_start_rowing (dev->chip));
|
||||
RIE(usb_low_get_row (dev->chip, buffer, &lines_left));
|
||||
RIE(usb_low_stop_rowing (dev->chip));
|
||||
/* Calculate */
|
||||
for (i = 0; i < 256; i++)
|
||||
l_temp = l_temp + buffer[512 + i];
|
||||
for (i = 0; i < 256; i++)
|
||||
r_temp = r_temp + buffer[3500 + i];
|
||||
|
||||
l_temp = l_temp / 256;
|
||||
r_temp = r_temp / 256;
|
||||
|
||||
/* 300/600 switch CIS or 600 CIS */
|
||||
DBG (5, "usb_high_scan_detect_sensor: l_temp=%d, r_temp=%d\n",
|
||||
l_temp, r_temp);
|
||||
if (r_temp > 50)
|
||||
{
|
||||
dev->chip->sensor = ST_CANON600;
|
||||
DBG (4, "usb_high_scan_detect_sensor: sensor=Canon 600 dpi, motor="
|
||||
"1200 dpi\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
DBG (4, "usb_high_scan_detect_sensor: sensor=Canon 300/600 dpi, "
|
||||
"motor=1200 dpi\n");
|
||||
dev->chip->sensor = ST_CANON300600;
|
||||
}
|
||||
|
||||
/* Release Resource */
|
||||
usb_low_close (dev->chip);
|
||||
dev->is_opened = SANE_FALSE;
|
||||
free (buffer);
|
||||
buffer = NULL;
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
DBG (5, "usb_high_scan_detect_sensor: I don't know this scanner type "
|
||||
"(%d)\n", dev->chip->scanner_type);
|
||||
|
@ -1316,9 +1401,6 @@ usb_high_scan_setup_scan (Mustek_Usb_Device * dev, Colormode color_mode,
|
|||
DBG (5,"usb_high_scan_setup_scan: !is_prepared\n");
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
#if 0
|
||||
RIE(usb_high_scan_detect_sensor (dev));
|
||||
#endif
|
||||
RIE(usb_low_open (dev->chip, dev->device_name));
|
||||
dev->is_opened = SANE_TRUE;
|
||||
|
||||
|
@ -1595,6 +1677,17 @@ usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
|
|||
bank_size = BS_16K;
|
||||
DBG (5, "usb_high_scan_init_asic: sensor is set to CANON600\n");
|
||||
break;
|
||||
case ST_NEC600: /* fixme */
|
||||
ccd_dpi = 32;
|
||||
select = 224;
|
||||
adjust = 112;
|
||||
pin = 18;
|
||||
motor = 0;
|
||||
fix_pattern = SANE_FALSE;
|
||||
ad_timing = 0;
|
||||
bank_size = BS_16K;
|
||||
DBG (5, "usb_high_scan_init_asic: sensor is set to NEC600\n");
|
||||
break;
|
||||
default:
|
||||
DBG (5, "usb_high_scan_init_asic: unknown sensor\n");
|
||||
return SANE_STATUS_INVAL;
|
||||
|
@ -2215,9 +2308,18 @@ 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_motor_rgb_capability (dev->chip, dev->y_dpi));
|
||||
if (dev->chip->sensor == ST_NEC600)
|
||||
{
|
||||
ideal_expose_time
|
||||
= MAX (MAX (5504, max_light_up),
|
||||
usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
|
@ -2245,10 +2347,20 @@ usb_high_scan_calculate_max_mono_600_expose (Mustek_Usb_Device * dev,
|
|||
|
||||
if (transfer_time > 16000)
|
||||
transfer_time = 16000;
|
||||
ideal_expose_time
|
||||
= MAX (MAX (5376, max_light_up),
|
||||
MAX (transfer_time, usb_mid_motor_mono_capability
|
||||
(dev->chip, dev->y_dpi)));
|
||||
if (dev->chip->sensor == ST_NEC600)
|
||||
{
|
||||
ideal_expose_time
|
||||
= MAX (MAX (5504, max_light_up),
|
||||
MAX (transfer_time, 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_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);
|
||||
|
|
|
@ -321,6 +321,7 @@ typedef struct Mustek_Usb_Device
|
|||
|
||||
SANE_Char device_name[256];
|
||||
|
||||
SANE_Bool is_sensor_detected;
|
||||
}
|
||||
Mustek_Usb_Device;
|
||||
|
||||
|
|
|
@ -2762,9 +2762,9 @@ usb_low_identify_scanner (SANE_Int fd, Mustek_Type *scanner_type)
|
|||
case 0x0002:
|
||||
devtype = MT_600CU;
|
||||
break;
|
||||
#if 0
|
||||
#if 0
|
||||
case 0x0003:
|
||||
devtype = MT_1200CU;
|
||||
devtype = MT_1200USB;
|
||||
break;
|
||||
#endif
|
||||
case 0x0006:
|
||||
|
@ -2777,7 +2777,7 @@ usb_low_identify_scanner (SANE_Int fd, Mustek_Type *scanner_type)
|
|||
if (scanner_type)
|
||||
*scanner_type = devtype;
|
||||
DBG (3, "usb_low_identify_scanner: unknown product id: "
|
||||
"%d\n", devproduct);
|
||||
"0x%04x\n", devproduct);
|
||||
return SANE_STATUS_INVAL;
|
||||
break;
|
||||
}
|
||||
|
@ -2786,7 +2786,7 @@ usb_low_identify_scanner (SANE_Int fd, Mustek_Type *scanner_type)
|
|||
{
|
||||
if (scanner_type)
|
||||
*scanner_type = devtype;
|
||||
DBG (3, "usb_low_identify_scanner: unknown vendor id: %d\n",
|
||||
DBG (3, "usb_low_identify_scanner: unknown vendor id: 0x%04d\n",
|
||||
devvendor);
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
typedef enum Mustek_Type
|
||||
{
|
||||
MT_UNKNOWN = 0,
|
||||
MT_1200USB,
|
||||
MT_1200UB,
|
||||
MT_1200CU,
|
||||
MT_1200CU_PLUS,
|
||||
|
@ -86,7 +87,8 @@ typedef enum Sensor_Type
|
|||
ST_CANON300=3,
|
||||
ST_CANON600=4,
|
||||
ST_TOSHIBA600=5,
|
||||
ST_CANON300600=6
|
||||
ST_CANON300600=6,
|
||||
ST_NEC600=7
|
||||
}
|
||||
Sensor_Type;
|
||||
|
||||
|
|
|
@ -48,6 +48,231 @@
|
|||
#include "mustek_usb_mid.h"
|
||||
#include "mustek_usb_low.c"
|
||||
|
||||
/* ------------------ sensor NEC 3797 600 CIS functions ------------------- */
|
||||
|
||||
static SANE_Word usb_mid_n600_optical_x_dpi[] =
|
||||
{ 600, 400, 300, 200, 100, 50, 0 };
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb_600_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_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_n600_prepare_rgb_600_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb_400_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_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_n600_prepare_rgb_400_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb_300_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_300_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P3P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 1));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_300_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb_200_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_200_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P2P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 1));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_200_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb_100_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_100_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P1P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 1));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_100_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb_50_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_50_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P1P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 2));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_FALSE));
|
||||
DBG (6, "usb_mid_n600_prepare_rgb_50_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono_600_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_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_TRUE));
|
||||
DBG (6, "usb_mid_n600_prepare_mono_600_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono_400_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_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_TRUE));
|
||||
DBG (6, "usb_mid_n600_prepare_mono_400_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono_300_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_mono_300_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P3P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 1));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
|
||||
DBG (6, "usb_mid_n600_prepare_mono_300_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono_200_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_mono_200_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P2P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 1));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
|
||||
DBG (6, "usb_mid_n600_prepare_mono_200_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono_100_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_mono_100_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P1P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 1));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
|
||||
DBG (6, "usb_mid_n600_prepare_mono_100_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono_50_dpi (ma1017 * chip)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_n600_prepare_mono_50_dpi: start\n");
|
||||
RIE(usb_low_set_image_dpi (chip, SANE_TRUE, SW_P1P6));
|
||||
RIE(usb_low_set_soft_resample (chip, 2));
|
||||
RIE(usb_low_set_led_light_all (chip, SANE_TRUE));
|
||||
DBG (6, "usb_mid_n600_prepare_mono_50_dpi: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_rgb (ma1017 * chip, SANE_Word dpi)
|
||||
{
|
||||
DBG (6, "usb_mid_n600_prepare_rgb: start\n");
|
||||
switch (dpi)
|
||||
{
|
||||
case 50:
|
||||
return usb_mid_n600_prepare_rgb_50_dpi (chip);
|
||||
break;
|
||||
case 100:
|
||||
return usb_mid_n600_prepare_rgb_100_dpi (chip);
|
||||
break;
|
||||
case 200:
|
||||
return usb_mid_n600_prepare_rgb_200_dpi (chip);
|
||||
break;
|
||||
case 300:
|
||||
return usb_mid_n600_prepare_rgb_300_dpi (chip);
|
||||
break;
|
||||
case 400:
|
||||
return usb_mid_n600_prepare_rgb_400_dpi (chip);
|
||||
break;
|
||||
case 600:
|
||||
return usb_mid_n600_prepare_rgb_600_dpi (chip);
|
||||
break;
|
||||
default:
|
||||
DBG (3, "usb_mid_n600_prepare_rgb: unmatched dpi: %d\n", dpi);
|
||||
return SANE_STATUS_INVAL;
|
||||
break;
|
||||
}
|
||||
DBG (6, "usb_mid_n600_prepare_rgb: exit\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
SANE_Status
|
||||
usb_mid_n600_prepare_mono (ma1017 * chip, SANE_Word dpi)
|
||||
{
|
||||
DBG (6, "usb_mid_n600_prepare_mono: start\n");
|
||||
switch (dpi)
|
||||
{
|
||||
case 50:
|
||||
return usb_mid_n600_prepare_mono_50_dpi (chip);
|
||||
break;
|
||||
case 100:
|
||||
return usb_mid_n600_prepare_mono_100_dpi (chip);
|
||||
break;
|
||||
case 200:
|
||||
return usb_mid_n600_prepare_mono_200_dpi (chip);
|
||||
break;
|
||||
case 300:
|
||||
return usb_mid_n600_prepare_mono_300_dpi (chip);
|
||||
break;
|
||||
case 400:
|
||||
return usb_mid_n600_prepare_mono_400_dpi (chip);
|
||||
break;
|
||||
case 600:
|
||||
return usb_mid_n600_prepare_mono_600_dpi (chip);
|
||||
break;
|
||||
default:
|
||||
DBG (6, "usb_mid_n600_prepare_mono: unmatched dpi: %d\n", dpi);
|
||||
return SANE_STATUS_INVAL;
|
||||
break;
|
||||
}
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
/* ---------------------- sensor 600 CIS functions ----------------------- */
|
||||
|
||||
|
@ -761,7 +986,7 @@ usb_mid_sensor_is600_mode (ma1017 * chip, SANE_Word dpi)
|
|||
chip, dpi);
|
||||
return SANE_FALSE;
|
||||
}
|
||||
else if (chip->sensor == ST_CANON600)
|
||||
else if ((chip->sensor == ST_CANON600) || (chip->sensor == ST_NEC600))
|
||||
{
|
||||
DBG (6, "usb_mid_sensor_is600_mode: chip=%p, dpi=%d, TRUE\n",
|
||||
chip, dpi);
|
||||
|
@ -802,6 +1027,8 @@ usb_mid_sensor_prepare_rgb (ma1017 * chip, SANE_Word dpi)
|
|||
return usb_mid_c300_prepare_rgb (chip, dpi);
|
||||
else if (chip->sensor == ST_CANON600)
|
||||
return usb_mid_c600_prepare_rgb (chip, dpi);
|
||||
else if (chip->sensor == ST_NEC600)
|
||||
return usb_mid_n600_prepare_rgb (chip, dpi);
|
||||
else
|
||||
return usb_mid_c300600_prepare_rgb (chip, dpi);
|
||||
|
||||
|
@ -815,6 +1042,8 @@ usb_mid_sensor_prepare_mono (ma1017 * chip, SANE_Word dpi)
|
|||
return usb_mid_c300_prepare_mono (chip, dpi);
|
||||
else if (chip->sensor == ST_CANON600)
|
||||
return usb_mid_c600_prepare_mono (chip, dpi);
|
||||
else if (chip->sensor == ST_NEC600)
|
||||
return usb_mid_n600_prepare_mono (chip, dpi);
|
||||
else
|
||||
return usb_mid_c300600_prepare_mono (chip, dpi);
|
||||
|
||||
|
@ -838,6 +1067,8 @@ usb_mid_sensor_get_dpi (ma1017 *chip, SANE_Word wanted_dpi, SANE_Word *dpi)
|
|||
dpi_list = usb_mid_c300600_optical_x_dpi;
|
||||
else if (chip->sensor == ST_CANON600)
|
||||
dpi_list = usb_mid_c600_optical_x_dpi;
|
||||
else if (chip->sensor == ST_NEC600)
|
||||
dpi_list = usb_mid_n600_optical_x_dpi;
|
||||
else
|
||||
return SANE_STATUS_INVAL;
|
||||
|
||||
|
@ -1552,7 +1783,10 @@ usb_mid_motor1200_prepare_home (ma1017 * chip)
|
|||
SANE_Status status;
|
||||
|
||||
DBG (6, "usb_mid_motor1200_prepare_home: start\n");
|
||||
RIE(usb_low_set_motor_movement (chip, SANE_TRUE, SANE_TRUE, SANE_FALSE));
|
||||
if (chip->sensor == ST_NEC600)
|
||||
RIE(usb_low_set_motor_movement (chip, SANE_FALSE, SANE_TRUE, SANE_FALSE));
|
||||
else
|
||||
RIE(usb_low_set_motor_movement (chip, SANE_TRUE, 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));
|
||||
|
@ -1986,7 +2220,7 @@ 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");
|
||||
DBG (6, "usb_mid_motor600_prepare_mono: start\n");
|
||||
switch (dpi)
|
||||
{
|
||||
case 600:
|
||||
|
|
|
@ -54,6 +54,50 @@
|
|||
/* ---------------------------------- macros ------------------------------ */
|
||||
|
||||
|
||||
/* ---------------- sensor NEC 600 CCD function declarations -------------- */
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb (ma1017 * chip, SANE_Word dpi);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono (ma1017 * chip, SANE_Word dpi);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb_600_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb_400_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb_300_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb_200_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb_100_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_rgb_50_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono_600_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono_400_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono_300_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono_200_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono_100_dpi (ma1017 * chip);
|
||||
|
||||
static SANE_Status
|
||||
usb_mid_n600_prepare_mono_50_dpi (ma1017 * chip);
|
||||
|
||||
/* ----------------- sensor 600 CIS function declarations ----------------- */
|
||||
|
||||
static SANE_Status
|
||||
|
|
|
@ -1,5 +1,22 @@
|
|||
CHANGES for the SANE Mustek USB backend
|
||||
|
||||
2001-10-07
|
||||
* Release of version 1.0-7.
|
||||
|
||||
2001-10-07
|
||||
|
||||
* usb_low: fixed output if scanner has wrong vendor/product id.
|
||||
* usb_high: Added the detection of 300&600 sensor again. Mustek seems to
|
||||
have used both sensors in the Mustek 1200 UB, so we must distinguish them.
|
||||
* Disabled 1200 USB for release.
|
||||
|
||||
2001-09-30
|
||||
* 1200CU_Plus has Canon600 sensor (fixed).
|
||||
|
||||
2001-09-15
|
||||
* Added functions for sensor nec600 (1200 USB) in mustek_usb_mid.
|
||||
* Changed init_asic and exposure times for 1200 USB.
|
||||
|
||||
2001-09-13
|
||||
* Release of version 1.0-6.
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue