Lines Matching refs:dev
722 usb_high_scan_init (Mustek_Usb_Device * dev)
728 dev->init_bytes_per_strip = 8 * 1024;
729 dev->adjust_length_300 = 2560;
730 dev->adjust_length_600 = 5120;
731 dev->init_min_expose_time = 4992;
732 dev->init_skips_per_row_300 = 56; /* this value must be times of 6 */
733 dev->init_skips_per_row_600 = 72; /* this value must be times of 6 */
734 dev->init_j_lines = 154;
735 dev->init_k_lines = 16;
736 dev->init_k_filter = 8;
737 dev->init_k_loops = 2;
738 dev->init_pixel_rate_lines = 50;
739 dev->init_pixel_rate_filts = 37;
740 dev->init_powerdelay_lines = 2;
741 dev->init_home_lines = 160;
742 dev->init_dark_lines = 50;
743 dev->init_k_level = 245;
744 dev->init_max_power_delay = 240;
745 dev->init_min_power_delay = 136;
746 dev->init_adjust_way = 1;
747 dev->init_green_black_factor = 0.0;
748 dev->init_blue_black_factor = 0.0;
749 dev->init_red_black_factor = 0.0;
750 dev->init_gray_black_factor = 0.0;
751 dev->init_green_factor = 0.82004;
752 dev->init_blue_factor = 0.84954;
753 dev->init_red_factor = 0.826375;
754 dev->init_gray_factor = 0.833375;
756 dev->init_red_rgb_600_pga = 8;
757 dev->init_green_rgb_600_pga = 8;
758 dev->init_blue_rgb_600_pga = 8;
759 dev->init_mono_600_pga = 8;
760 dev->init_red_rgb_300_pga = 8;
761 dev->init_green_rgb_300_pga = 8;
762 dev->init_blue_rgb_300_pga = 8;
763 dev->init_mono_300_pga = 8;
764 dev->init_expose_time = 9024;
765 dev->init_red_rgb_600_power_delay = 80;
766 dev->init_green_rgb_600_power_delay = 80;
767 dev->init_blue_rgb_600_power_delay = 80;
768 dev->init_red_mono_600_power_delay = 80;
769 dev->init_green_mono_600_power_delay = 80;
770 dev->init_blue_mono_600_power_delay = 80;
771 dev->init_red_rgb_300_power_delay = 80;
772 dev->init_green_rgb_300_power_delay = 80;
773 dev->init_blue_rgb_300_power_delay = 80;
774 dev->init_red_mono_300_power_delay = 80;
775 dev->init_green_mono_300_power_delay = 80;
776 dev->init_blue_mono_300_power_delay = 80;
777 dev->init_threshold = 128;
779 dev->init_top_ref = 128;
780 dev->init_front_end = 16;
781 dev->init_red_offset = 0;
782 dev->init_green_offset = 0;
783 dev->init_blue_offset = 0;
785 dev->init_rgb_24_back_track = 80;
786 dev->init_mono_8_back_track = 80;
788 dev->is_open = SANE_FALSE;
789 dev->is_prepared = SANE_FALSE;
790 dev->expose_time = 4000;
791 dev->width = 2550;
792 dev->x_dpi = 300;
793 dev->y_dpi = 300;
794 dev->scan_mode = RGB24EXT;
795 dev->bytes_per_row = 2550 * 3;
796 dev->dummy = 0;
797 dev->bytes_per_strip = 2550;
798 dev->image_buffer = NULL;
799 dev->red = NULL;
800 dev->green = NULL;
801 dev->blue = NULL;
802 dev->get_line = NULL;
803 dev->backtrack = NULL;
804 dev->is_adjusted_rgb_600_power_delay = SANE_FALSE;
805 dev->is_adjusted_mono_600_power_delay = SANE_FALSE;
806 dev->is_adjusted_rgb_300_power_delay = SANE_FALSE;
807 dev->is_adjusted_mono_300_power_delay = SANE_FALSE;
808 dev->is_evaluate_pixel_rate = SANE_FALSE;
809 dev->red_rgb_600_pga = 0;
810 dev->green_rgb_600_pga = 0;
811 dev->blue_rgb_600_pga = 0;
812 dev->mono_600_pga = 0;
813 dev->red_rgb_600_power_delay = 0;
814 dev->green_rgb_600_power_delay = 0;
815 dev->blue_rgb_600_power_delay = 0;
816 dev->red_mono_600_power_delay = 0;
817 dev->green_mono_600_power_delay = 0;
818 dev->blue_mono_600_power_delay = 0;
819 dev->red_rgb_300_pga = 0;
820 dev->green_rgb_300_pga = 0;
821 dev->blue_rgb_300_pga = 0;
822 dev->mono_300_pga = 0;
823 dev->red_rgb_300_power_delay = 0;
824 dev->green_rgb_300_power_delay = 0;
825 dev->blue_rgb_300_power_delay = 0;
826 dev->red_mono_300_power_delay = 0;
827 dev->green_mono_300_power_delay = 0;
828 dev->blue_mono_300_power_delay = 0;
829 dev->pixel_rate = 2000;
830 dev->threshold = 128;
831 dev->gamma_table = 0;
832 dev->skips_per_row = 0;
835 dev->red_calibrator = NULL;
836 dev->green_calibrator = NULL;
837 dev->blue_calibrator = NULL;
838 dev->mono_calibrator = NULL;
840 dev->is_cis_detected = SANE_FALSE;
841 dev->is_sensor_detected = SANE_FALSE;
843 RIE (usb_low_init (&dev->chip));
850 usb_high_scan_exit (Mustek_Usb_Device * dev)
855 if (!dev->chip)
857 DBG (5, "usb_high_scan_exit: already exited (`%s')\n", dev->name);
861 RIE (usb_low_exit (dev->chip));
862 dev->chip = 0;
868 usb_high_scan_prepare (Mustek_Usb_Device * dev)
870 DBG (5, "usb_high_scan_prepare: start dev=%p\n", (void *) dev);
871 if (dev->is_prepared)
876 if (dev->image_buffer)
878 free (dev->image_buffer);
880 dev->image_buffer = (SANE_Byte *) malloc (dev->init_bytes_per_strip * 3);
881 if (!dev->image_buffer)
884 dev->red = dev->image_buffer;
885 dev->green = dev->image_buffer + dev->init_bytes_per_strip;
886 dev->blue = dev->image_buffer + dev->init_bytes_per_strip * 2;
888 dev->is_prepared = SANE_TRUE;
894 usb_high_scan_clearup (Mustek_Usb_Device * dev)
896 DBG (5, "usb_high_scan_clearup: start, dev=%p\n", (void *) dev);
897 if (!dev->is_prepared)
902 if (dev->image_buffer)
904 free (dev->image_buffer);
906 dev->image_buffer = NULL;
907 dev->red = NULL;
908 dev->green = NULL;
909 dev->blue = NULL;
911 dev->is_prepared = SANE_FALSE;
917 usb_high_scan_turn_power (Mustek_Usb_Device * dev, SANE_Bool is_on)
926 if (dev->is_open)
932 RIE (usb_low_open (dev->chip, dev->device_name));
933 dev->is_open = SANE_TRUE;
934 RIE (usb_low_turn_peripheral_power (dev->chip, SANE_TRUE));
935 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
939 if (!dev->is_open)
945 RIE (usb_low_turn_lamp_power (dev->chip, SANE_FALSE));
946 RIE (usb_low_close (dev->chip));
947 dev->is_open = SANE_FALSE;
955 usb_high_scan_back_home (Mustek_Usb_Device * dev)
961 if (!dev->is_open)
967 RIE (usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
968 RIE (usb_mid_motor_prepare_home (dev->chip));
975 usb_high_scan_set_threshold (Mustek_Usb_Device * dev, SANE_Byte threshold)
977 DBG (5, "usb_high_scan_set_threshold: start, dev=%p, threshold=%d\n",
978 (void *) dev, threshold);
980 dev->threshold = threshold;
986 usb_high_scan_embed_gamma (Mustek_Usb_Device * dev, SANE_Word * gamma_table)
988 DBG (5, "usb_high_scan_embed_gamma: start, dev=%p, gamma_table=%p\n",
989 (void *) dev, (void *) gamma_table);
990 if (!dev->is_prepared)
996 dev->gamma_table = gamma_table;
1002 usb_high_scan_reset (Mustek_Usb_Device * dev)
1008 if (!dev->is_open)
1013 if (!dev->is_prepared)
1018 RIE (usb_high_scan_init_asic (dev, dev->chip->sensor));
1019 RIE (usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
1020 RIE (usb_mid_motor_prepare_home (dev->chip));
1021 RIE (usb_high_scan_set_threshold (dev, dev->init_threshold));
1022 RIE (usb_high_scan_embed_gamma (dev, NULL));
1023 dev->is_adjusted_rgb_600_power_delay = SANE_FALSE;
1024 dev->is_adjusted_mono_600_power_delay = SANE_FALSE;
1025 dev->is_adjusted_rgb_300_power_delay = SANE_FALSE;
1026 dev->is_adjusted_mono_300_power_delay = SANE_FALSE;
1027 dev->is_evaluate_pixel_rate = SANE_FALSE;
1033 usb_high_scan_wait_carriage_home (Mustek_Usb_Device * dev)
1039 status = usb_low_get_home_sensor (dev->chip);
1043 RIE (usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
1044 RIE (usb_mid_motor_prepare_home (dev->chip));
1047 status = usb_low_get_home_sensor (dev->chip);
1055 RIE (usb_low_move_motor_home (dev->chip, SANE_FALSE, SANE_FALSE));
1061 usb_high_scan_hardware_calibration (Mustek_Usb_Device * dev)
1067 if (dev->is_cis_detected)
1068 RIE (usb_high_scan_safe_forward (dev, dev->init_home_lines));
1070 switch (dev->init_adjust_way)
1073 switch (dev->scan_mode)
1076 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1078 dev->expose_time = dev->init_expose_time;
1079 dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
1080 dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
1081 dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
1082 RIE (usb_high_scan_adjust_rgb_600_power_delay (dev));
1086 dev->expose_time = dev->init_expose_time;
1087 dev->red_rgb_300_pga = dev->init_red_rgb_300_pga;
1088 dev->green_rgb_300_pga = dev->init_green_rgb_300_pga;
1089 dev->blue_rgb_300_pga = dev->init_blue_rgb_300_pga;
1090 RIE (usb_high_scan_adjust_rgb_300_power_delay (dev));
1094 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1096 dev->expose_time = dev->init_expose_time;
1097 dev->mono_600_pga = dev->init_mono_600_pga;
1098 RIE (usb_high_scan_evaluate_pixel_rate (dev));
1099 RIE (usb_high_scan_adjust_mono_600_power_delay (dev));
1103 dev->expose_time = dev->init_expose_time;
1104 dev->mono_300_pga = dev->init_mono_300_pga;
1105 RIE (usb_high_scan_evaluate_pixel_rate (dev));
1106 RIE (usb_high_scan_adjust_mono_300_power_delay (dev));
1114 switch (dev->scan_mode)
1117 dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
1118 dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
1119 dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
1120 dev->skips_per_row = dev->init_skips_per_row_600;
1121 /* RIE(usb_high_scan_adjust_rgb_600_exposure (dev); fixme */
1122 /* RIE(usb_high_scan_adjust_rgb_600_offset (dev); fixme */
1123 /* RIE(usb_high_scan_adjust_rgb_600_pga (dev); fixme */
1125 /* RIE(usb_high_scan_adjust_rgb_600_offset (dev); fixme */
1126 /* RIE(usb_high_scan_adjust_rgb_600_skips_per_row (dev); fixme */
1129 dev->mono_600_pga = dev->init_mono_600_pga;
1130 dev->skips_per_row = dev->init_skips_per_row_600;
1131 RIE (usb_high_scan_adjust_mono_600_exposure (dev));
1132 /* RIE(usb_high_scan_adjust_mono_600_offset (dev); fixme */
1133 /* RIE(usb_high_scan_adjust_mono_600_pga (dev); fixme */
1134 dev->is_adjusted_mono_600_offset = SANE_FALSE;
1135 /* RIE(usb_high_scan_adjust_mono_600_offset (dev); fixme */
1136 /* RIE(usb_high_scan_adjust_mono_600_skips_per_row (dev); fixme */
1143 dev->expose_time = dev->init_expose_time;
1144 dev->red_rgb_600_power_delay = dev->init_red_rgb_600_power_delay;
1145 dev->green_rgb_600_power_delay = dev->init_green_rgb_600_power_delay;
1146 dev->blue_rgb_600_power_delay = dev->init_blue_rgb_600_power_delay;
1147 dev->red_mono_600_power_delay = dev->init_red_mono_600_power_delay;
1148 dev->green_mono_600_power_delay = dev->init_green_mono_600_power_delay;
1149 dev->blue_mono_600_power_delay = dev->init_blue_mono_600_power_delay;
1150 dev->red_rgb_600_pga = dev->init_red_rgb_600_pga;
1151 dev->green_rgb_600_pga = dev->init_green_rgb_600_pga;
1152 dev->blue_rgb_600_pga = dev->init_blue_rgb_600_pga;
1153 dev->mono_600_pga = dev->init_mono_600_pga;
1154 dev->red_rgb_300_power_delay = dev->init_red_rgb_300_power_delay;
1155 dev->green_rgb_300_power_delay = dev->init_green_rgb_300_power_delay;
1156 dev->blue_rgb_300_power_delay = dev->init_blue_rgb_300_power_delay;
1157 dev->red_mono_300_power_delay = dev->init_red_mono_300_power_delay;
1158 dev->green_mono_300_power_delay = dev->init_green_mono_300_power_delay;
1159 dev->blue_mono_300_power_delay = dev->init_blue_mono_300_power_delay;
1160 dev->red_rgb_300_pga = dev->init_red_rgb_300_pga;
1161 dev->green_rgb_300_pga = dev->init_green_rgb_300_pga;
1162 dev->blue_rgb_300_pga = dev->init_blue_rgb_300_pga;
1163 dev->mono_300_pga = dev->init_mono_300_pga;
1171 usb_high_scan_line_calibration (Mustek_Usb_Device * dev)
1176 switch (dev->scan_mode)
1179 RIE (usb_high_scan_prepare_rgb_24 (dev));
1180 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1181 RIE (usb_high_scan_prepare_rgb_signal_600_dpi (dev));
1183 RIE (usb_high_scan_prepare_rgb_signal_300_dpi (dev));
1184 RIE (usb_mid_sensor_prepare_rgb (dev->chip, dev->x_dpi));
1185 RIE (usb_high_scan_calibration_rgb_24 (dev));
1188 RIE (usb_high_scan_prepare_mono_8 (dev));
1189 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1190 RIE (usb_high_scan_prepare_mono_signal_600_dpi (dev));
1192 RIE (usb_high_scan_prepare_mono_signal_300_dpi (dev));
1193 RIE (usb_mid_sensor_prepare_mono (dev->chip, dev->x_dpi));
1194 RIE (usb_high_scan_calibration_mono_8 (dev));
1206 usb_high_scan_prepare_scan (Mustek_Usb_Device * dev)
1211 switch (dev->scan_mode)
1214 RIE (usb_high_scan_prepare_rgb_24 (dev));
1215 dev->get_line = &usb_high_scan_get_rgb_24_bit_line;
1216 dev->backtrack = &usb_high_scan_backtrack_rgb_24;
1218 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1219 RIE (usb_high_scan_prepare_rgb_signal_600_dpi (dev));
1221 RIE (usb_high_scan_prepare_rgb_signal_300_dpi (dev));
1222 RIE (usb_mid_sensor_prepare_rgb (dev->chip, dev->x_dpi));
1223 RIE (usb_mid_motor_prepare_rgb (dev->chip, dev->y_dpi));
1226 RIE (usb_high_scan_prepare_mono_8 (dev));
1227 dev->get_line = &usb_high_scan_get_mono_8_bit_line;
1228 dev->backtrack = &usb_high_scan_backtrack_mono_8;
1229 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1230 RIE (usb_high_scan_prepare_mono_signal_600_dpi (dev));
1232 RIE (usb_high_scan_prepare_mono_signal_300_dpi (dev));
1233 RIE (usb_mid_sensor_prepare_mono (dev->chip, dev->x_dpi));
1234 RIE (usb_mid_motor_prepare_mono (dev->chip, dev->y_dpi));
1246 usb_high_scan_suggest_parameters (Mustek_Usb_Device * dev, SANE_Word dpi,
1254 RIE (usb_high_scan_detect_sensor (dev));
1256 RIE (usb_mid_motor_get_dpi (dev->chip, dpi, &dev->y_dpi));
1258 RIE (usb_mid_sensor_get_dpi (dev->chip, dpi, &dev->x_dpi));
1260 dev->x = x * dev->x_dpi / dpi;
1261 dev->y = y * dev->y_dpi / dpi;
1262 dev->width = width * dev->x_dpi / dpi;
1263 dev->height = height * dev->y_dpi / dpi;
1268 dev->scan_mode = RGB24EXT;
1269 dev->bytes_per_row = dev->width * 3;
1270 dev->bpp = 24;
1273 dev->scan_mode = GRAY8EXT;
1274 dev->bpp = 8;
1275 dev->bytes_per_row = dev->width;
1287 usb_high_scan_detect_sensor (Mustek_Usb_Device * dev)
1289 if (dev->is_sensor_detected)
1294 dev->is_sensor_detected = SANE_TRUE;
1296 switch (dev->chip->scanner_type)
1299 dev->chip->sensor = ST_CANON300;
1300 dev->chip->motor = MT_600;
1301 dev->is_cis_detected = SANE_TRUE;
1306 dev->chip->sensor = ST_NEC600;
1307 dev->chip->motor = MT_1200;
1308 dev->init_min_expose_time = 2250;
1309 dev->init_skips_per_row_600 = 0;
1310 dev->init_home_lines = 32;
1311 dev->init_dark_lines = 10;
1312 dev->init_max_power_delay = 220;
1313 dev->init_min_power_delay = 220;
1314 dev->init_adjust_way = 3;
1315 dev->init_red_rgb_600_pga = 30;
1316 dev->init_green_rgb_600_pga = 30;
1317 dev->init_blue_rgb_600_pga = 30;
1318 dev->init_mono_600_pga = 30;
1319 dev->init_expose_time = 16000;
1321 dev->init_top_ref = 6;
1322 dev->init_front_end = 12;
1323 dev->init_red_offset = 128;
1324 dev->init_green_offset = 128;
1325 dev->init_blue_offset = 128;
1327 dev->init_rgb_24_back_track = 0;
1328 dev->init_mono_8_back_track = 40;
1330 dev->is_cis_detected = SANE_FALSE;
1345 dev->chip->motor = MT_1200;
1346 dev->is_cis_detected = SANE_TRUE;
1352 buffer = (SANE_Byte *) malloc (dev->init_bytes_per_strip);
1360 dev->scan_mode = GRAY8EXT;
1361 dev->x_dpi = 600;
1362 dev->y_dpi = 1200;
1363 dev->width = 5400;
1365 RIE (usb_high_scan_init_asic (dev, ST_CANON600));
1366 RIE (usb_low_turn_peripheral_power (dev->chip, SANE_TRUE));
1367 RIE (usb_low_enable_motor (dev->chip, SANE_TRUE)); /* Enable Motor */
1368 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
1369 RIE (usb_low_invert_image (dev->chip, SANE_FALSE));
1370 RIE (usb_low_set_image_dpi (dev->chip, SANE_TRUE, SW_P6P6));
1371 dev->bytes_per_strip = dev->adjust_length_600;
1372 dev->bytes_per_row = 5400;
1373 dev->dummy = 0;
1375 RIE (usb_high_scan_wait_carriage_home (dev));
1376 RIE (usb_high_scan_hardware_calibration (dev));
1377 RIE (usb_high_scan_prepare_scan (dev));
1380 RIE (usb_low_start_rowing (dev->chip));
1381 RIE (usb_low_get_row (dev->chip, buffer, &lines_left));
1382 RIE (usb_low_stop_rowing (dev->chip));
1397 dev->chip->sensor = ST_CANON600;
1406 dev->chip->sensor = ST_CANON300600;
1417 "(%d)\n", dev->chip->scanner_type);
1426 usb_high_scan_setup_scan (Mustek_Usb_Device * dev, Colormode color_mode,
1436 if (!dev->is_open)
1441 if (!dev->is_prepared)
1447 RIE (usb_high_scan_init_asic (dev, dev->chip->sensor));
1448 RIE (usb_low_turn_peripheral_power (dev->chip, SANE_TRUE));
1449 RIE (usb_low_enable_motor (dev->chip, SANE_TRUE)); /* Enable Motor */
1450 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
1451 RIE (usb_low_invert_image (dev->chip, SANE_FALSE));
1452 if (!dev->is_cis_detected)
1454 usb_mid_front_set_front_end_mode (dev->chip, 16);
1455 usb_mid_front_enable (dev->chip, SANE_TRUE);
1456 usb_mid_front_set_top_reference (dev->chip, 244);
1457 usb_mid_front_set_rgb_signal (dev->chip);
1461 dev->scan_mode = color_mode;
1462 dev->x_dpi = x_dpi;
1463 dev->y_dpi = y_dpi;
1464 dev->width = width;
1466 switch (dev->scan_mode)
1469 dev->bytes_per_row = 3 * dev->width;
1470 upper_bound = ((y * 600) / dev->y_dpi) + dev->init_j_lines;
1473 dev->bytes_per_row = dev->width;
1474 upper_bound = ((y * 600) / dev->y_dpi) + dev->init_j_lines + 4;
1478 upper_bound = ((y * 600) / dev->y_dpi) + dev->init_j_lines + 4;
1482 if (usb_mid_sensor_is600_mode (dev->chip, dev->x_dpi))
1485 left_bound = (x * 600 / dev->x_dpi) + dev->init_skips_per_row_600;
1486 dev->skips_per_row = (((left_bound % 32) * dev->x_dpi + 300) / 600);
1491 left_bound = (x * 300 / dev->x_dpi) + dev->init_skips_per_row_300;
1492 dev->skips_per_row = (((left_bound % 32) * dev->x_dpi + 150) / 300);
1495 dev->dummy = (left_bound / 32) * 32;
1497 switch (dev->scan_mode)
1500 dev->bytes_per_strip = dev->skips_per_row + dev->width;
1503 dev->bytes_per_strip = dev->skips_per_row + dev->width;
1509 dev->bytes_per_strip = ((dev->bytes_per_strip + 1) / 2) * 2;
1512 RIE (usb_high_scan_wait_carriage_home (dev));
1513 RIE (usb_high_scan_hardware_calibration (dev));
1514 RIE (usb_high_scan_line_calibration (dev));
1515 RIE (usb_high_scan_step_forward (dev, upper_bound));
1516 RIE (usb_high_scan_prepare_scan (dev));
1517 RIE (usb_low_start_rowing (dev->chip));
1524 usb_high_scan_get_rows (Mustek_Usb_Device * dev, SANE_Byte * block,
1530 if (!dev->is_open)
1535 if (!dev->is_prepared)
1542 RIE ((*dev->get_line) (dev, block, is_order_invert));
1543 block += dev->bytes_per_row;
1551 usb_high_scan_stop_scan (Mustek_Usb_Device * dev)
1556 if (!dev->is_open)
1561 if (!dev->is_prepared)
1566 switch (dev->scan_mode)
1569 RIE (usb_high_cal_exit (dev->blue_calibrator));
1570 if (dev->blue_calibrator)
1571 free (dev->blue_calibrator);
1572 dev->blue_calibrator = NULL;
1573 RIE (usb_high_cal_exit (dev->green_calibrator));
1574 if (dev->green_calibrator)
1575 free (dev->green_calibrator);
1576 dev->green_calibrator = NULL;
1577 RIE (usb_high_cal_exit (dev->red_calibrator));
1578 if (dev->red_calibrator)
1579 free (dev->red_calibrator);
1580 dev->red_calibrator = NULL;
1583 RIE (usb_high_cal_exit (dev->mono_calibrator));
1584 if (dev->mono_calibrator)
1585 free (dev->mono_calibrator);
1586 dev->mono_calibrator = NULL;
1592 RIE (usb_low_stop_rowing (dev->chip));
1593 if (!dev->is_cis_detected)
1594 RIE (usb_low_turn_lamp_power (dev->chip, SANE_FALSE));
1601 usb_high_scan_init_asic (Mustek_Usb_Device * dev, Sensor_Type sensor)
1676 RIE (usb_low_adjust_timing (dev->chip, adjust));
1677 RIE (usb_low_select_timing (dev->chip, select));
1678 RIE (usb_low_set_timing (dev->chip, ccd_dpi));
1679 RIE (usb_low_set_sram_bank (dev->chip, bank_size));
1680 RIE (usb_low_set_asic_io_pins (dev->chip, pin));
1681 RIE (usb_low_set_rgb_sel_pins (dev->chip, pin));
1682 RIE (usb_low_set_motor_signal (dev->chip, motor));
1683 RIE (usb_low_set_test_sram_mode (dev->chip, SANE_FALSE));
1684 RIE (usb_low_set_fix_pattern (dev->chip, fix_pattern));
1685 RIE (usb_low_set_ad_timing (dev->chip, ad_timing));
1692 usb_high_scan_evaluate_max_level (Mustek_Usb_Device * dev,
1706 RIE (usb_low_start_rowing (dev->chip));
1709 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
1712 if (max_level < dev->green[j])
1713 max_level = dev->green[j];
1716 RIE (usb_low_stop_rowing (dev->chip));
1726 usb_high_scan_bssc_power_delay (Mustek_Usb_Device * dev,
1741 RIE ((*set_power_delay) (dev->chip, *target));
1744 RIE (usb_high_scan_evaluate_max_level (dev, dev->init_powerdelay_lines,
1763 RIE ((*set_power_delay) (dev->chip, *target));
1772 RIE ((*set_power_delay) (dev->chip, *target));
1773 RIE (usb_high_scan_evaluate_max_level (dev, dev->init_powerdelay_lines,
1799 usb_high_scan_adjust_rgb_600_power_delay (Mustek_Usb_Device * dev)
1806 max_power_delay = (SANE_Byte) (dev->expose_time / 64);
1808 if (dev->is_adjusted_rgb_600_power_delay)
1811 dev->red_rgb_600_power_delay = max_power_delay;
1812 dev->green_rgb_600_power_delay = max_power_delay;
1813 dev->blue_rgb_600_power_delay = max_power_delay;
1815 RIE (usb_low_set_ccd_width (dev->chip, dev->expose_time));
1816 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
1817 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
1818 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
1819 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
1820 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
1821 RIE (usb_mid_front_set_rgb_signal (dev->chip));
1822 RIE (usb_low_set_dummy (dev->chip, dev->init_skips_per_row_600));
1823 RIE (usb_low_set_image_byte_width (dev->chip, dev->adjust_length_600));
1824 RIE (usb_low_set_pixel_depth (dev->chip, PD_8BIT));
1827 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
1828 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 600));
1830 RIE (usb_mid_front_set_green_pga (dev->chip, dev->green_rgb_600_pga));
1832 (dev, &usb_low_set_green_pd, &signal_state,
1833 &dev->green_rgb_600_power_delay,
1834 max_power_delay, 0, dev->init_max_power_delay,
1835 dev->adjust_length_600));
1838 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_BLUE));
1839 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 600));
1841 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->blue_rgb_600_pga));
1843 (dev, &usb_low_set_blue_pd, &signal_state,
1844 &dev->blue_rgb_600_power_delay,
1845 max_power_delay, 0, dev->init_max_power_delay,
1846 dev->adjust_length_600));
1849 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_RED));
1850 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 600));
1852 RIE (usb_mid_front_set_red_pga (dev->chip, dev->red_rgb_600_pga));
1854 (dev, &usb_low_set_red_pd, &signal_state,
1855 &dev->red_rgb_600_power_delay, max_power_delay, 0,
1856 dev->init_max_power_delay, dev->adjust_length_600));
1858 dev->is_adjusted_rgb_600_power_delay = SANE_TRUE;
1864 usb_high_scan_adjust_mono_600_power_delay (Mustek_Usb_Device * dev)
1871 max_power_delay = (SANE_Byte) (dev->expose_time / 64);
1872 if (dev->is_adjusted_mono_600_power_delay)
1875 dev->red_mono_600_power_delay = max_power_delay;
1876 dev->green_mono_600_power_delay = max_power_delay;
1877 dev->blue_mono_600_power_delay = max_power_delay;
1880 RIE (usb_low_set_ccd_width (dev->chip, dev->expose_time));
1881 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
1882 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
1883 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
1884 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
1885 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
1886 RIE (usb_mid_front_set_rgb_signal (dev->chip));
1887 RIE (usb_low_set_dummy (dev->chip, dev->init_skips_per_row_600));
1888 RIE (usb_low_set_image_byte_width (dev->chip, dev->adjust_length_600));
1889 RIE (usb_low_set_pixel_depth (dev->chip, PD_8BIT));
1892 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
1893 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 600));
1895 RIE (usb_mid_front_set_red_pga (dev->chip, dev->mono_600_pga));
1896 RIE (usb_mid_front_set_green_pga (dev->chip, dev->mono_600_pga));
1897 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->mono_600_pga));
1899 (dev, &usb_low_set_green_pd, &signal_state,
1900 &dev->green_mono_600_power_delay,
1901 max_power_delay, 0, dev->init_max_power_delay,
1902 dev->adjust_length_600));
1904 dev->is_adjusted_mono_600_power_delay = SANE_TRUE;
1911 usb_high_scan_adjust_mono_600_exposure (Mustek_Usb_Device * dev)
1917 if (dev->is_adjusted_mono_600_exposure)
1920 RIE (usb_high_scan_evaluate_pixel_rate (dev));
1921 transfer_time = dev->pixel_rate * dev->x_dpi / 600;
1925 dev->mono_600_exposure =
1927 usb_mid_motor_mono_capability (dev->chip, dev->y_dpi)));
1928 dev->mono_600_exposure = ((dev->mono_600_exposure + 63) / 64) * 64;
1929 dev->is_adjusted_mono_600_exposure = SANE_TRUE;
1937 usb_high_scan_adjust_mono_600_offset (Mustek_Usb_Device * dev)
1940 if (dev->is_adjusted_mono_600_offset)
1949 usb_high_scan_adjust_mono_600_pga (Mustek_Usb_Device * dev)
1951 DBG (5, "usb_high_scan_adjust_mono_600_pga: start (dev = %p)\n", dev);
1958 usb_high_scan_adjust_mono_600_skips_per_row (Mustek_Usb_Device * dev)
1960 DBG (5, "usb_high_scan_adjust_mono_600_skips_per_row: start (dev = %p)\n",
1961 dev);
1968 usb_high_scan_adjust_rgb_300_power_delay (Mustek_Usb_Device * dev)
1976 max_power_delay = (SANE_Byte) (dev->expose_time / 64);
1977 if (dev->is_adjusted_rgb_300_power_delay)
1980 dev->red_rgb_300_power_delay = max_power_delay;
1981 dev->green_rgb_300_power_delay = max_power_delay;
1982 dev->blue_rgb_300_power_delay = max_power_delay;
1984 RIE (usb_low_set_ccd_width (dev->chip, dev->expose_time));
1985 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
1986 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
1987 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
1988 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
1989 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
1990 RIE (usb_mid_front_set_rgb_signal (dev->chip));
1991 RIE (usb_low_set_dummy (dev->chip, dev->init_skips_per_row_300));
1992 RIE (usb_low_set_image_byte_width (dev->chip, dev->adjust_length_300));
1993 RIE (usb_low_set_pixel_depth (dev->chip, PD_8BIT));
1996 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
1997 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 300));
2000 RIE (usb_mid_front_set_green_pga (dev->chip, dev->green_rgb_300_pga));
2002 (dev, &usb_low_set_green_pd, &signal_state,
2003 &dev->green_rgb_300_power_delay,
2004 max_power_delay, 0, dev->init_max_power_delay,
2005 dev->adjust_length_300));
2008 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_BLUE));
2009 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 300));
2012 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->blue_rgb_300_pga));
2014 (dev, &usb_low_set_blue_pd, &signal_state,
2015 &dev->blue_rgb_300_power_delay, max_power_delay, 0,
2016 dev->init_max_power_delay, dev->adjust_length_300));
2019 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_RED));
2020 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 300));
2023 RIE (usb_mid_front_set_red_pga (dev->chip, dev->red_rgb_300_pga));
2025 (dev, &usb_low_set_red_pd, &signal_state,
2026 &dev->red_rgb_300_power_delay, max_power_delay, 0,
2027 dev->init_max_power_delay, dev->adjust_length_300));
2028 dev->is_adjusted_rgb_300_power_delay = SANE_TRUE;
2034 usb_high_scan_adjust_mono_300_power_delay (Mustek_Usb_Device * dev)
2041 max_power_delay = (SANE_Byte) (dev->expose_time / 64);
2042 if (dev->is_adjusted_mono_300_power_delay)
2045 dev->red_mono_300_power_delay = max_power_delay;
2046 dev->green_mono_300_power_delay = max_power_delay;
2047 dev->blue_mono_300_power_delay = max_power_delay;
2050 RIE (usb_low_set_ccd_width (dev->chip, dev->expose_time));
2051 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
2052 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
2053 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
2054 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
2055 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
2056 RIE (usb_mid_front_set_rgb_signal (dev->chip));
2057 RIE (usb_low_set_dummy (dev->chip, dev->init_skips_per_row_300));
2058 RIE (usb_low_set_image_byte_width (dev->chip, dev->adjust_length_300));
2059 RIE (usb_low_set_pixel_depth (dev->chip, PD_8BIT));
2062 RIE (usb_mid_motor_prepare_adjust (dev->chip, CH_GREEN));
2063 RIE (usb_mid_sensor_prepare_rgb (dev->chip, 300));
2066 RIE (usb_mid_front_set_red_pga (dev->chip, dev->mono_300_pga));
2067 RIE (usb_mid_front_set_green_pga (dev->chip, dev->mono_300_pga));
2068 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->mono_300_pga));
2070 (dev, &usb_low_set_green_pd, &signal_state,
2071 &dev->green_mono_300_power_delay,
2072 max_power_delay, 0, dev->init_max_power_delay,
2073 dev->adjust_length_300));
2075 dev->is_adjusted_mono_300_power_delay = SANE_TRUE;
2081 usb_high_scan_evaluate_pixel_rate (Mustek_Usb_Device * dev)
2083 DBG (5, "usb_high_scan_evaluate_pixel_rate: start, dev=%p\n", (void *) dev);
2086 dev->pixel_rate = 2000;
2087 dev->is_evaluate_pixel_rate = SANE_TRUE;
2093 usb_high_scan_calibration_rgb_24 (Mustek_Usb_Device * dev)
2102 DBG (5, "usb_high_scan_calibration_rgb_24: start, dev=%p\n", (void *) dev);
2103 if (dev->is_cis_detected)
2105 RIE (usb_mid_motor_prepare_calibrate_rgb (dev->chip, dev->y_dpi));
2106 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
2114 dev->red_calibrator = (Calibrator *) malloc (sizeof (Calibrator));
2115 if (!dev->red_calibrator)
2118 RIE (usb_high_cal_init (dev->red_calibrator, I8O8RGB,
2119 dev->init_k_level << 8, 0));
2120 RIE (usb_high_cal_prepare (dev->red_calibrator, dev->width));
2121 RIE (usb_high_cal_embed_gamma (dev->red_calibrator, dev->gamma_table));
2123 (dev->red_calibrator, 1, minor_average, 8, dev->width, &white_need,
2126 dev->green_calibrator = (Calibrator *) malloc (sizeof (Calibrator));
2127 if (!dev->green_calibrator)
2129 RIE (usb_high_cal_init (dev->green_calibrator, I8O8RGB,
2130 dev->init_k_level << 8, 0));
2131 RIE (usb_high_cal_prepare (dev->green_calibrator, dev->width));
2132 RIE (usb_high_cal_embed_gamma (dev->green_calibrator, dev->gamma_table));
2133 RIE (usb_high_cal_setup (dev->green_calibrator, 1, minor_average, 8,
2134 dev->width, &white_need, &dark_need));
2136 dev->blue_calibrator = (Calibrator *) malloc (sizeof (Calibrator));
2137 if (!dev->blue_calibrator)
2140 RIE (usb_high_cal_init (dev->blue_calibrator, I8O8RGB,
2141 dev->init_k_level << 8, 0));
2142 RIE (usb_high_cal_prepare (dev->blue_calibrator, dev->width));
2143 RIE (usb_high_cal_embed_gamma (dev->blue_calibrator, dev->gamma_table));
2144 RIE (usb_high_cal_setup (dev->blue_calibrator, 1, minor_average, 8,
2145 dev->width, &white_need, &dark_need));
2148 RIE (usb_low_start_rowing (dev->chip));
2152 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2153 RIE (usb_high_cal_fill_in_white (dev->green_calibrator, i, 0,
2154 (void *) (dev->green +
2155 dev->skips_per_row)));
2156 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2157 RIE (usb_high_cal_fill_in_white (dev->green_calibrator, i, 1,
2158 (void *) (dev->green +
2159 dev->skips_per_row)));
2161 RIE (usb_low_get_row (dev->chip, dev->blue, &lines_left));
2162 RIE (usb_high_cal_fill_in_white (dev->blue_calibrator, i, 0,
2163 (void *) (dev->blue +
2164 dev->skips_per_row)));
2165 RIE (usb_low_get_row (dev->chip, dev->blue, &lines_left));
2166 RIE (usb_high_cal_fill_in_white (dev->blue_calibrator, i, 1,
2167 (void *) (dev->blue +
2168 dev->skips_per_row)));
2170 RIE (usb_low_get_row (dev->chip, dev->red, &lines_left));
2171 RIE (usb_high_cal_fill_in_white (dev->red_calibrator, i, 0,
2172 (void *) (dev->red +
2173 dev->skips_per_row)));
2174 RIE (usb_low_get_row (dev->chip, dev->red, &lines_left));
2175 RIE (usb_high_cal_fill_in_white (dev->red_calibrator, i, 1,
2176 (void *) (dev->red +
2177 dev->skips_per_row)));
2179 RIE (usb_low_stop_rowing (dev->chip));
2181 RIE (usb_high_cal_evaluate_white (dev->green_calibrator,
2182 dev->init_green_factor));
2183 RIE (usb_high_cal_evaluate_white (dev->blue_calibrator,
2184 dev->init_blue_factor));
2185 RIE (usb_high_cal_evaluate_white (dev->red_calibrator,
2186 dev->init_red_factor));
2188 RIE (usb_mid_motor_prepare_calibrate_rgb (dev->chip, dev->y_dpi));
2189 RIE (usb_low_enable_motor (dev->chip, SANE_FALSE));
2190 RIE (usb_low_turn_lamp_power (dev->chip, SANE_FALSE));
2193 RIE (usb_low_start_rowing (dev->chip));
2197 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2198 RIE (usb_high_cal_fill_in_dark (dev->green_calibrator, i, 0,
2199 (void *) (dev->green +
2200 dev->skips_per_row)));
2201 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2202 RIE (usb_high_cal_fill_in_dark (dev->green_calibrator, i, 1,
2203 (void *) (dev->green +
2204 dev->skips_per_row)));
2206 RIE (usb_low_get_row (dev->chip, dev->blue, &lines_left));
2207 RIE (usb_high_cal_fill_in_dark (dev->blue_calibrator, i, 0,
2208 (void *) (dev->blue +
2209 dev->skips_per_row)));
2210 RIE (usb_low_get_row (dev->chip, dev->blue, &lines_left));
2211 RIE (usb_high_cal_fill_in_dark (dev->blue_calibrator, i, 1,
2212 (void *) (dev->blue +
2213 dev->skips_per_row)));
2215 RIE (usb_low_get_row (dev->chip, dev->red, &lines_left));
2216 RIE (usb_high_cal_fill_in_dark (dev->red_calibrator, i, 0,
2217 (void *) (dev->red +
2218 dev->skips_per_row)));
2219 RIE (usb_low_get_row (dev->chip, dev->red, &lines_left));
2220 RIE (usb_high_cal_fill_in_dark (dev->red_calibrator, i, 1,
2221 (void *) (dev->red +
2222 dev->skips_per_row)));
2224 RIE (usb_low_stop_rowing (dev->chip));
2225 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
2227 RIE (usb_high_cal_evaluate_dark (dev->green_calibrator,
2228 dev->init_green_black_factor));
2229 RIE (usb_high_cal_evaluate_dark (dev->blue_calibrator,
2230 dev->init_blue_black_factor));
2231 RIE (usb_high_cal_evaluate_dark (dev->red_calibrator,
2232 dev->init_red_black_factor));
2234 RIE (usb_high_cal_evaluate_calibrator (dev->green_calibrator));
2235 RIE (usb_high_cal_evaluate_calibrator (dev->blue_calibrator));
2236 RIE (usb_high_cal_evaluate_calibrator (dev->red_calibrator));
2242 usb_high_scan_calibration_mono_8 (Mustek_Usb_Device * dev)
2251 RIE (usb_mid_motor_prepare_calibrate_mono (dev->chip, dev->y_dpi));
2252 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
2254 dev->mono_calibrator = (Calibrator *) malloc (sizeof (Calibrator));
2255 if (!dev->mono_calibrator)
2258 RIE (usb_high_cal_init (dev->mono_calibrator, I8O8MONO,
2259 dev->init_k_level << 8, 0));
2260 RIE (usb_high_cal_prepare (dev->mono_calibrator, dev->width));
2261 RIE (usb_high_cal_embed_gamma (dev->mono_calibrator, dev->gamma_table));
2262 RIE (usb_high_cal_setup (dev->mono_calibrator, 1, 1, 8,
2263 dev->width, &white_need, &dark_need));
2266 RIE (usb_low_start_rowing (dev->chip));
2270 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2271 RIE (usb_high_cal_fill_in_white (dev->mono_calibrator, i, 0,
2272 (void *) (dev->green +
2273 dev->skips_per_row)));
2275 RIE (usb_low_stop_rowing (dev->chip));
2277 RIE (usb_high_cal_evaluate_white (dev->mono_calibrator,
2278 dev->init_gray_factor));
2280 RIE (usb_mid_motor_prepare_calibrate_mono (dev->chip, dev->y_dpi));
2281 RIE (usb_low_enable_motor (dev->chip, SANE_FALSE));
2282 RIE (usb_low_turn_lamp_power (dev->chip, SANE_FALSE));
2285 RIE (usb_low_start_rowing (dev->chip));
2289 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2290 RIE (usb_high_cal_fill_in_dark (dev->mono_calibrator, i, 0,
2291 (void *) (dev->green +
2292 dev->skips_per_row)));
2294 RIE (usb_low_stop_rowing (dev->chip));
2295 RIE (usb_low_turn_lamp_power (dev->chip, SANE_TRUE));
2297 RIE (usb_high_cal_evaluate_dark (dev->mono_calibrator,
2298 dev->init_gray_black_factor));
2300 RIE (usb_high_cal_evaluate_calibrator (dev->mono_calibrator));
2306 usb_high_scan_step_forward (Mustek_Usb_Device * dev, SANE_Int step_count)
2315 RIE (usb_low_set_ccd_width (dev->chip, dev->init_min_expose_time));
2316 RIE (usb_low_set_motor_direction (dev->chip, SANE_FALSE));
2317 RIE (usb_mid_motor_prepare_step (dev->chip, (SANE_Word) step_count));
2319 RIE (usb_low_start_rowing (dev->chip));
2324 RIE (usb_low_wait_rowing_stop (dev->chip));
2325 if (!dev->is_cis_detected)
2326 RIE (usb_low_set_ccd_width (dev->chip, dev->expose_time));
2333 usb_high_scan_safe_forward (Mustek_Usb_Device * dev, SANE_Int step_count)
2341 RIE (usb_low_set_ccd_width (dev->chip, 5400));
2342 RIE (usb_low_set_motor_direction (dev->chip, SANE_FALSE));
2343 RIE (usb_mid_motor_prepare_step (dev->chip, (SANE_Word) step_count));
2345 RIE (usb_low_start_rowing (dev->chip));
2347 RIE (usb_low_wait_rowing_stop (dev->chip));
2348 RIE (usb_low_set_ccd_width (dev->chip, dev->expose_time));
2354 usb_high_scan_calculate_max_rgb_600_expose (Mustek_Usb_Device * dev,
2365 DBG (5, "usb_high_scan_calculate_max_rgb_600_expose: dev=%p\n", (void *) dev);
2367 red_light_up = dev->expose_time - dev->red_rgb_600_power_delay * 64;
2368 green_light_up = dev->expose_time - dev->green_rgb_600_power_delay * 64;
2369 blue_light_up = dev->expose_time - dev->blue_rgb_600_power_delay * 64;
2371 if (dev->chip->sensor == ST_NEC600)
2375 usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
2381 usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
2392 usb_high_scan_calculate_max_mono_600_expose (Mustek_Usb_Device * dev,
2401 DBG (5, "usb_high_scan_calculate_max_mono_600_expose: dev=%p\n", (void *) dev);
2403 max_light_up = dev->expose_time - dev->green_mono_600_power_delay * 64;
2404 transfer_time = (SANE_Word) ((SANE_Word) (dev->pixel_rate)
2405 * (SANE_Word) (dev->x_dpi) / 600);
2410 if (dev->chip->sensor == ST_NEC600)
2415 (dev->chip, dev->y_dpi)));
2422 (dev->chip, dev->y_dpi)));
2433 usb_high_scan_calculate_max_rgb_300_expose (Mustek_Usb_Device * dev,
2445 red_light_up = dev->expose_time - dev->red_rgb_300_power_delay * 64;
2446 green_light_up = dev->expose_time - dev->green_rgb_300_power_delay * 64;
2447 blue_light_up = dev->expose_time - dev->blue_rgb_300_power_delay * 64;
2450 if (dev->chip->sensor == ST_CANON300600)
2454 usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
2456 else if (dev->chip->sensor == ST_CANON300)
2459 usb_mid_motor_rgb_capability (dev->chip,
2460 dev->y_dpi));
2466 usb_mid_motor_rgb_capability (dev->chip, dev->y_dpi));
2478 usb_high_scan_calculate_max_mono_300_expose (Mustek_Usb_Device * dev,
2488 max_light_up = dev->expose_time - dev->green_mono_300_power_delay * 64;
2490 (SANE_Word) ((SANE_Word) (dev->pixel_rate) *
2491 (SANE_Word) (dev->x_dpi) / 600);
2496 if (dev->chip->sensor == ST_CANON300600)
2501 usb_mid_motor_mono_capability (dev->chip, dev->y_dpi)));
2503 else if (dev->chip->sensor == ST_CANON300)
2507 usb_mid_motor_mono_capability (dev->chip,
2508 dev->
2516 usb_mid_motor_mono_capability (dev->chip, dev->y_dpi)));
2528 usb_high_scan_prepare_rgb_signal_600_dpi (Mustek_Usb_Device * dev)
2536 (dev, &ideal_red_pd, &ideal_green_pd, &ideal_blue_pd);
2538 RIE (usb_low_set_ccd_width (dev->chip, ideal_expose_time));
2539 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
2540 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
2541 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
2542 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
2543 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
2544 RIE (usb_mid_front_set_red_pga (dev->chip, dev->red_rgb_600_pga));
2545 RIE (usb_mid_front_set_green_pga (dev->chip, dev->green_rgb_600_pga));
2546 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->blue_rgb_600_pga));
2547 RIE (usb_mid_front_set_rgb_signal (dev->chip));
2548 RIE (usb_low_set_red_pd (dev->chip, ideal_red_pd));
2549 RIE (usb_low_set_green_pd (dev->chip, ideal_green_pd));
2550 RIE (usb_low_set_blue_pd (dev->chip, ideal_blue_pd));
2556 usb_high_scan_prepare_mono_signal_600_dpi (Mustek_Usb_Device * dev)
2564 (dev, &ideal_red_pd, &ideal_green_pd, &ideal_blue_pd);
2566 RIE (usb_low_set_ccd_width (dev->chip, ideal_expose_time));
2567 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
2568 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
2569 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
2570 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
2571 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
2572 RIE (usb_mid_front_set_red_pga (dev->chip, dev->mono_600_pga));
2573 RIE (usb_mid_front_set_green_pga (dev->chip, dev->mono_600_pga));
2574 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->mono_600_pga));
2575 RIE (usb_mid_front_set_rgb_signal (dev->chip));
2576 RIE (usb_low_set_red_pd (dev->chip, ideal_red_pd));
2577 RIE (usb_low_set_green_pd (dev->chip, ideal_green_pd));
2578 RIE (usb_low_set_blue_pd (dev->chip, ideal_blue_pd));
2584 usb_high_scan_prepare_rgb_signal_300_dpi (Mustek_Usb_Device * dev)
2593 (dev, &ideal_red_pd, &ideal_green_pd, &ideal_blue_pd);
2595 RIE (usb_low_set_ccd_width (dev->chip, ideal_expose_time));
2596 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
2597 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
2598 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
2599 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
2600 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
2601 RIE (usb_mid_front_set_red_pga (dev->chip, dev->red_rgb_300_pga));
2602 RIE (usb_mid_front_set_green_pga (dev->chip, dev->green_rgb_300_pga));
2603 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->blue_rgb_300_pga));
2604 RIE (usb_mid_front_set_rgb_signal (dev->chip));
2605 RIE (usb_low_set_red_pd (dev->chip, ideal_red_pd));
2606 RIE (usb_low_set_green_pd (dev->chip, ideal_green_pd));
2607 RIE (usb_low_set_blue_pd (dev->chip, ideal_blue_pd));
2613 usb_high_scan_prepare_mono_signal_300_dpi (Mustek_Usb_Device * dev)
2622 (dev, &ideal_red_pd, &ideal_green_pd, &ideal_blue_pd);
2624 RIE (usb_low_set_ccd_width (dev->chip, ideal_expose_time));
2625 RIE (usb_mid_front_set_front_end_mode (dev->chip, dev->init_front_end));
2626 RIE (usb_mid_front_set_top_reference (dev->chip, dev->init_top_ref));
2627 RIE (usb_mid_front_set_red_offset (dev->chip, dev->init_red_offset));
2628 RIE (usb_mid_front_set_green_offset (dev->chip, dev->init_green_offset));
2629 RIE (usb_mid_front_set_blue_offset (dev->chip, dev->init_blue_offset));
2630 RIE (usb_mid_front_set_red_pga (dev->chip, dev->mono_300_pga));
2631 RIE (usb_mid_front_set_green_pga (dev->chip, dev->mono_300_pga));
2632 RIE (usb_mid_front_set_blue_pga (dev->chip, dev->mono_300_pga));
2633 RIE (usb_mid_front_set_rgb_signal (dev->chip));
2634 RIE (usb_low_set_red_pd (dev->chip, ideal_red_pd));
2635 RIE (usb_low_set_green_pd (dev->chip, ideal_green_pd));
2636 RIE (usb_low_set_blue_pd (dev->chip, ideal_blue_pd));
2642 usb_high_scan_prepare_rgb_24 (Mustek_Usb_Device * dev)
2647 RIE (usb_low_set_image_byte_width (dev->chip, dev->bytes_per_strip));
2648 RIE (usb_low_set_dummy (dev->chip, dev->dummy));
2649 RIE (usb_low_set_pixel_depth (dev->chip, PD_8BIT));
2655 usb_high_scan_prepare_mono_8 (Mustek_Usb_Device * dev)
2660 RIE (usb_low_set_image_byte_width (dev->chip, dev->bytes_per_strip));
2661 RIE (usb_low_set_dummy (dev->chip, dev->dummy));
2662 RIE (usb_low_set_pixel_depth (dev->chip, PD_8BIT));
2668 usb_high_scan_get_rgb_24_bit_line (Mustek_Usb_Device * dev, SANE_Byte * line,
2674 DBG (5, "usb_high_scan_get_rgb_24_bit_line: start, dev=%p, line=%p, "
2675 "is_order_invert=%d\n", (void *) dev, (void *) line, is_order_invert);
2677 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2679 RIE (usb_low_get_row (dev->chip, dev->blue, &lines_left));
2681 RIE (usb_low_get_row (dev->chip, dev->red, &lines_left));
2682 RIE (usb_high_cal_calibrate (dev->green_calibrator,
2683 dev->green + dev->skips_per_row, line + 1));
2684 RIE (usb_high_cal_calibrate (dev->blue_calibrator,
2685 dev->blue + dev->skips_per_row,
2687 RIE (usb_high_cal_calibrate (dev->red_calibrator,
2688 dev->red + dev->skips_per_row,
2697 usb_high_scan_get_mono_8_bit_line (Mustek_Usb_Device * dev, SANE_Byte * line,
2703 DBG (5, "usb_high_scan_get_mono_8_bit_line: start, dev=%p, line=%p, "
2704 "is_order_invert=%d\n", (void *) dev, (void *) line, is_order_invert);
2706 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2707 RIE (usb_high_cal_calibrate (dev->mono_calibrator, dev->green +
2708 dev->skips_per_row, line));
2714 usb_high_scan_backtrack_rgb_24 (Mustek_Usb_Device * dev)
2716 DBG (5, "usb_high_scan_backtrack_rgb_24: noop, dev=%p\n", (void *) dev);
2721 usb_high_scan_backtrack_mono_8 (Mustek_Usb_Device * dev)
2727 DBG (5, "usb_high_scan_backtrack_mono_8: start, dev=%p\n", (void *) dev);
2729 if (dev->y_dpi >= 300)
2731 RIE (usb_low_stop_rowing (dev->chip));
2732 RIE (usb_low_set_motor_direction (dev->chip, SANE_TRUE));
2733 RIE (usb_low_start_rowing (dev->chip));
2734 for (i = 0; i < dev->init_mono_8_back_track; i++)
2736 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
2739 RIE (usb_low_stop_rowing (dev->chip));
2740 RIE (usb_low_set_motor_direction (dev->chip, SANE_FALSE));
2741 RIE (usb_low_start_rowing (dev->chip));
2742 for (i = 0; i < dev->init_mono_8_back_track; i++)
2744 RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));