kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			
		
			
				
	
	
		
			650 wiersze
		
	
	
		
			33 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			650 wiersze
		
	
	
		
			33 KiB
		
	
	
	
		
			C
		
	
	
/* sane - Scanner Access Now Easy.
 | 
						|
 | 
						|
   Copyright (C) 2010-2011 Stéphane Voltz <stef.dev@free.fr>
 | 
						|
 | 
						|
   This file is part of the SANE package.
 | 
						|
   
 | 
						|
   This program is free software; you can redistribute it and/or
 | 
						|
   modify it under the terms of the GNU General Public License as
 | 
						|
   published by the Free Software Foundation; either version 2 of the
 | 
						|
   License, or (at your option) any later version.
 | 
						|
   
 | 
						|
   This program is distributed in the hope that it will be useful, but
 | 
						|
   WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
   General Public License for more details.
 | 
						|
   
 | 
						|
   You should have received a copy of the GNU General Public License
 | 
						|
   along with this program; if not, write to the Free Software
 | 
						|
   Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 | 
						|
   MA 02111-1307, USA.
 | 
						|
   
 | 
						|
   As a special exception, the authors of SANE give permission for
 | 
						|
   additional uses of the libraries contained in this release of SANE.
 | 
						|
   
 | 
						|
   The exception is that, if you link a SANE library with other files
 | 
						|
   to produce an executable, this does not by itself cause the
 | 
						|
   resulting executable to be covered by the GNU General Public
 | 
						|
   License.  Your use of that executable is in no way restricted on
 | 
						|
   account of linking the SANE library code into it.
 | 
						|
   
 | 
						|
   This exception does not, however, invalidate any other reasons why
 | 
						|
   the executable file might be covered by the GNU General Public
 | 
						|
   License.
 | 
						|
   
 | 
						|
   If you submit changes to SANE to the maintainers to be included in
 | 
						|
   a subsequent release, you agree by submitting the changes that
 | 
						|
   those changes may be distributed with this exception intact.
 | 
						|
 | 
						|
   If you write modifications of your own for SANE, it is your choice
 | 
						|
   whether to permit this exception to apply to your modifications.
 | 
						|
   If you do not wish that, delete this exception notice. 
 | 
						|
*/
 | 
						|
#include "../include/sane/config.h"
 | 
						|
 | 
						|
#include <errno.h>
 | 
						|
#include <string.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <math.h>
 | 
						|
 | 
						|
#include "../include/sane/sane.h"
 | 
						|
#include "../include/sane/sanei.h"
 | 
						|
#include "../include/sane/saneopts.h"
 | 
						|
 | 
						|
#ifndef HACK
 | 
						|
#undef BACKEND_NAME
 | 
						|
#define BACKEND_NAME genesys_gl843
 | 
						|
#endif
 | 
						|
 | 
						|
#include "../include/sane/sanei_backend.h"
 | 
						|
#include "../include/sane/sanei_config.h"
 | 
						|
#include "../include/sane/sanei_usb.h"
 | 
						|
 | 
						|
#include "../include/_stdint.h"
 | 
						|
#include "genesys.h"
 | 
						|
 | 
						|
#ifdef UNIT_TESTING
 | 
						|
SANE_Status gl843_send_slope_table (Genesys_Device * dev, int table_nr, uint16_t * slope_table, int steps);
 | 
						|
SANE_Status gl843_init_scan_regs (Genesys_Device * dev,
 | 
						|
                      Genesys_Register_Set * reg,
 | 
						|
                      float xres,	/*dpi */
 | 
						|
		      float yres,	/*dpi */
 | 
						|
		      float startx,	/*optical_res, from dummy_pixel+1 */
 | 
						|
		      float starty,	/*base_ydpi, from home! */
 | 
						|
		      float pixels,
 | 
						|
		      float lines,
 | 
						|
		      unsigned int depth,
 | 
						|
		      unsigned int channels,
 | 
						|
		      int scan_mode,
 | 
						|
		      int color_filter,
 | 
						|
                      unsigned int flags);
 | 
						|
SANE_Status gl843_start_action (Genesys_Device * dev);
 | 
						|
SANE_Status gl843_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool start_motor);
 | 
						|
SANE_Status gl843_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool check_stop);
 | 
						|
SANE_Status gl843_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
 | 
						|
SANE_Status gl843_feed (Genesys_Device * dev, unsigned int steps);
 | 
						|
SANE_Status gl843_init (Genesys_Device * dev);
 | 
						|
SANE_Status gl843_send_shading_data (Genesys_Device * dev, uint8_t * data, int size);
 | 
						|
SANE_Status gl843_bulk_write_register (Genesys_Device * dev, Genesys_Register_Set * reg, size_t elems);
 | 
						|
#endif
 | 
						|
 | 
						|
#define DBGSTART DBG (DBG_proc, "%s start\n", __FUNCTION__);
 | 
						|
#define DBGCOMPLETED DBG (DBG_proc, "%s completed\n", __FUNCTION__);
 | 
						|
 | 
						|
#define REG01           0x01
 | 
						|
#define REG01_CISSET	0x80
 | 
						|
#define REG01_DOGENB	0x40
 | 
						|
#define REG01_DVDSET	0x20
 | 
						|
#define REG01_STAGGER   0x10
 | 
						|
#define REG01_COMPENB	0x08
 | 
						|
#define REG01_TRUEGRAY  0x04
 | 
						|
#define REG01_SHDAREA	0x02
 | 
						|
#define REG01_SCAN	0x01
 | 
						|
 | 
						|
#define REG02        	0x02
 | 
						|
#define REG02_NOTHOME	0x80
 | 
						|
#define REG02_ACDCDIS	0x40
 | 
						|
#define REG02_AGOHOME	0x20
 | 
						|
#define REG02_MTRPWR	0x10
 | 
						|
#define REG02_FASTFED	0x08
 | 
						|
#define REG02_MTRREV	0x04
 | 
						|
#define REG02_HOMENEG	0x02
 | 
						|
#define REG02_LONGCURV	0x01
 | 
						|
 | 
						|
#define REG03           0x03
 | 
						|
#define REG03_LAMPDOG	0x80
 | 
						|
#define REG03_AVEENB	0x40
 | 
						|
#define REG03_XPASEL	0x20
 | 
						|
#define REG03_LAMPPWR	0x10
 | 
						|
#define REG03_LAMPTIM	0x0f
 | 
						|
 | 
						|
#define REG04        	0x04
 | 
						|
#define REG04_LINEART	0x80
 | 
						|
#define REG04_BITSET	0x40
 | 
						|
#define REG04_AFEMOD	0x30
 | 
						|
#define REG04_FILTER	0x0c
 | 
						|
#define REG04_FESET	0x03
 | 
						|
 | 
						|
#define REG04S_AFEMOD   4
 | 
						|
 | 
						|
#define REG05 		0x05
 | 
						|
#define REG05_DPIHW	0xc0
 | 
						|
#define REG05_DPIHW_600	0x00
 | 
						|
#define REG05_DPIHW_1200	0x40
 | 
						|
#define REG05_DPIHW_2400	0x80
 | 
						|
#define REG05_DPIHW_4800	0xc0
 | 
						|
#define REG05_MTLLAMP	0x30
 | 
						|
#define REG05_GMMENB	0x08
 | 
						|
#define REG05_MTLBASE	0x03
 | 
						|
 | 
						|
#define REG06 		0x06
 | 
						|
#define REG06_SCANMOD	0xe0
 | 
						|
#define REG06S_SCANMOD	5
 | 
						|
#define REG06_PWRBIT	0x10
 | 
						|
#define REG06_GAIN4	0x08
 | 
						|
#define REG06_OPTEST	0x07
 | 
						|
 | 
						|
#define	REG07_LAMPSIM	0x80
 | 
						|
 | 
						|
#define REG08_DECFLAG 	0x40
 | 
						|
#define REG08_GMMFFR    0x20
 | 
						|
#define REG08_GMMFFG    0x10
 | 
						|
#define REG08_GMMFFB	0x08
 | 
						|
#define REG08_GMMZR     0x04
 | 
						|
#define REG08_GMMZG     0x02
 | 
						|
#define REG08_GMMZB     0x01
 | 
						|
 | 
						|
#define REG09_MCNTSET	0xc0
 | 
						|
#define REG09_EVEN1ST   0x20
 | 
						|
#define REG09_BLINE1ST  0x10
 | 
						|
#define REG09_BACKSCAN	0x08
 | 
						|
#define REG09_ENHANCE	0x04
 | 
						|
#define REG09_SHORTTG	0x02
 | 
						|
#define REG09_NWAIT	0x01
 | 
						|
 | 
						|
#define REG09S_MCNTSET  6
 | 
						|
#define REG09S_CLKSET   4
 | 
						|
 | 
						|
#define REG0B           0x0b
 | 
						|
#define REG0B_DRAMSEL   0x07
 | 
						|
#define REG0B_ENBDRAM   0x08
 | 
						|
#define REG0B_ENBDRAM   0x08
 | 
						|
#define REG0B_RFHDIS    0x10
 | 
						|
#define REG0B_CLKSET    0xe0
 | 
						|
#define REG0B_24MHZ     0x00
 | 
						|
#define REG0B_30MHZ     0x20
 | 
						|
#define REG0B_40MHZ     0x40
 | 
						|
#define REG0B_48MHZ     0x60
 | 
						|
#define REG0B_60MHZ     0x80
 | 
						|
 | 
						|
#define REG0D 		0x0d
 | 
						|
#define REG0D_JAMPCMD   0x80
 | 
						|
#define REG0D_DOCCMD    0x40
 | 
						|
#define REG0D_CCDCMD    0x20
 | 
						|
#define REG0D_FULLSTP   0x10
 | 
						|
#define REG0D_SEND      0x08
 | 
						|
#define REG0D_CLRMCNT   0x04
 | 
						|
#define REG0D_CLRDOCJM  0x02
 | 
						|
#define REG0D_CLRLNCNT	0x01
 | 
						|
 | 
						|
#define REG0F 		0x0f
 | 
						|
 | 
						|
#define REG_EXPR        0x10
 | 
						|
#define REG_EXPG        0x12
 | 
						|
#define REG_EXPB        0x14
 | 
						|
 | 
						|
#define REG16_CTRLHI	0x80
 | 
						|
#define REG16_TOSHIBA	0x40
 | 
						|
#define REG16_TGINV	0x20
 | 
						|
#define REG16_CK1INV	0x10
 | 
						|
#define REG16_CK2INV	0x08
 | 
						|
#define REG16_CTRLINV	0x04
 | 
						|
#define REG16_CKDIS	0x02
 | 
						|
#define REG16_CTRLDIS	0x01
 | 
						|
 | 
						|
#define REG17_TGMODE	0xc0
 | 
						|
#define REG17_TGMODE_NO_DUMMY	0x00
 | 
						|
#define REG17_TGMODE_REF	0x40
 | 
						|
#define REG17_TGMODE_XPA	0x80
 | 
						|
#define REG17_TGW	0x3f
 | 
						|
#define REG17S_TGW      0
 | 
						|
 | 
						|
#define REG18 		0x18
 | 
						|
#define REG18_CNSET	0x80
 | 
						|
#define REG18_DCKSEL	0x60
 | 
						|
#define REG18_CKTOGGLE	0x10
 | 
						|
#define REG18_CKDELAY	0x0c
 | 
						|
#define REG18_CKSEL	0x03
 | 
						|
 | 
						|
#define REG_EXPDMY      0x19
 | 
						|
 | 
						|
#define REG1A_TGLSW2 	0x80
 | 
						|
#define REG1A_TGLSW1 	0x40
 | 
						|
#define REG1A_MANUAL3	0x02
 | 
						|
#define REG1A_MANUAL1	0x01
 | 
						|
#define REG1A_CK4INV	0x08
 | 
						|
#define REG1A_CK3INV	0x04
 | 
						|
#define REG1A_LINECLP	0x02
 | 
						|
 | 
						|
#define REG1C           0x1c
 | 
						|
#define REG1C_TGTIME    0x07
 | 
						|
 | 
						|
#define REG1D_CK4LOW	0x80
 | 
						|
#define REG1D_CK3LOW	0x40
 | 
						|
#define REG1D_CK1LOW	0x20
 | 
						|
#define REG1D_TGSHLD	0x1f
 | 
						|
#define REG1DS_TGSHLD   0
 | 
						|
 | 
						|
 | 
						|
#define REG1E           0x1e
 | 
						|
#define REG1E_WDTIME	0xf0
 | 
						|
#define REG1ES_WDTIME   4
 | 
						|
#define REG1E_LINESEL	0x0f
 | 
						|
#define REG1ES_LINESEL  0
 | 
						|
 | 
						|
#define REG21           0x21
 | 
						|
#define REG_STEPNO      0x21
 | 
						|
#define REG_FWDSTEP     0x22
 | 
						|
#define REG_BWDSTEP     0x23
 | 
						|
#define REG_FASTNO      0x24
 | 
						|
#define REG_LINCNT      0x25
 | 
						|
 | 
						|
#define REG29           0x29
 | 
						|
#define REG2A           0x2a
 | 
						|
#define REG2B           0x2b
 | 
						|
#define REG_DPISET      0x2c
 | 
						|
#define REG2E           0x2e
 | 
						|
#define REG2F           0x2f
 | 
						|
 | 
						|
#define REG_STRPIXEL    0x30
 | 
						|
#define REG_ENDPIXEL    0x32
 | 
						|
#define REG_DUMMY       0x34
 | 
						|
#define REG_MAXWD       0x35
 | 
						|
#define REG_LPERIOD     0x38
 | 
						|
#define REG_FEEDL       0x3d
 | 
						|
 | 
						|
#define REG40           0x40
 | 
						|
#define REG40_DOCSNR    0x80
 | 
						|
#define REG40_ADFSNR    0x40
 | 
						|
#define REG40_COVERSNR  0x20
 | 
						|
#define REG40_CHKVER    0x10
 | 
						|
#define REG40_DOCJAM    0x08
 | 
						|
#define REG40_HISPDFLG  0x04
 | 
						|
#define REG40_MOTMFLG   0x02
 | 
						|
#define REG40_DATAENB   0x01
 | 
						|
 | 
						|
#define REG41_PWRBIT	0x80
 | 
						|
#define REG41_BUFEMPTY	0x40
 | 
						|
#define REG41_FEEDFSH	0x20
 | 
						|
#define REG41_SCANFSH	0x10
 | 
						|
#define REG41_HOMESNR	0x08
 | 
						|
#define REG41_LAMPSTS	0x04
 | 
						|
#define REG41_FEBUSY	0x02
 | 
						|
#define REG41_MOTORENB	0x01
 | 
						|
 | 
						|
#define REG58_VSMP      0xf8
 | 
						|
#define REG58S_VSMP     3
 | 
						|
#define REG58_VSMPW     0x07
 | 
						|
#define REG58S_VSMPW    0
 | 
						|
 | 
						|
#define REG59_BSMP      0xf8
 | 
						|
#define REG59S_BSMP     3
 | 
						|
#define REG59_BSMPW     0x07
 | 
						|
#define REG59S_BSMPW    0
 | 
						|
 | 
						|
#define REG5A_ADCLKINV  0x80
 | 
						|
#define REG5A_RLCSEL    0x40
 | 
						|
#define REG5A_CDSREF    0x30
 | 
						|
#define REG5AS_CDSREF   4
 | 
						|
#define REG5A_RLC       0x0f
 | 
						|
#define REG5AS_RLC      0
 | 
						|
 | 
						|
#define REG5E 		0x5e
 | 
						|
#define REG5E_DECSEL    0xe0
 | 
						|
#define REG5ES_DECSEL   5
 | 
						|
#define REG5E_STOPTIM   0x1f
 | 
						|
#define REG5ES_STOPTIM  0
 | 
						|
 | 
						|
#define REG_FMOVDEC     0x5f
 | 
						|
 | 
						|
#define REG60           0x60
 | 
						|
#define REG60_Z1MOD	0x1f
 | 
						|
#define REG61           0x61
 | 
						|
#define REG61_Z1MOD	0xff
 | 
						|
#define REG62           0x62
 | 
						|
#define REG62_Z1MOD	0xff
 | 
						|
 | 
						|
#define REG63           0x63
 | 
						|
#define REG63_Z2MOD	0x1f
 | 
						|
#define REG64           0x64
 | 
						|
#define REG64_Z2MOD	0xff
 | 
						|
#define REG65           0x65
 | 
						|
#define REG65_Z2MOD	0xff
 | 
						|
 | 
						|
#define REG67 		0x67
 | 
						|
 | 
						|
#define REG68 		0x68
 | 
						|
 | 
						|
#define REG67S_STEPSEL      6
 | 
						|
#define REG67_STEPSEL	 0xc0
 | 
						|
#define REG67_FULLSTEP	 0x00
 | 
						|
#define REG67_HALFSTEP	 0x20
 | 
						|
#define REG67_EIGHTHSTEP 0x60
 | 
						|
#define REG67_16THSTEP   0x80
 | 
						|
 | 
						|
#define REG68S_FSTPSEL      6
 | 
						|
#define REG68_FSTPSEL	 0xc0
 | 
						|
#define REG68_FULLSTEP	 0x00
 | 
						|
#define REG68_HALFSTEP	 0x20
 | 
						|
#define REG68_EIGHTHSTEP 0x60
 | 
						|
#define REG68_16THSTEP   0x80
 | 
						|
 | 
						|
#define REG_FSHDEC     	0x69
 | 
						|
#define REG_FMOVNO     	0x6a
 | 
						|
 | 
						|
#define REG6B          	0x6b
 | 
						|
#define REG6B_MULTFILM	0x80
 | 
						|
#define REG6B_GPOM13	0x40
 | 
						|
#define REG6B_GPOM12	0x20
 | 
						|
#define REG6B_GPOM11	0x10
 | 
						|
#define REG6B_GPO18	0x02
 | 
						|
#define REG6B_GPO17	0x01
 | 
						|
 | 
						|
#define REG6C           0x6c
 | 
						|
#define REG6C_GPIO16    0x80
 | 
						|
#define REG6C_GPIO15    0x40
 | 
						|
#define REG6C_GPIO14    0x20
 | 
						|
#define REG6C_GPIO13    0x10
 | 
						|
#define REG6C_GPIO12    0x08
 | 
						|
#define REG6C_GPIO11    0x04
 | 
						|
#define REG6C_GPIO10    0x02
 | 
						|
#define REG6C_GPIO9     0x01
 | 
						|
#define REG6C_GPIOH	0xff
 | 
						|
#define REG6C_GPIOL	0xff
 | 
						|
 | 
						|
#define REG_Z1MOD       0x60
 | 
						|
#define REG_Z2MOD       0x63
 | 
						|
 | 
						|
#define REG6D           0x6d
 | 
						|
#define REG6E           0x6e
 | 
						|
#define REG6F           0x6f
 | 
						|
 | 
						|
#define REG_CK1MAP      0x74
 | 
						|
#define REG_CK3MAP      0x77
 | 
						|
#define REG_CK4MAP      0x7a
 | 
						|
 | 
						|
#define REG9D           0x9d
 | 
						|
#define REG9DS_STEPTIM  2
 | 
						|
 | 
						|
#define REG87_LEDADD    0x04
 | 
						|
 | 
						|
#define REGA6   	0xa6
 | 
						|
#define REGA7 		0xa7
 | 
						|
#define REGA8 		0xa8
 | 
						|
#define REGA9 		0xa9
 | 
						|
 | 
						|
#define SCAN_TABLE 	0 	/* table 1 at 0x4000 */
 | 
						|
#define BACKTRACK_TABLE 1 	/* table 2 at 0x4800 */
 | 
						|
#define STOP_TABLE 	2 	/* table 3 at 0x5000 */
 | 
						|
#define FAST_TABLE 	3 	/* table 4 at 0x5800 */
 | 
						|
#define HOME_TABLE 	4 	/* table 5 at 0x6000 */
 | 
						|
 | 
						|
#define SCAN_FLAG_SINGLE_LINE              0x001
 | 
						|
#define SCAN_FLAG_DISABLE_SHADING          0x002
 | 
						|
#define SCAN_FLAG_DISABLE_GAMMA            0x004
 | 
						|
#define SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE 0x008
 | 
						|
#define SCAN_FLAG_IGNORE_LINE_DISTANCE     0x010
 | 
						|
#define SCAN_FLAG_USE_OPTICAL_RES          0x020
 | 
						|
#define SCAN_FLAG_DISABLE_LAMP             0x040
 | 
						|
#define SCAN_FLAG_DYNAMIC_LINEART          0x080
 | 
						|
 | 
						|
/**
 | 
						|
 * writable scanner registers */
 | 
						|
enum
 | 
						|
{
 | 
						|
  reg_0x01 = 0,
 | 
						|
  reg_0x02,
 | 
						|
  reg_0x03,
 | 
						|
  reg_0x04,
 | 
						|
  reg_0x05,
 | 
						|
  reg_0x06,
 | 
						|
  reg_0x08,
 | 
						|
  reg_0x09,
 | 
						|
  reg_0x0a,
 | 
						|
  reg_0x0b,
 | 
						|
  reg_0x0c,
 | 
						|
  reg_0x0f,
 | 
						|
  reg_0x10,
 | 
						|
  reg_0x11,
 | 
						|
  reg_0x12,
 | 
						|
  reg_0x13,
 | 
						|
  reg_0x14,
 | 
						|
  reg_0x15,
 | 
						|
  reg_0x16,
 | 
						|
  reg_0x17,
 | 
						|
  reg_0x18,
 | 
						|
  reg_0x19,
 | 
						|
  reg_0x1a,
 | 
						|
  reg_0x1b,
 | 
						|
  reg_0x1c,
 | 
						|
  reg_0x1d,
 | 
						|
  reg_0x1e,
 | 
						|
  reg_0x1f,
 | 
						|
  reg_0x20,
 | 
						|
  reg_0x21,
 | 
						|
  reg_0x22,
 | 
						|
  reg_0x23,
 | 
						|
  reg_0x24,
 | 
						|
  reg_0x25,
 | 
						|
  reg_0x26,
 | 
						|
  reg_0x27,
 | 
						|
  reg_0x28,
 | 
						|
  reg_0x2c,
 | 
						|
  reg_0x2d,
 | 
						|
  reg_0x2e,
 | 
						|
  reg_0x2f,
 | 
						|
  reg_0x30,
 | 
						|
  reg_0x31,
 | 
						|
  reg_0x32,
 | 
						|
  reg_0x33,
 | 
						|
  reg_0x34,
 | 
						|
  reg_0x35,
 | 
						|
  reg_0x36,
 | 
						|
  reg_0x37,
 | 
						|
  reg_0x38,
 | 
						|
  reg_0x39,
 | 
						|
  reg_0x3a,
 | 
						|
  reg_0x3b,
 | 
						|
  reg_0x3c,
 | 
						|
  reg_0x3d,
 | 
						|
  reg_0x3e,
 | 
						|
  reg_0x3f,
 | 
						|
  reg_0x51,
 | 
						|
  reg_0x52,
 | 
						|
  reg_0x53,
 | 
						|
  reg_0x54,
 | 
						|
  reg_0x55,
 | 
						|
  reg_0x56,
 | 
						|
  reg_0x57,
 | 
						|
  reg_0x58,
 | 
						|
  reg_0x59,
 | 
						|
  reg_0x5a,
 | 
						|
  reg_0x5d,
 | 
						|
  reg_0x5e,
 | 
						|
  reg_0x5f,
 | 
						|
  reg_0x60,
 | 
						|
  reg_0x61,
 | 
						|
  reg_0x62,
 | 
						|
  reg_0x63,
 | 
						|
  reg_0x64,
 | 
						|
  reg_0x65,
 | 
						|
  reg_0x67,
 | 
						|
  reg_0x68,
 | 
						|
  reg_0x69,
 | 
						|
  reg_0x6a,
 | 
						|
  reg_0x6b,
 | 
						|
  reg_0x70,
 | 
						|
  reg_0x71,
 | 
						|
  reg_0x72,
 | 
						|
  reg_0x73,
 | 
						|
  reg_0x74,
 | 
						|
  reg_0x75,
 | 
						|
  reg_0x76,
 | 
						|
  reg_0x77,
 | 
						|
  reg_0x78,
 | 
						|
  reg_0x79,
 | 
						|
  reg_0x7a,
 | 
						|
  reg_0x7b,
 | 
						|
  reg_0x7c,
 | 
						|
  reg_0x7d,
 | 
						|
  reg_0x7e,
 | 
						|
  reg_0x7f,
 | 
						|
  reg_0x80,
 | 
						|
  reg_0x81,
 | 
						|
  reg_0x82,
 | 
						|
  reg_0x83,
 | 
						|
  reg_0x84,
 | 
						|
  reg_0x85,
 | 
						|
  reg_0x86,
 | 
						|
  reg_0x87,
 | 
						|
  reg_0x88,
 | 
						|
  reg_0x89,
 | 
						|
  reg_0x8a,
 | 
						|
  reg_0x8b,
 | 
						|
  reg_0x8c,
 | 
						|
  reg_0x8d,
 | 
						|
  reg_0x8e,
 | 
						|
  reg_0x8f,
 | 
						|
  reg_0x90,
 | 
						|
  reg_0x91,
 | 
						|
  reg_0x92,
 | 
						|
  reg_0x93,
 | 
						|
  reg_0x94,
 | 
						|
  reg_0x95,
 | 
						|
  reg_0x96,
 | 
						|
  reg_0x97,
 | 
						|
  reg_0x98,
 | 
						|
  reg_0x99,
 | 
						|
  reg_0x9a,
 | 
						|
  reg_0x9b,
 | 
						|
  reg_0x9c,
 | 
						|
  reg_0x9d,
 | 
						|
  reg_0x9e,
 | 
						|
  reg_0xa0,
 | 
						|
  reg_0xa1,
 | 
						|
  reg_0xa2,
 | 
						|
  reg_0xa3,
 | 
						|
  reg_0xa4,
 | 
						|
  reg_0xa5,
 | 
						|
  reg_0xaa,
 | 
						|
  reg_0xab,
 | 
						|
  reg_0xac,
 | 
						|
  reg_0xad,
 | 
						|
  reg_0xae,
 | 
						|
  reg_0xaf,
 | 
						|
  GENESYS_GL843_MAX_REGS
 | 
						|
};
 | 
						|
 | 
						|
#define SETREG(adr,val) {dev->reg[reg_##adr].address=adr;dev->reg[reg_##adr].value=val;}
 | 
						|
 | 
						|
typedef struct
 | 
						|
{
 | 
						|
  uint8_t ra6;
 | 
						|
  uint8_t ra7;
 | 
						|
  uint8_t ra8;
 | 
						|
  uint8_t ra9;
 | 
						|
} Gpio_layout;
 | 
						|
 | 
						|
static Gpio_layout gpios[]={
 | 
						|
	/* G4050 */
 | 
						|
	{
 | 
						|
		0x08, 0x1e, 0x3e, 0x06
 | 
						|
	},
 | 
						|
	/* KV-SS080 */
 | 
						|
	{
 | 
						|
		0x06, 0x0f, 0x00, 0x08
 | 
						|
	}
 | 
						|
};
 | 
						|
 | 
						|
/** @brief structure for sensor settings
 | 
						|
 * this structure describes the sensor settings to use for a given
 | 
						|
 * exposure.
 | 
						|
 */
 | 
						|
typedef struct {
 | 
						|
  int sensor_type;      /**> sensor id */
 | 
						|
  int dpi;              /**> maximum dpi for which data are valid */
 | 
						|
  int exposure;         /**> exposure */
 | 
						|
  int ck1map;           /**> CK1MAP */
 | 
						|
  int ck3map;           /**> CK2MAP */
 | 
						|
  int ck4map;           /**> CK3MAP */
 | 
						|
  int segcnt;           /**> SEGCNT */
 | 
						|
  int tg0cnt;           /**> TG0CNT */
 | 
						|
  int expdummy;         /**> exposure dummy */
 | 
						|
  int expr;             /**> initial red exposure */
 | 
						|
  int expg;             /**> initial green exposure */
 | 
						|
  int expb;             /**> initial blue exposure */
 | 
						|
  uint8_t reg0c;        /**> register 0x0c value */
 | 
						|
  uint8_t reg70;        /**> register 0x70 value */
 | 
						|
  uint8_t reg71;        /**> register 0x71 value */
 | 
						|
  uint8_t reg9e;        /**> register 0x9e value */
 | 
						|
  uint8_t regaa;        /**> either undocumented or mapping to somewhere else */
 | 
						|
  uint8_t regs_0x10_0x1d[14];
 | 
						|
  uint8_t regs_0x52_0x5e[13];
 | 
						|
} Sensor_Profile;
 | 
						|
 | 
						|
/**
 | 
						|
 * database of sensor profiles
 | 
						|
 */
 | 
						|
static Sensor_Profile sensors[]={
 | 
						|
                                                                      /*                   0c    70    71    9e    aa*/
 | 
						|
	{CCD_KVSS080,  600,  8000, 0x000000, 0x00ffff, 0x03ffff, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x01, 0x03, 0x00, 0x00,
 | 
						|
        /* 10    11    12    13    14    15    16    17    18    19    1a    1b    1c    1d */
 | 
						|
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1c, 0x00, 0x2a, 0x2c, 0x00, 0x20, 0x04} ,
 | 
						|
        /* 52    53    54    55    56    57    58    59   5a    5b     5c    5d    5e */
 | 
						|
        {0x0c, 0x0f, 0x00, 0x03, 0x06, 0x09, 0x6b, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x23},
 | 
						|
        },
 | 
						|
 | 
						|
	{CCD_G4050  ,  600,  8016, 0x0001ff, 0x03ffff, 0x03ffff, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
						|
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x00, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
 | 
						|
        {0x0b, 0x0e, 0x11, 0x02, 0x05, 0x08, 0x63, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
 | 
						|
        },
 | 
						|
 | 
						|
	{CCD_G4050  , 1200, 56064, 0x0fffff, 0x0001ff, 0x0001ff, 5168, 0, 0x2a, 0, 0, 0, 0x20, 0x08, 0x0c, 0xc0, 0x05,
 | 
						|
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x0c, 0x10, 0x2a, 0x38, 0x10, 0x00, 0x08} ,
 | 
						|
        {0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x1b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
 | 
						|
        },
 | 
						|
 | 
						|
	{CCD_G4050  , 2400, 56064, 0x0fffff, 0x000000, 0x000000, 5168, 0, 0x2a, 0, 0, 0, 0x20, 0x08, 0x0a, 0xc0, 0x05,
 | 
						|
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x0c, 0x10, 0x2a, 0x38, 0x10, 0xc0, 0x08} ,
 | 
						|
        {0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x1b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
 | 
						|
        },
 | 
						|
 | 
						|
	{CCD_G4050  , 4800, 42752, 0x0fffff, 0x000000, 0x000000, 5168, 0, 0x2a, 0, 0, 0, 0x21, 0x08, 0x0a, 0xc0, 0x07,
 | 
						|
        {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x0c, 0x10, 0x2a, 0x38, 0x10, 0xc1, 0x08} ,
 | 
						|
        {0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x1b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
 | 
						|
        },
 | 
						|
};
 | 
						|
 | 
						|
static uint32_t kvss080[]={44444, 34188, 32520, 29630, 26666, 24242, 22222, 19048, 16666, 15686, 14814, 14034, 12402, 11110, 8888, 7618, 6666, 5926, 5228, 4678, 4172, 3682, 3336, 3074, 2866, 2702, 2566, 2450, 2352, 2266, 2188, 2118, 2056, 2002, 1950, 1904, 1860, 1820, 1784, 1748, 1716, 1684, 1656, 1628, 1600, 1576, 1552, 1528, 1506, 1486, 1466, 1446, 1428, 1410, 1394, 1376, 1360, 1346, 1330, 1316, 1302, 1288, 1276, 1264, 1250, 1238, 1228, 1216, 1206, 1194, 1184, 1174, 1164, 1154, 1146, 1136, 1128, 1120, 1110, 1102, 1094, 1088, 1080, 1072, 1064, 1058, 1050, 1044, 1038, 1030, 1024, 1018, 1012, 1006, 1000, 994, 988, 984, 978, 972, 968, 962, 958, 952, 948, 942, 938, 934, 928, 924, 920, 916, 912, 908, 904, 900, 896, 892, 888, 884, 882, 878, 874, 870, 868, 864, 860, 858, 854, 850, 848, 844, 842, 838, 836, 832, 830, 826, 824, 822, 820, 816, 814, 812, 808, 806, 804, 802, 800, 796, 794, 792, 790, 788, 786, 784, 782, 778, 776, 774, 772, 770, 768, 766, 764, 762, 760, 758, 756, 754, 752, 750, 750, 748, 746, 744, 742, 740, 738, 736, 734, 734, 732, 730, 728, 726, 724, 724, 722, 720, 718, 716, 716, 714, 712, 710, 710, 708, 706, 704, 704, 702, 700, 698, 698, 696, 694, 694, 692, 690, 690, 688, 686, 686, 684, 682, 682, 680, 678, 678, 676, 674, 674, 672, 672, 670, 668, 668, 666, 666, 664, 662, 662, 660, 660, 658, 656, 656, 654, 654, 652, 652, 650, 650, 648, 646, 646, 644, 644, 642, 642, 640, 640, 638, 638, 636, 636, 636, 634, 634, 632, 632, 630, 630, 628, 628, 626, 626, 624, 624, 624, 622, 622, 620, 620, 618, 618, 618, 616, 616, 614, 614, 612, 612, 612, 610, 610, 608, 608, 608, 606, 606, 606, 604, 604, 602, 602, 602, 600, 600, 600, 598, 598, 596, 596, 596, 594, 594, 594, 592, 592, 592, 590, 590, 590, 588, 588, 588, 586, 586, 586, 584, 584, 584, 582, 582, 582, 590, 590, 590, 588, 588, 588, 586, 586, 586, 584, 584, 584, 582, 582, 582, 580, 580, 580, 578, 578, 578, 576, 576, 576, 576, 574, 574, 574, 572, 572, 572, 570, 570, 570, 568, 568, 568, 568, 566, 566, 566, 564, 564, 564, 562, 562, 562, 562, 560, 560, 560, 558, 558, 558, 558, 556, 556, 556, 554, 554, 554, 552, 552, 552, 552, 550, 550, 550, 548, 548, 548, 548, 546, 546, 546, 546, 544, 544, 544, 542, 542, 542, 542, 540, 540, 540, 538, 538, 538, 538, 536, 536, 536, 536, 534, 534, 534, 534, 532, 532, 532, 530, 530, 530, 530, 528, 528, 528, 528, 526, 526, 526, 526, 524, 524, 524, 524, 522, 522, 522, 522, 520, 520, 520, 520, 518, 518, 518, 516, 516, 516, 516, 514, 514, 514, 514, 514, 512, 512, 512, 512, 510, 510, 510, 510, 508, 508, 508, 508, 506, 506, 506, 506, 504, 504, 504, 504, 502, 502, 502, 502, 500, 500, 500, 500, 0};
 | 
						|
static uint32_t g4050_fast[]={7842,5898,4384,4258,4152,4052,3956,3864,3786,3714,3632,3564,3498,3444,3384,3324,3276,3228,3174,3128,3086,3044,3002,2968,2930,2892,2860,2824,2794,2760,2732,2704,2676,2650,2618,2594,2568,2548,2524,2500,2478,2454,2436,2414,2392,2376,2354,2338,2318,2302,2282,2266,2252,2232,2218,2202,2188,2174,2160,2142,2128,2116,2102,2088,2076,2062,2054,2040,2028,2020,2014,2008,2004,2002,2002,2002,1946,1882,1826,1770,1716,1662,1612,1568,1526,1488,1454,1422,1390,1362,1336,1310,1288,1264,1242,1222,1204,1184,1166,1150,1134,1118,1104,1090,1076,1064,1050,1038,1026,1016,1004,994,984,972,964,954,944,936,928,920,910,902,896,888,880,874,866,860,854,848,840,834,828,822,816,812,806,800,796,790,784,780,776,770,766,760,756,752,748,744,740,736,732,728,724,720,716,712,708,704,702,698,694,690,688,684,682,678,674,672,668,666,662,660,656,654,650,648,646,644,640,638,636,632,630,628,624,622,620,618,616,614,610,608,606,604,602,600,598,596,594,592,590,588,586,584,582,580,578,576,574,572,570,568,566,564,564,562,560,558,556,554,552,552,550,548,546,546,544,542,540,538,538,536,534,532,532,530,528,528,526,524,522,522,520,518,518,516,514,514,512,512,510,508,508,506,504,504,502,502,500,498,498,496,496,494,494,492,490,490,488,488,486,486,484,484,482,480,480,478,478,476,476,474,474,472,472,470,470,468,468,468,466,466,464,464,462,462,460,460,458,458,456,456,456,454,454,452,452,450,450,450,448,448,446,446,444,444,444,442,442,440,440,440,438,438,438,436,436,434,434,434,432,432,432,430,430,428,428,428,426,426,426,424,424,424,422,422,422,420,420,420,418,418,418,416,416,416,414,414,414,412,412,412,410,410,410,408,408,408,406,406,406,404,404,404,404,402,402,402,400,400,400,400,398,398,398,396,396,396,396,394,394,394,392,392,392,392,390,390,390,388,388,388,388,386,386,386,386,384,384,384,384,382,382,382,382,380,380,380,380,378,378,378,378,376,376,376,376,376,374,374,374,374,374,372,372,372,372,372,370,370,370,370,370,368,368,368,368,368,366,366,366,366,366,364,364,364,364,364,364,362,362,362,362,362,360,360,360,360,360,360,358,358,358,358,358,358,356,356,356,356,356,356,354,354,354,354,354,352,352,352,352,352,352,350,350,350,350,350,350,350,348,348,348,348,348,348,346,346,346,346,346,346,344,344,344,344,344,344,344,342,342,342,342,342,342,340,340,340,340,340,340,340,338,338,338,338,338,338,338,336,336,336,336,336,336,336,334,334,334,334,334,334,334,332,332,332,332,332,332,332,332,330,330,330,330,330,330,330,328,328,328,328,328,328,328,328,326,326,326,326,326,326,326,324,324,324,324,324,324,324,324,322,322,322,322,322,322,322,322,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, 0};
 | 
						|
static uint32_t g4050_high[]={28032,28032,28032,28032,28032,28032,28032,28032, 27668,27024,26479,25975,25402,24926,24465,24087,23667,23248,22912,22576,22198,21877,21583,21289,20996,20758,20492,20226,20002,19751,19541,19303,19107,18911,18715,18534,18310,18142,17960,17820,17652,17485,17331,17163,17037,16883,16729,16617,16463,16352,16212,16100,15960,15848,15750,15610,15512,15400,15302,15204,15107,14981,14883,14799,14701,14603,14519,14421,14365,14267,14183,14127,14085,14043,14016,14002,14002,14002,13610,13162,12771,12379,12001,11624,11274,10966,10672,10407,10169,9945,9721,9525,9344,9162,9008,8840,8686,8546,8420,8280,8155,8043,7931,7819,7721,7623,7525,7441,7343,7259,7175,7105,7021,6952,6882,6798,6742,6672,6602,6546,6490,6434,6364,6308,6266,6210,6154,6112,6056,6014,5972,5930,5874,5833,5791,5749,5707,5679,5637,5595,5567,5525,5483,5455,5427,5385,5357,5315,5287,5259,5231,5203,5175,5147,5119,5091,5063,5035,5007,4979,4951,4923,4909,4881,4853,4825,4811,4783,4769,4741,4713,4699,4672,4658,4630,4616,4588,4574,4546,4532,4518,4504,4476,4462,4448,4420,4406,4392,4364,4350,4336,4322,4308,4294,4266,4252,4238,4224,4210,4196,4182,4168,4154,4140,4126,4112,4098,4084,4070,4056,4042,4028,4014,4000,3986,3972,3958,3944,3944,3930,3916,3902,3888,3874,3860,3860,3846,3832,3818,3818,3804,3790,3776,3762,3762,3748,3734,3720,3720,3706,3692,3692,3678,3664,3650,3650,3636,3622,3622,3608,3594,3594,3580,3580,3566,3552,3552,3538,3524,3524,3510,3510,3497,3483,3483,3469,3469,3455,3455,3441,3427,3427,3413,3413,3399,3399,3385,3385,3371,3357,3357,3343,3343,3329,3329,3315,3315,3301,3301,3287,3287,3273,3273,3273,3259,3259,3245,3245,3231,3231,3217,3217,3203,3203,3189,3189,3189,3175,3175,3161,3161,3147,3147,3147,3133,3133,3119,3119,3105,3105,3105,3091,3091,3077,3077,3077,3063,3063,3063,3049,3049,3035,3035,3035,3021,3021,3021,3007,3007,2993,2993,2993,2979,2979,2979,2965,2965,2965,2951,2951,2951,2937,2937,2937,2923,2923,2923,2909,2909,2909,2895,2895,2895,2881,2881,2881,2867,2867,2867,2853,2853,2853,2839,2839,2839,2825,2825,2825,2825,2811,2811,2811,2797,2797,2797,2797,2783,2783,2783,2769,2769,2769,2769,2755,2755,2755,2741,2741,2741,2741,2727,2727,2727,2713,2713,2713,2713,2699,2699,2699,2699,2685,2685,2685,2685,2671,2671,2671,2671,2657,2657,2657,2657,2643,2643,2643,2643,2629,2629,2629,2629,2629,2615,2615,2615,2615,2615,2601,2601,2601,2601,2601,2587,2587,2587,2587,2587,2573,2573,2573,2573,2573,2559,2559,2559,2559,2559,2545,2545,2545,2545,2545,2545,2531,2531,2531,2531,2531,2517,2517,2517,2517,2517,2517,2503,2503,2503,2503,2503,2503,2489,2489,2489,2489,2489,2489,2475,2475,2475,2475,2475,2461,2461,2461,2461,2461,2461,2447,2447,2447,2447,2447,2447,2447,2433,2433,2433,2433,2433,2433,2419,2419,2419,2419,2419,2419,2405,2405,2405,2405,2405,2405,2405,2391,2391,2391,2391,2391,2391,2377,2377,2377,2377,2377,2377,2377,2363,2363,2363,2363,2363,2363,2363,2349,2349,2349,2349,2349,2349,2349,2336,2336,2336,2336,2336,2336,2336,2322,2322,2322,2322,2322,2322,2322,2322,2308,2308,2308,2308,2308,2308,2308,2294,2294,2294,2294,2294,2294,2294,2294,2280,2280,2280,2280,2280,2280,2280,2266,2266,2266,2266,2266,2266,2266,2266,2252,2252,2252,2252,2252,2252,2252,2252,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238,2238, 0};
 | 
						|
static uint32_t g4050_max[]={42752,42752,42752,42752,42752,42752,42752,42752, 41824,31456,23381,22709,22144,21610,21098,20608,20192,19808,19370,19008,18656,18368,18048,17728,17472,17216,16928,16682,16458,16234,16010,15829,15626,15424,15253,15061,14901,14720,14570,14421,14272,14133,13962,13834,13696,13589,13461,13333,13216,13088,12992,12874,12757,12672,12554,12469,12362,12277,12170,12085,12010,11904,11829,11744,11669,11594,11520,11424,11349,11285,11210,11136,11072,10997,10954,10880,10816,10773,10741,10709,10688,10677,10677,10677,10378,10037,9738,9440,9152,8864,8597,8362,8138,7936,7754,7584,7413,7264,7125,6986,6869,6741,6624,6517,6421,6314,6218,6133,6048,5962,5888,5813,5738,5674,5600,5536,5472,5418,5354,5301,5248,5184,5141,5088,5034,4992,4949,4906,4853,4810,4778,4736,4693,4661,4618,4586,4554,4522,4480,4448,4416,4384,4352,4330,4298,4266,4245,4213,4181,4160,4138,4106,4085,4053,4032,4010,3989,3968,3946,3925,3904,3882,3861,3840,3818,3797,3776,3754,3744,3722,3701,3680,3669,3648,3637,3616,3594,3584,3562,3552,3530,3520,3498,3488,3466,3456,3445,3434,3413,3402,3392,3370,3360,3349,3328,3317,3306,3296,3285,3274,3253,3242,3232,3221,3210,3200,3189,3178,3168,3157,3146,3136,3125,3114,3104,3093,3082,3072,3061,3050,3040,3029,3018,3008,3008,2997,2986,2976,2965,2954,2944,2944,2933,2922,2912,2912,2901,2890,2880,2869,2869,2858,2848,2837,2837,2826,2816,2816,2805,2794,2784,2784,2773,2762,2762,2752,2741,2741,2730,2730,2720,2709,2709,2698,2688,2688,2677,2677,2666,2656,2656,2645,2645,2634,2634,2624,2613,2613,2602,2602,2592,2592,2581,2581,2570,2560,2560,2549,2549,2538,2538,2528,2528,2517,2517,2506,2506,2496,2496,2496,2485,2485,2474,2474,2464,2464,2453,2453,2442,2442,2432,2432,2432,2421,2421,2410,2410,2400,2400,2400,2389,2389,2378,2378,2368,2368,2368,2357,2357,2346,2346,2346,2336,2336,2336,2325,2325,2314,2314,2314,2304,2304,2304,2293,2293,2282,2282,2282,2272,2272,2272,2261,2261,2261,2250,2250,2250,2240,2240,2240,2229,2229,2229,2218,2218,2218,2208,2208,2208,2197,2197,2197,2186,2186,2186,2176,2176,2176,2165,2165,2165,2154,2154,2154,2154,2144,2144,2144,2133,2133,2133,2133,2122,2122,2122,2112,2112,2112,2112,2101,2101,2101,2090,2090,2090,2090,2080,2080,2080,2069,2069,2069,2069,2058,2058,2058,2058,2048,2048,2048,2048,2037,2037,2037,2037,2026,2026,2026,2026,2016,2016,2016,2016,2005,2005,2005,2005,2005,1994,1994,1994,1994,1994,1984,1984,1984,1984,1984,1973,1973,1973,1973,1973,1962,1962,1962,1962,1962,1952,1952,1952,1952,1952,1941,1941,1941,1941,1941,1941,1930,1930,1930,1930,1930,1920,1920,1920,1920,1920,1920,1909,1909,1909,1909,1909,1909,1898,1898,1898,1898,1898,1898,1888,1888,1888,1888,1888,1877,1877,1877,1877,1877,1877,1866,1866,1866,1866,1866,1866,1866,1856,1856,1856,1856,1856,1856,1845,1845,1845,1845,1845,1845,1834,1834,1834,1834,1834,1834,1834,1824,1824,1824,1824,1824,1824,1813,1813,1813,1813,1813,1813,1813,1802,1802,1802,1802,1802,1802,1802,1792,1792,1792,1792,1792,1792,1792,1781,1781,1781,1781,1781,1781,1781,1770,1770,1770,1770,1770,1770,1770,1770,1760,1760,1760,1760,1760,1760,1760,1749,1749,1749,1749,1749,1749,1749,1749,1738,1738,1738,1738,1738,1738,1738,1728,1728,1728,1728,1728,1728,1728,1728,1717,1717,1717,1717,1717,1717,1717,1717,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,1706,0
 | 
						|
}; 
 | 
						|
 | 
						|
/**
 | 
						|
 * database of motor profiles
 | 
						|
 */
 | 
						|
 | 
						|
/* *INDENT-OFF* */
 | 
						|
static Motor_Profile gl843_motors[]={
 | 
						|
	{MOTOR_KVSS080,   8000, 1, kvss080},
 | 
						|
	{MOTOR_G4050,     8016, 1, g4050_fast},
 | 
						|
	{MOTOR_G4050,    42752, 2, g4050_max},
 | 
						|
	{MOTOR_G4050,    56064, 1, g4050_high},
 | 
						|
	{0, 0, 0, NULL},
 | 
						|
};
 | 
						|
/* *INDENT-ON* */
 | 
						|
 | 
						|
/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
 |