kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			Merge branch 'for-upstream/backend_avision_i1120' into 'master'
backend/avision: support for Kodak i1120 See merge request sane-project/backends!19merge-requests/244/head
						commit
						21a3bfad71
					
				
							
								
								
									
										1018
									
								
								backend/avision.c
								
								
								
								
							
							
						
						
									
										1018
									
								
								backend/avision.c
								
								
								
								
							
										
											
												Plik diff jest za duży
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -81,6 +81,12 @@ typedef struct Avision_Connection {
 | 
			
		|||
 | 
			
		||||
} Avision_Connection;
 | 
			
		||||
 | 
			
		||||
/* structure for ADF offsets in mm */
 | 
			
		||||
typedef struct mm_offset {
 | 
			
		||||
  double top;
 | 
			
		||||
  double bottom;
 | 
			
		||||
} mm_offset;
 | 
			
		||||
 | 
			
		||||
typedef struct Avision_HWEntry {
 | 
			
		||||
  const char* scsi_mfg;
 | 
			
		||||
  const char* scsi_model;
 | 
			
		||||
| 
						 | 
				
			
			@ -184,9 +190,6 @@ typedef struct Avision_HWEntry {
 | 
			
		|||
    /* does the scanner contain a Cancel button? */
 | 
			
		||||
  #define AV_CANCEL_BUTTON ((uint64_t)1<<28)
 | 
			
		||||
 | 
			
		||||
    /* is the rear image offset? */
 | 
			
		||||
  #define AV_REAR_OFFSET ((uint64_t)1<<29)
 | 
			
		||||
 | 
			
		||||
    /* some devices do not need a START_SCAN, even hang with it */
 | 
			
		||||
  #define AV_NO_START_SCAN ((uint64_t)1<<30)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -204,9 +207,46 @@ typedef struct Avision_HWEntry {
 | 
			
		|||
    /* For scanners which need to have their firmware read to properly function. */
 | 
			
		||||
  #define AV_FIRMWARE ((uint64_t)1<<35)
 | 
			
		||||
 | 
			
		||||
  /* at least Kodak i1120 claims no calibration needed but windows driver does it anyways */
 | 
			
		||||
  #define AV_FORCE_CALIB ((uint64_t)1<<36)
 | 
			
		||||
 | 
			
		||||
  /* at least Kodak i1120 does not have an explicit "quality-scan" mode */
 | 
			
		||||
  #define AV_NO_QSCAN_MODE ((uint64_t)1<<37)
 | 
			
		||||
 | 
			
		||||
  /* at least Kodak i1120 optical DPI is used for overscan calculation */
 | 
			
		||||
  #define AV_OVERSCAN_OPTDPI ((uint64_t)1<<38)
 | 
			
		||||
 | 
			
		||||
  /* some scanners support fast feed-out of the sheet when cancelling a running scan */
 | 
			
		||||
  #define AV_FASTFEED_ON_CANCEL ((uint64_t)1<<39)
 | 
			
		||||
 | 
			
		||||
  /* at least Kodak i1120 does not have an explicit "quality-calibration" mode */
 | 
			
		||||
  #define AV_NO_QCALIB_MODE ((uint64_t)1<<40)
 | 
			
		||||
 | 
			
		||||
  /* Kodak i1120 needs gamma = 1.0 to give decent results */
 | 
			
		||||
  #define AV_GAMMA_10 ((uint64_t)1<<41)
 | 
			
		||||
 | 
			
		||||
  /* Kodak i1120 has a different gamma table format (like a uint16/double array) */
 | 
			
		||||
  #define AV_GAMMA_UINT16 ((uint64_t)1<<42)
 | 
			
		||||
 | 
			
		||||
  /* Kodak i1120 has single-sheet and multi-sheet scan modes. This option sets
 | 
			
		||||
     bitset3[7] which enables multi-sheet scan by default so there is no pause
 | 
			
		||||
     of 1s between two sheets in ADF scan mode. This also fixes some offsets
 | 
			
		||||
     when scanning multiple sheets. */
 | 
			
		||||
  #define AV_MULTI_SHEET_SCAN ((uint64_t)1<<43)
 | 
			
		||||
 | 
			
		||||
    /* maybe more ...*/
 | 
			
		||||
  uint64_t feature_type;
 | 
			
		||||
 | 
			
		||||
  /* ADF offsets in mm */
 | 
			
		||||
  struct {
 | 
			
		||||
    float first; /* offset difference first sheet */
 | 
			
		||||
    mm_offset front; /* front-only */
 | 
			
		||||
    struct {
 | 
			
		||||
      mm_offset front;
 | 
			
		||||
      mm_offset rear;
 | 
			
		||||
    } duplex;
 | 
			
		||||
  } offset;
 | 
			
		||||
 | 
			
		||||
} Avision_HWEntry;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
| 
						 | 
				
			
			@ -301,6 +341,13 @@ enum Avision_Option
 | 
			
		|||
  NUM_OPTIONS            /* must come last */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* structure for ADF offsets in pixels of HW res */
 | 
			
		||||
typedef struct hwpx_offset {
 | 
			
		||||
  int top;
 | 
			
		||||
  int bottom;
 | 
			
		||||
} hwpx_offset;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct Avision_Dimensions
 | 
			
		||||
{
 | 
			
		||||
  /* in dpi */
 | 
			
		||||
| 
						 | 
				
			
			@ -315,7 +362,11 @@ typedef struct Avision_Dimensions
 | 
			
		|||
 | 
			
		||||
  /* in pixels */
 | 
			
		||||
  int line_difference;
 | 
			
		||||
  int rear_offset; /* in pixels of HW res */
 | 
			
		||||
 | 
			
		||||
  struct {
 | 
			
		||||
    hwpx_offset front;
 | 
			
		||||
    hwpx_offset rear;
 | 
			
		||||
  } offset;
 | 
			
		||||
 | 
			
		||||
  /* interlaced duplex scan */
 | 
			
		||||
  SANE_Bool interlaced_duplex;
 | 
			
		||||
| 
						 | 
				
			
			@ -407,6 +458,8 @@ typedef struct Avision_Device
 | 
			
		|||
  int inquiry_bits_per_channel;
 | 
			
		||||
  int inquiry_no_gray_modes;
 | 
			
		||||
 | 
			
		||||
  SANE_Bool adf_offset_compensation;
 | 
			
		||||
 | 
			
		||||
  int scsi_buffer_size; /* nice to have SCSI buffer size */
 | 
			
		||||
  int read_stripe_size; /* stripes to be read at-a-time */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -451,6 +504,7 @@ typedef struct Avision_Scanner
 | 
			
		|||
 | 
			
		||||
  /* Internal data for duplex scans */
 | 
			
		||||
  char duplex_rear_fname [PATH_MAX];
 | 
			
		||||
  char duplex_offtmp_fname [PATH_MAX];
 | 
			
		||||
  SANE_Bool duplex_rear_valid;
 | 
			
		||||
 | 
			
		||||
  color_mode c_mode;
 | 
			
		||||
| 
						 | 
				
			
			@ -670,6 +724,8 @@ typedef struct command_set_window_window
 | 
			
		|||
	uint8_t line_width_msb;
 | 
			
		||||
	uint8_t line_count_msb;
 | 
			
		||||
	uint8_t background_lines;
 | 
			
		||||
 | 
			
		||||
	uint8_t single_sheet_scan; /* from Kodak SVT tool */
 | 
			
		||||
      } normal;
 | 
			
		||||
 | 
			
		||||
      struct {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -614,6 +614,12 @@
 | 
			
		|||
:usbid "0x040a" "0x6005"
 | 
			
		||||
:status :good
 | 
			
		||||
 | 
			
		||||
:model "i1120"
 | 
			
		||||
:interface "USB"
 | 
			
		||||
:usbid "0x040a" "0x6013"
 | 
			
		||||
:comment "duplex sheetfed scanner"
 | 
			
		||||
:status :good
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
:mfg "iVina"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue