Lines Matching defs:dev

98  * . - sane_open() : open a particular scanner-device and attach_scanner(devicename,&dev)
2735 add_color_mode (Avision_Device* dev, color_mode mode, SANE_String name)
2742 if (dev->color_list [i] == 0) {
2743 dev->color_list [i] = strdup (name);
2744 dev->color_list_num [i] = mode;
2746 } else if (strcmp (dev->color_list [i], name) == 0) {
2757 last_color_mode (Avision_Device* dev)
2761 while (dev->color_list [i] != 0 && i < AV_COLOR_MODE_LAST)
2771 match_color_mode (Avision_Device* dev, SANE_String name)
2778 if (dev->color_list [i] != 0 && strcmp (dev->color_list [i], name) == 0) {
2780 i, dev->color_list_num [i]);
2781 return dev->color_list_num [i];
2809 add_source_mode (Avision_Device* dev, source_mode mode, SANE_String name)
2815 if (dev->source_list [i] == 0) {
2816 dev->source_list [i] = strdup (name);
2817 dev->source_list_num [i] = mode;
2819 } else if (strcmp (dev->source_list [i], name) == 0) {
2829 match_source_mode (Avision_Device* dev, SANE_String name)
2837 if (dev->source_list [i] != 0 && strcmp (dev->source_list [i], name) == 0) {
2839 i, dev->source_list_num [i]);
2840 return dev->source_list_num [i];
2871 Avision_Device* dev = s->hw;
2878 boundary = dev->inquiry_color_boundary;
2883 boundary = dev->inquiry_gray_boundary;
2886 if (dev->inquiry_asic_type != AV_ASIC_C5)
2889 boundary = dev->inquiry_dithered_boundary;
2892 if (dev->inquiry_asic_type != AV_ASIC_C5)
2895 boundary = dev->inquiry_thresholded_boundary;
2907 Avision_Device* dev = s->hw;
2914 dev->inquiry_duplex_interlaced;
2955 if (dev->hw->feature_type & AV_SOFT_SCALE) {
2959 dev->inquiry_asic_type == AV_ASIC_C5 ? hw_res_list_c5 : hw_res_list_generic;
3001 dev->inquiry_needs_software_colorpack &&
3002 dev->inquiry_line_difference)
3005 (dev->inquiry_line_difference * s->avdimen.hw_yres) / dev->inquiry_optical_res;
3011 long y_max = (long int) (dev->inquiry_y_ranges[s->source_mode_dim] *
3028 if (dev->inquiry_tune_scan_length && is_adf_scan (s)) {
3042 if (dev->adf_offset_compensation && s->avdimen.interlaced_duplex) {
3054 overscan = fmax(0, fmax(dev->hw->offset.duplex.front.top,
3055 dev->hw->offset.duplex.rear.top));
3057 offsets.front.top += overscan - dev->hw->offset.duplex.front.top;
3058 offsets.rear.top += overscan - dev->hw->offset.duplex.rear.top;
3062 overscan = fmax(0, fmax(dev->hw->offset.duplex.front.bottom,
3063 dev->hw->offset.duplex.rear.bottom));
3065 offsets.front.bottom += overscan - dev->hw->offset.duplex.front.bottom;
3066 offsets.rear.bottom += overscan - dev->hw->offset.duplex.rear.bottom;
3070 if (dev->hw->feature_type & AV_MULTI_SHEET_SCAN) {
3073 if (dev->hw->offset.first > 0) {
3080 offsets.front.bottom += dev->hw->offset.first;
3081 offsets.rear.bottom += dev->hw->offset.first;
3083 offsets.front.top += dev->hw->offset.first;
3084 offsets.rear.top += dev->hw->offset.first;
3087 } else if (dev->hw->offset.first < 0) {
3094 offsets.front.top += fabs(dev->hw->offset.first);
3095 offsets.rear.top += fabs(dev->hw->offset.first);
3097 offsets.front.bottom += fabs(dev->hw->offset.first);
3098 offsets.rear.bottom += fabs(dev->hw->offset.first);
3102 bry_offset += fabs(dev->hw->offset.first);
3123 } else if (dev->adf_offset_compensation && s->source_mode == AV_ADF) {
3130 if (dev->hw->offset.front.top < 0)
3131 offsets.top += fabs(dev->hw->offset.front.top);
3133 bry_offset += dev->hw->offset.front.top;
3136 if (dev->hw->offset.front.bottom < 0)
3137 offsets.bottom += fabs(dev->hw->offset.front.bottom);
3139 bry_offset += dev->hw->offset.front.bottom;
3142 if (dev->hw->feature_type & AV_MULTI_SHEET_SCAN) {
3145 if (dev->hw->offset.first > 0) {
3152 offsets.bottom += dev->hw->offset.first;
3154 offsets.top += dev->hw->offset.first;
3156 } else if (dev->hw->offset.first < 0) {
3163 offsets.top += fabs(dev->hw->offset.first);
3165 offsets.bottom += fabs(dev->hw->offset.first);
3168 bry_offset += fabs(dev->hw->offset.first);
3198 if (s->avdimen.interlaced_duplex && dev->scanner_type != AV_FILM)
3199 s->avdimen.hw_lines -= s->avdimen.hw_lines % dev->read_stripe_size;
3326 Avision_Device* dev = s->hw;
3345 set_double (rcmd.datatypequal, dev->data_dq);
3370 else if (dev->hw->feature_type & AV_LIGHT_CHECK_BOGUS) {
3385 set_double (scmd.datatypequal, dev->data_dq);
3411 Avision_Device* dev = s->hw;
3419 set_double (scmd.cmd.datatypequal, dev->data_dq);
3449 set_double (rcmd.datatypequal, 0); /* dev->data_dq not available */
3487 set_double (rcmd.datatypequal, 0); /* dev->data_dq not available */
3557 set_double (rcmd.datatypequal, 0); /* dev->data_dq not available */
3671 set_double (scmd.datatypequal, 0); /* dev->data_dq not available */
3721 Avision_Device* dev = s->hw;
3753 set_double (rcmd.datatypequal, dev->data_dq);
3771 Avision_Device* dev = s->hw;
3792 set_double (rcmd.datatypequal, dev->data_dq);
3814 dev->inquiry_adf |= result [0];
3816 if (dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX)
3820 dev->inquiry_duplex = 1;
3821 dev->inquiry_duplex_interlaced = 0;
3854 dev->inquiry_light_box = 1;
3866 Avision_Device* dev = s->hw;
3868 /* dev->sane.model
3869 dev->inquiry_asic_type */
3871 if (dev->inquiry_buttons == 1)
3875 if (strcmp (dev->sane.vendor, "Xerox") == 0 ||
3876 strcmp (dev->sane.vendor, "Visioneer") == 0 ||
3877 strcmp (dev->sane.model, "AV121") == 0 ||
3878 strcmp (dev->sane.model, "AV122") == 0
3888 if (strcmp (dev->sane.model, "AV210C2") == 0 ||
3889 strcmp (dev->sane.model, "AV210D2+") == 0 ||
3890 strcmp (dev->sane.model, "AV220C2") == 0 ||
3891 strcmp (dev->sane.model, "AV610C2") == 0
3901 if (strcmp (dev->sane.model, "AV610") == 0)
3922 Avision_Device* dev = s->hw;
3943 if (! (dev->hw->feature_type & AV_INT_BUTTON))
3949 set_double (rcmd.datatypequal, dev->data_dq);
4007 result.buttons[0] = (uint8_t) dev->inquiry_buttons; /* 1 based */
4041 if (! (dev->hw->feature_type & AV_INT_BUTTON))
4052 set_double (scmd.datatypequal, dev->data_dq);
4068 if (button >= dev->inquiry_buttons) {
4092 Avision_Device* dev = s->hw;
4109 set_double (rcmd.datatypequal, dev->data_dq);
4136 dev->holder_type = result[0];
4137 dev->current_frame = result[1];
4139 dev->frame_range.min = 1;
4140 dev->frame_range.quant = 1;
4143 dev->frame_range.max = result[2];
4145 dev->frame_range.max = 1;
4153 Avision_Device* dev = s->hw;
4177 set_double (rcmd.datatypequal, dev->data_dq);
4217 Avision_Device* dev = s->hw;
4229 if (dev->holder_type == 0xff) {
4235 if (frame != 0xff && (frame < 1 || frame > dev->frame_range.max) ) {
4237 frame, dev->frame_range.max);
4244 set_double (scmd.cmd.datatypequal, dev->data_dq);
4247 scmd.data[0] = (uint8_t) dev->holder_type;
4266 Avision_Device* dev;
4282 for (dev = first_dev; dev; dev = dev->next)
4283 if (strcmp (dev->sane.name, devname) == 0) {
4285 *devp = dev;
4418 dev = malloc (sizeof (*dev));
4419 if (!dev) {
4424 memset (dev, 0, sizeof (*dev));
4426 dev->hw = &Avision_Device_List[model_num];
4428 dev->sane.name = strdup (devname);
4429 dev->sane.vendor = dev->hw->real_mfg ? dev->hw->real_mfg : strdup (mfg);
4430 dev->sane.model = dev->hw->real_model ? dev->hw->real_model : strdup (model);
4431 dev->connection.connection_type = av_con.connection_type;
4432 dev->connection.usb_status = av_con.usb_status;
4436 dev->inquiry_asic_type = (int) result[91];
4437 if (dev->inquiry_asic_type == AV_ASIC_C6)
4627 if (dev->hw->feature_type & AV_FILMSCANNER) {
4628 dev->scanner_type = AV_FILM;
4629 dev->sane.type = "film scanner";
4632 dev->scanner_type = AV_SHEETFEED;
4633 dev->sane.type = "sheetfed scanner";
4636 dev->scanner_type = AV_FLATBED;
4637 dev->sane.type = "flatbed scanner";
4640 dev->inquiry_new_protocol = BIT (result[39],2);
4641 dev->inquiry_asic_type = (int) result[91];
4643 dev->inquiry_nvram_read = BIT(result[52],0);
4644 dev->inquiry_power_save_time = BIT(result[52],1);
4646 dev->inquiry_adf = BIT (result[62], 5);
4647 dev->inquiry_duplex = BIT (result[62], 2) || BIT (result[94], 5);
4648 dev->inquiry_duplex_interlaced = BIT(result[62],2) || BIT (result[94], 4);
4650 if (dev->inquiry_duplex && dev->inquiry_asic_type < AV_ASIC_C6)
4651 dev->inquiry_duplex_interlaced = 1;
4653 dev->inquiry_paper_length = BIT (result[95], 5);
4654 dev->inquiry_batch_scan = BIT (result[95], 0); /* AV122, DM152 */
4656 dev->inquiry_detect_accessories = BIT (result[93], 7);
4658 dev->inquiry_needs_calibration = BIT (result[50], 4);
4660 dev->inquiry_keeps_window = BIT (result[50], 1);
4662 dev->inquiry_keeps_window = 0;
4664 dev->inquiry_keeps_window = 1;
4666 dev->inquiry_needs_gamma = BIT (result[50], 3);
4667 dev->inquiry_keeps_gamma = BIT (result[50], 2);
4669 dev->inquiry_keeps_gamma = 0;
4671 dev->inquiry_keeps_gamma = 1;
4673 dev->inquiry_3x3_matrix = BIT (result[51], 1);
4674 dev->inquiry_needs_software_colorpack = BIT (result[50],5);
4676 dev->inquiry_needs_line_pack = BIT (result[94], 6);
4678 dev->inquiry_adf_need_mirror = BIT (result[51], 0);
4679 dev->inquiry_adf_bgr_order = BIT (result[93], 6);
4681 dev->inquiry_adf_bgr_order = ! dev->inquiry_adf_bgr_order;
4683 dev->inquiry_light_detect = BIT (result[93], 2);
4684 dev->inquiry_light_control = BIT (result[50], 7);
4685 dev->inquiry_button_control = BIT (result[50], 6) | BIT (result[51],2);
4687 dev->inquiry_exposure_control = BIT(result[51],7);
4688 if (dev->scanner_type != AV_FILM && !(dev->hw->feature_type & AV_FORCE_FILM))
4689 dev->inquiry_exposure_control = 0;
4690 dev->inquiry_max_shading_target = get_double ( &(result[75]) );
4692 dev->inquiry_color_boundary = result[54];
4693 if (dev->inquiry_color_boundary == 0)
4694 dev->inquiry_color_boundary = 8;
4696 dev->inquiry_gray_boundary = result[55];
4697 if (dev->inquiry_gray_boundary == 0)
4698 dev->inquiry_gray_boundary = 8;
4700 dev->inquiry_dithered_boundary = result[59];
4701 if (dev->inquiry_dithered_boundary == 0)
4702 dev->inquiry_dithered_boundary = 8;
4704 dev->inquiry_thresholded_boundary = result[57];
4705 if (dev->inquiry_thresholded_boundary == 0)
4706 dev->inquiry_thresholded_boundary = 8;
4708 dev->inquiry_line_difference = result[53];
4710 switch (dev->inquiry_asic_type)
4714 dev->inquiry_line_difference /= 2; /* HP 5300 */
4717 dev->inquiry_line_difference *= 2; /* AV610C2 */
4723 if (dev->inquiry_new_protocol) {
4724 dev->inquiry_optical_res = get_double ( &(result[89]) );
4725 dev->inquiry_max_res = get_double ( &(result[44]) );
4728 dev->inquiry_optical_res = result[37] * 100;
4729 dev->inquiry_max_res = result[38] * 100;
4733 if (dev->inquiry_optical_res > dev->inquiry_max_res) {
4735 dev->inquiry_max_res = dev->inquiry_optical_res;
4738 if (dev->inquiry_optical_res == 0)
4741 if (dev->hw->feature_type & AV_FORCE_FILM)
4742 dev->inquiry_optical_res = 2438; /* verify */
4743 if (dev->scanner_type == AV_SHEETFEED)
4744 dev->inquiry_optical_res = 300;
4746 dev->inquiry_optical_res = 600;
4748 if (dev->inquiry_max_res == 0) {
4750 dev->inquiry_max_res = 1200;
4753 DBG (1, "attach: optical resolution set to: %d dpi\n", dev->inquiry_optical_res);
4754 DBG (1, "attach: max resolution set to: %d dpi\n", dev->inquiry_max_res);
4757 dev->inquiry_channels_per_pixel = 3;
4759 dev->inquiry_channels_per_pixel = 1;
4761 dev->inquiry_channels_per_pixel = 3;
4763 dev->inquiry_channels_per_pixel = 1;
4766 dev->inquiry_bits_per_channel = 16;
4768 dev->inquiry_bits_per_channel = 12;
4770 dev->inquiry_bits_per_channel = 10;
4772 dev->inquiry_bits_per_channel = 8;
4774 dev->inquiry_bits_per_channel = 6;
4776 dev->inquiry_bits_per_channel = 4;
4778 dev->inquiry_bits_per_channel = 1;
4780 dev->inquiry_bits_per_channel = 8; /* default for old scanners */
4782 if (dev->hw->feature_type & AV_12_BIT_MODE)
4783 dev->inquiry_bits_per_channel = 12;
4785 if (! (dev->hw->feature_type & AV_GRAY_MODES))
4786 dev->inquiry_no_gray_modes = BIT(result[93],5);
4789 dev->inquiry_channels_per_pixel, dev->inquiry_bits_per_channel);
4791 if (! (dev->hw->feature_type & AV_NO_BUTTON))
4792 dev->inquiry_buttons = result[92];
4797 if (dev->scanner_type != AV_FILM) {
4804 base_dpi = dev->inquiry_optical_res;
4809 dev->inquiry_x_ranges [AV_NORMAL_DIM] =
4811 dev->inquiry_y_ranges [AV_NORMAL_DIM] =
4814 dev->inquiry_x_ranges [AV_TRANSPARENT_DIM] =
4816 dev->inquiry_y_ranges [AV_TRANSPARENT_DIM] =
4819 dev->inquiry_x_ranges [AV_ADF_DIM] =
4821 dev->inquiry_y_ranges [AV_ADF_DIM] =
4825 dev->inquiry_tune_scan_length = BIT(result[94],2);
4827 dev->inquiry_tune_scan_length = 0;
4829 dev->inquiry_background_raster = BIT(result[95],2);
4831 if (dev->hw->feature_type & AV_NO_BACKGROUND)
4832 dev->inquiry_background_raster = 0;
4834 if (dev->inquiry_background_raster) {
4835 dev->inquiry_background_raster_pixel =
4836 get_double(&(result[85])) * dev->inquiry_optical_res / AVISION_BASE_RES;
4845 if (dev->inquiry_x_ranges [mode] != 0 &&
4846 dev->inquiry_y_ranges [mode] != 0)
4851 dev->inquiry_x_ranges [mode] = A4_X_RANGE * MM_PER_INCH;
4852 dev->inquiry_y_ranges [mode] = A4_Y_RANGE * MM_PER_INCH;
4855 dev->inquiry_x_ranges [mode] = A3_X_RANGE * MM_PER_INCH;
4856 dev->inquiry_y_ranges [mode] = A3_Y_RANGE * MM_PER_INCH;
4862 if (dev->hw->feature_type & AV_FORCE_A3) {
4863 dev->inquiry_x_ranges [mode] = A3_X_RANGE * MM_PER_INCH;
4864 dev->inquiry_y_ranges [mode] = A3_Y_RANGE * MM_PER_INCH;
4866 else if (dev->hw->feature_type & AV_FORCE_FILM) {
4867 dev->inquiry_x_ranges [mode] = FILM_X_RANGE * MM_PER_INCH;
4868 dev->inquiry_y_ranges [mode] = FILM_Y_RANGE * MM_PER_INCH;
4871 dev->inquiry_x_ranges [mode] = A4_X_RANGE * MM_PER_INCH;
4873 if (dev->scanner_type == AV_SHEETFEED)
4874 dev->inquiry_y_ranges [mode] = SHEETFEED_Y_RANGE * MM_PER_INCH;
4876 dev->inquiry_y_ranges [mode] = A4_Y_RANGE * MM_PER_INCH;
4881 dev->inquiry_x_ranges [mode], dev->inquiry_y_ranges [mode]);
4889 dev->scsi_buffer_size = 1024 * 1024; /* or 0x10000, used by AV Windows driver during background raster read, ... ? */
4891 dev->scsi_buffer_size = sanei_scsi_max_request_size;
4893 if (dev->inquiry_asic_type > AV_ASIC_C7 && dev->inquiry_asic_type < AV_ASIC_OA980)
4894 dev->read_stripe_size = 16;
4895 else if (dev->inquiry_asic_type >= AV_ASIC_C5)
4896 dev->read_stripe_size = 32;
4898 dev->read_stripe_size = 8; /* maybe made dynamic on scan res ... */
4901 if (dev->inquiry_new_protocol) /* TODO: match on ASIC? which model hung? */
4902 dev->data_dq = 0x0a0d;
4904 dev->data_dq = 0;
4909 dev->next = first_dev;
4910 first_dev = dev;
4912 *devp = dev;
4967 Avision_Device* dev = s->hw;
4994 if (dev->hw->feature_type & AV_OVERSCAN_OPTDPI)
4995 dpi = dev->inquiry_optical_res;
5001 if (dev->adf_offset_compensation) {
5003 offset += fmax(0, fmax(dev->hw->offset.duplex.front.top,
5004 dev->hw->offset.duplex.rear.top) );
5006 offset += fmax(0, dev->hw->offset.front.top);
5009 if (dev->hw->offset.first > 0)
5010 offset += dev->hw->offset.first;
5039 if (dev->adf_offset_compensation) {
5041 offset += fmax(0, fmax(dev->hw->offset.duplex.front.bottom,
5042 dev->hw->offset.duplex.rear.bottom) );
5044 offset += fmax(0, dev->hw->offset.front.bottom);
5047 if (dev->hw->offset.first < 0)
5048 offset += fabs(dev->hw->offset.first);
5074 Avision_Device* dev = s->hw;
5081 if (dev->inquiry_detect_accessories) {
5088 if (dev->scanner_type == AV_FILM) {
5095 if (0 && dev->inquiry_duplex) {
5102 if (0 && dev->inquiry_tune_scan_length) {
5109 if (!dev->inquiry_no_gray_modes)
5111 if (dev->inquiry_bits_per_channel > 0) {
5112 add_color_mode (dev, AV_THRESHOLDED, SANE_VALUE_SCAN_MODE_LINEART);
5113 add_color_mode (dev, AV_DITHERED, "Dithered");
5116 if (dev->inquiry_bits_per_channel >= 8)
5117 add_color_mode (dev, AV_GRAYSCALE, SANE_VALUE_SCAN_MODE_GRAY);
5119 if (dev->inquiry_bits_per_channel == 12)
5120 add_color_mode (dev, AV_GRAYSCALE12, "12bit Gray");
5122 if (dev->inquiry_bits_per_channel >= 16)
5123 add_color_mode (dev, AV_GRAYSCALE16, "16bit Gray");
5126 if (dev->inquiry_channels_per_pixel > 1) {
5127 add_color_mode (dev, AV_TRUECOLOR, SANE_VALUE_SCAN_MODE_COLOR);
5129 if (dev->inquiry_bits_per_channel == 12)
5130 add_color_mode (dev, AV_TRUECOLOR12, "12bit Color");
5132 if (dev->inquiry_bits_per_channel >= 16)
5133 add_color_mode (dev, AV_TRUECOLOR16, "16bit Color");
5137 dev->color_list_default = last_color_mode (dev);
5138 if (dev->inquiry_bits_per_channel > 8 && dev->color_list_default > 0) {
5139 dev->color_list_default--;
5142 if (dev->scanner_type == AV_SHEETFEED)
5144 add_source_mode (dev, AV_ADF, "ADF Front");
5148 add_source_mode (dev, AV_NORMAL, "Normal");
5150 if (dev->inquiry_light_box)
5151 add_source_mode (dev, AV_TRANSPARENT, "Transparency");
5153 if (dev->inquiry_adf)
5154 add_source_mode (dev, AV_ADF, "ADF Front");
5157 if (dev->inquiry_duplex) {
5158 if (dev->inquiry_duplex_interlaced && !(dev->hw->feature_type & AV_NO_REAR))
5159 add_source_mode (dev, AV_ADF_REAR, "ADF Back");
5160 add_source_mode (dev, AV_ADF_DUPLEX, "ADF Duplex");
5286 Avision_Device* dev = s->hw;
5308 if (dev->hw->feature_type & AV_GRAY_CALIB_BLUE)
5338 ( ( (dev->hw->feature_type & AV_ONE_CALIB_CMD) ||
5340 ! (dev->hw->feature_type & AV_MULTI_CALIB_CMD) ) )
5776 Avision_Device* dev = s->hw;
5797 if (dev->inquiry_asic_type != AV_ASIC_OA980)
5800 switch (dev->inquiry_asic_type)
6212 Avision_Device* dev = s->hw;
6230 switch (dev->inquiry_asic_type) {
6235 if (base_dpi_rel > dev->inquiry_optical_res)
6236 base_dpi_rel = dev->inquiry_optical_res;
6256 if (dev->hw->feature_type & AV_FUJITSU)
6258 else if (!dev->inquiry_new_protocol)
6260 else if (dev->hw->feature_type & AV_MULTI_SHEET_SCAN)
6294 if (s->avdimen.interlaced_duplex && dev->scanner_type != AV_FILM) {
6305 if (dev->inquiry_new_protocol && !(dev->hw->feature_type & AV_FUJITSU) ) {
6313 if (dev->inquiry_background_raster)
6332 if (dev->hw->feature_type & AV_MULTI_SHEET_SCAN) {
6340 if (dev->inquiry_duplex_interlaced) {
6363 if ( !(dev->hw->feature_type & AV_FUJITSU) )
6367 !(dev->hw->feature_type & AV_NO_QSCAN_MODE)) {
6373 !(dev->hw->feature_type & AV_NO_QCALIB_MODE)) {
6382 if (dev->scanner_type == AV_FILM) {
6462 if (dev->hw->feature_type & AV_FASTER_WITH_FILTER)
6464 else if (dev->hw->feature_type & AV_USE_GRAY_FILTER)
6484 Avision_Device* dev = s->hw;
6503 bytes_per_line = dev->inquiry_background_raster_pixel *
6504 s->avdimen.hw_xres / dev->inquiry_optical_res;
6508 dev->inquiry_background_raster_pixel, bytes_per_line);
6538 if (dev->hw->feature_type & AV_2ND_LINE_INTERLACED) {
6539 if (dev->hw->feature_type & AV_BACKGROUND_QUIRK)
6579 if (dev->inquiry_needs_line_pack)
6605 if (s->avdimen.interlaced_duplex && (dev->hw->feature_type & AV_2ND_LINE_INTERLACED))
6618 if ((dev->hw->feature_type & AV_BACKGROUND_QUIRK) && (s->avdimen.hw_xres >= 150))
6791 Avision_Device* dev = s->hw;
6794 if (s->source_mode_dim == AV_ADF_DIM && dev->inquiry_batch_scan)
6951 Avision_Device* dev = s->hw;
6966 switch (dev->inquiry_asic_type) {
6968 dev->dpi_range.min = 100;
6971 dev->dpi_range.min = 80;
6975 dev->dpi_range.min = 60;
6978 dev->dpi_range.min = 75;
6981 dev->dpi_range.min = 50;
6983 DBG (1, "init_options: dpi_range.min set to %d\n", dev->dpi_range.min);
6985 dev->dpi_range.quant = 1; /* any, including 72, 144, etc. */
6986 dev->dpi_range.max = dev->inquiry_max_res;
6988 dev->speed_range.min = (SANE_Int)0;
6989 dev->speed_range.max = (SANE_Int)4;
6990 dev->speed_range.quant = (SANE_Int)1;
7013 s->opt[OPT_MODE].size = (SANE_Int) max_string_size (dev->color_list);
7015 s->opt[OPT_MODE].constraint.string_list = dev->color_list;
7016 s->val[OPT_MODE].s = strdup (dev->color_list[dev->color_list_default]);
7017 s->c_mode = match_color_mode (dev, s->val[OPT_MODE].s);
7024 s->opt[OPT_SOURCE].size = (SANE_Int) max_string_size(dev->source_list);
7026 s->opt[OPT_SOURCE].constraint.string_list = &dev->source_list[0];
7027 s->val[OPT_SOURCE].s = strdup(dev->source_list[0]);
7028 s->source_mode = match_source_mode (dev, s->val[OPT_SOURCE].s);
7031 dev->x_range.max = SANE_FIX ( (int)dev->inquiry_x_ranges[s->source_mode_dim]);
7032 dev->x_range.quant = 0;
7033 dev->y_range.max = SANE_FIX ( (int)dev->inquiry_y_ranges[s->source_mode_dim]);
7034 dev->y_range.quant = 0;
7043 s->opt[OPT_RESOLUTION].constraint.range = &dev->dpi_range;
7059 s->opt[OPT_SPEED].constraint.range = &dev->speed_range;
7061 if (dev->scanner_type == AV_SHEETFEED)
7079 s->opt[OPT_TL_X].constraint.range = &dev->x_range;
7089 s->opt[OPT_TL_Y].constraint.range = &dev->y_range;
7099 s->opt[OPT_BR_X].constraint.range = &dev->x_range;
7100 s->val[OPT_BR_X].w = dev->x_range.max;
7109 s->opt[OPT_BR_Y].constraint.range = &dev->y_range;
7110 s->val[OPT_BR_Y].w = dev->y_range.max;
7132 if (!dev->inquiry_tune_scan_length)
7134 if (!dev->inquiry_tune_scan_length)
7147 if (!dev->inquiry_background_raster) {
7190 if (dev->hw->feature_type & AV_NO_QSCAN_MODE)
7200 if (dev->hw->feature_type & AV_NO_QCALIB_MODE)
7273 if (!dev->inquiry_exposure_control) {
7287 if (!dev->inquiry_exposure_control) {
7301 if (!dev->inquiry_exposure_control) {
7314 if (dev->scanner_type != AV_FILM)
7322 s->opt[OPT_FRAME].constraint.range = &dev->frame_range;
7323 s->val[OPT_FRAME].w = dev->current_frame;
7326 if (!dev->inquiry_power_save_time)
7349 if (!dev->inquiry_nvram_read)
7363 if (!dev->inquiry_paper_length)
7407 Avision_Device* dev = s->hw;
7487 if ( (dev->hw->feature_type & AV_NON_INTERLACED_DUPLEX_300) &&
7490 if (dev->hw->feature_type & AV_2ND_LINE_INTERLACED)
7493 if (dev->scanner_type == AV_FILM)
7501 if (dev->adf_offset_compensation) {
7528 if ((deinterlace == NONE && !((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && s->duplex_rear_valid)) ||
7541 if (dev->hw->feature_type & AV_NO_START_SCAN) {
7553 if (dev->hw->feature_type & AV_ACCEL_TABLE)
7566 (dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX && s->source_mode == AV_ADF_DUPLEX && !(s->page % 2)))
7584 lines_per_stripe = (unsigned int) dev->read_stripe_size;
7593 max_bytes_per_read = (unsigned int) dev->scsi_buffer_size / 2;
7600 DBG (3, "dev->scsi_buffer_size / 2: %d\n",
7601 dev->scsi_buffer_size / 2);
7649 if (dev->inquiry_background_raster && s->val[OPT_BACKGROUND].w)
7710 if (dev->inquiry_asic_type > AV_ASIC_C7 && dev->inquiry_asic_type < AV_ASIC_OA980) {
7807 if ((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && !(s->page % 2) && !s->duplex_rear_valid) {
7853 else if (dev->inquiry_needs_line_pack) /* line-pack */
7881 if (s->source_mode_dim == AV_ADF_DIM && dev->inquiry_adf_need_mirror)
7884 (s->c_mode == AV_TRUECOLOR && dev->inquiry_adf_bgr_order) )
8185 if (dev->adf_offset_compensation) {
8216 ((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && !(s->page % 2) && s->duplex_rear_valid))
8223 if (dev->hw->feature_type & AV_CANCEL_BUTTON) {
8228 if (dev->inquiry_new_protocol && dev->scanner_type == AV_FILM) {
8239 if ((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && s->page % 2) {
8291 attach_one_scsi (const char* dev)
8293 attach (dev, AV_SCSI, 0);
8299 attach_one_usb (const char* dev)
8301 attach (dev, AV_USB, 0);
8510 Avision_Device* dev;
8515 for (dev = first_dev; dev; dev = next) {
8516 next = dev->next;
8518 free ((void*)(size_t) dev->sane.name);
8520 free (dev);
8531 Avision_Device* dev;
8548 for (dev = first_dev; i < num_devices; dev = dev->next)
8549 devlist[i++] = &dev->sane;
8559 Avision_Device* dev;
8568 for (dev = first_dev; dev; dev = dev->next)
8569 if (strcmp (dev->sane.name, devicename) == 0)
8572 if (dev) {
8573 status = attach (devicename, dev->connection.connection_type, &dev);
8579 dev = first_dev;
8582 if (!dev)
8594 s->av_con.connection_type = dev->connection.connection_type;
8595 s->av_con.usb_status = dev->connection.usb_status;
8602 s->hw = dev;
8637 &(dev->scsi_buffer_size));
8646 DBG (1, "sane_open: got %d scsi_max_request_size\n", dev->scsi_buffer_size);
8673 if (dev->inquiry_duplex_interlaced &&
8674 (dev->hw->offset.first != 0 ||
8675 dev->hw->offset.front.top != 0 ||
8676 dev->hw->offset.front.bottom != 0 ||
8677 dev->hw->offset.duplex.front.top != 0 ||
8678 dev->hw->offset.duplex.front.bottom != 0 ||
8679 dev->hw->offset.duplex.rear.top != 0 ||
8680 dev->hw->offset.duplex.rear.bottom != 0) )
8681 dev->adf_offset_compensation = SANE_TRUE;
8683 if (dev->inquiry_duplex_interlaced || dev->scanner_type == AV_FILM ||
8684 dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) {
8702 if (dev->scanner_type == AV_FILM)
8705 s->val[OPT_RESOLUTION].w = dev->inquiry_optical_res;
8718 if (!(dev->hw->feature_type & AV_NO_CALIB))
8728 if (dev->scanner_type == AV_FILM) {
8813 Avision_Device* dev = s->hw;
8898 if (dev->inquiry_button_control || dev->inquiry_buttons)
8971 s->source_mode = match_source_mode (dev, s->val[option].s);
8975 dev->x_range.max =
8976 SANE_FIX ( dev->inquiry_x_ranges[s->source_mode_dim]);
8977 dev->y_range.max =
8978 SANE_FIX ( dev->inquiry_y_ranges[s->source_mode_dim]);
8997 s->c_mode = match_color_mode (dev, s->val[OPT_MODE].s);
9029 dev->current_frame = frame;
9088 Avision_Device* dev = s->hw;
9133 if (dev->inquiry_light_control) {
9141 if (s->page > 0 && dev->inquiry_keeps_window) {
9154 if (s->prepared == SANE_FALSE && dev->inquiry_light_control) {
9164 if (dev->inquiry_new_protocol)
9198 if (!dev->inquiry_new_protocol) {
9203 if (!dev->inquiry_needs_calibration) {
9209 if (dev->hw->feature_type & AV_NO_CALIB) {
9215 if (dev->scanner_type == AV_FILM) {
9241 if (dev->inquiry_3x3_matrix && dev->inquiry_asic_type >= AV_ASIC_C6 &&
9256 if (dev->hw->feature_type & AV_NO_GAMMA) {
9261 if (s->page > 0 && dev->inquiry_keeps_gamma)
9275 if (dev->inquiry_tune_scan_length && is_adf_scan (s)) {
9287 if (s->page == 0 && dev->inquiry_background_raster) {
9297 if (dev->scanner_type == AV_FILM && dev->holder_type == 0xff) {
9302 if (dev->inquiry_new_protocol) {