⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmoscama.h

📁 linux平台上的开放源代码的网络摄像机程序.实现视频捕捉,传输以及云台控制等.非常具有参考价值.
💻 H
字号:
/* * 05.03.2002 changing for revA * 03.19.2002 Started support for different sensors */#ifndef _ASM_CMOSCAM_H#define _ASM_CMOSCAM_H/* _IOC_TYPE, bits 8 to 15 in ioctl cmd */#define CMOSCAM_IOCTYPE 124/* MINORS */#define CMOSCAM_MINOR_IORW	1#define CMOSCAM_MINOR_I2C	2#define CMOSCAM_MINOR_RAW	3#define CMOSCAM_MINOR_DMA	4#define CMOSCAM_MINOR_MCP	5/* camera sequencer states */#define CAMSEQ_OFF       0 // off#define CAMSEQ_PREERASE  1 // preerasing#define CAMSEQ_WAITTRIG  2 // waiting for trigger#define CAMSEQ_TRIGGERED 3 // triggered#define CAMSEQ_STILLDMA  4 // acquiring still image (DMA running)#define CAMSEQ_STILLGOT  5 // still picture acquired#define CAMSEQ_VIDEOON	 6 // video mode just started, not ready for picture acquisition yet#define CAMSEQ_VIDEORDY	 7 // video mode passed first VACT pulse, ready to acquire a new picture#define CAMSEQ_VIDEOWAIT 8 // video mode - waiting for external trigger (not implemented yet)#define CAMSEQ_VIDEODMA  9 // video mode - acquiring picture#define CAMSEQ_VIDEOGOT 10 // video mode - picture got	// 0 - off, 1 - not ready (pre-erasing), 2 - waiting,  3 - after trigger, 4 - DMA started, 5 - picture got 	// 0 - off, 1 - not ready (pre-erasing), 2 - waiting,  3 - after trigger, 4 - DMA started, 5 - picture got /* MCP definitions */#define	MCP_W_size	1024#define	MCP_R_size	256#define	MCPOtherBits	0xffa7a7ff#define MCPReset	0x00000800#define MCPNoReset	0x00105800#define MCPToggleA	0x00080000#define MCPToggleB	0x00001000#define MCPctlseq	0x00#define MCPsofttg	0x02#define MCPeackn	0x03#define MCPctlgate	0x04#define MCPwstdly	0x06#define MCPwrsmsk	0x07#define MCPwrsup	0x08#define MCPwrmons	0x09#define MCPwnom		0x0a#define MCPwdenom	0x0b#define MCPwoutw	0x0c#define MCPwinvctl	0x0d#define MCPctlsync	0x0e#define MCPwrdlys	0x10#define MCPwinv		0x40#define MCPwshared	0x80#define MCPwrsynctb	0x100#define MCPwrseq	0x200/* supported ioctl _IOC_NR's */#define I2C_WRITEARG(bus, slave, reg, value) (((bus) << 24) | ((slave) << 16) | ((reg) << 8) | (value))#define I2C_READARG(bus, slave, reg) (((bus) << 24) | ((slave) << 16) | ((reg) << 8))#define I2C_ARGBUS(arg) (((arg) >> 24)  & 0x1)#define I2C_ARGSLAVE(arg) (((arg) >> 16)  & 0xff)#define I2C_ARGREG(arg) (((arg) >> 8) & 0xff)#define I2C_ARGVALUE(arg) ((arg) & 0xff)#define I2C_WRITEREG 0x1   /* write to an i2c register */#define I2C_READREG  0x2   /* read from an i2c register */// _IO(CMOSCAM_IOCTYPE, I2C_WRITEREG // #define _CCREG(x,y) (_IO(CMOSCAM_IOCTYPE, (x << 5) | (y & 0x1f))) // OBSOLETE - remove from ALL user programs, use _CCCMD()// acess to ZR32112 registers 0..16, // otherParamsRW[16]// otherParamsRO[16]#define _CCCMD(x,y)  (_IO(CMOSCAM_IOCTYPE, (x << 6) | (y & 0x3f)))// #define CCAM_CTRL(x)  ((_IOC_NR(x) >> 5) & 0x07)	 // OBSOLETE// #define CCAM_RADDR(x)  (_IOC_NR(x) & 0x1f)	 // OBSOLETE// individually defined commands use 0.2f (after >> 5 -- 0 and 1)// will be no access to i2c above 0x1f (needed for KAC1310)// direct i2c register user access will be removed later//#define CCAM_RDZR   2 /* read  zr32112 registers   0..0x16 *///#define CCAM_WDZR   3 /* write zr32112 registers   0..0x16 */// #define CCAM_RPARS  4 /* read  r/w parameters      0..0x1f */// #define CCAM_WPARS  5 /* write r/w parameters      0..0x1f */// #define CCAM_ROPARS 6 /* read  readonly parameters 0..0x0f */#define CCAM_CTRL(x)  ((_IOC_NR(x) >> 6) & 0x03)#define CCAM_ADDR(x)  (_IOC_NR(x) & 0x3f)//#define CCAM_RWSENSOR   1 /* direct read/write first 32 sensor registers */  // will not use at all#define CCAM_RPARS      2 /* read  parameters      0..0x3f */#define CCAM_WPARS      3 /* write parameters      0..0x3f *//* New parameters and update logic * Separate read and write set of 64 registers * User may specify: *   0 - do not update *   1 - update at once *   2 - update when appropriate * and read update status: *   0 - will not be updated *   1 - in sync *   2 - waiting to be updated *   3 - update in progress (TODO: - support async) * 	When updating (validating) parameters and copying them to the read "registers" the I2C registers will be written *  only if they are different from the shadows *//* abstract sensor register names */#define P_UPDATE         0	    /* R/W, see above */#define P_SENSOR         1     /* read only                           4  - ZR32112MLC - now there is no way to see color/mono                           5  - ZR32112PLC                           8  - ZR32212MLC                           9  - ZR32112PLC                           32 - KAC1310-mono                           33 - KAC1310-RGB                           34 - KAC1310-CMY)*/// leave it here - may be used in user applications#define SENSOR_MASK    0xfc#define SENSOR_ZR32112 4#define SENSOR_ZR32212 8#define SENSOR_KAC1310 32// sensor sizes:#define SENSORWIDTH_ZR32112  1288#define SENSORHEIGHT_ZR32112 1032#define SENSORWIDTH_ZR32212  1288#define SENSORHEIGHT_ZR32212 968#define SENSORWIDTH_KAC1310  1280#define SENSORHEIGHT_KAC1310 1024#define P_PARS_CHANGED   2 /* RD P_RO_VALID  0	window parameters valid                  */#define P_DMA_VALID      3 /* RD P_RO_VALID  0	window parameters valid                  */#define P_ACTUAL_WIDTH   4 /* RD P_RO_WIDTH  1	pixels/row                               */#define P_ACTUAL_HEIGHT  5 /* RD P_RO_HEIGHT 2  pixels/column                            */#define P_LPR            6 /* RD P_RO_LPR    3	32-bit words per row (aligned each row)  */#define P_IMAGE_SIZE     7 /* RD P_RO_SIZE   4	total image size (dma data) in bytes     */#define P_BAYER          8 /* filter number at (0,0) 0-R, 1-G(R), 2-G(B), 3 - B. Write enabled at first, move to WindowSize later */#define P_TRIGGERED		 9 /* when trigger occured - 4 LSBs - pixel in DMA word, higher bits - number of DMA word */#define P_TRIG          16 /* R/W P_RW_TRIG   0	 0 - internal, 1 - external               */#define P_EXPOS         17 /* P_RW_EXPOS  1	 exposure time                            */#define P_DMA_SZ        18 /* P_RW_DMA_SZ 2	 DMA block size (debug, mostly)           */#define P_DMA_LOOP      19 /* Cyclic DMA buffer (should be updated to multiple of frames) */						   /* if DMA buffer <16 - multiply by frame size, else - use as specified */#define P_OVERLAP       20 /* Rolling Shutter DMA length (number of long words to be acquired over the frame size) */#define P_VIDEO         21 /* still (stopped) - 0, video - 1. KAC1310 - video only */#define P_AUXCM			22 /* signal on AUXCLK pin: 0 - 0, 1 - 1, 1x - 20MHz */#define P_VIRT_WIDTH    24 /* Virtual window width - KAC-1310 sensor */#define P_VIRT_HEIGHT   25 /* Virtual window height - KAC-1310 sensor */#define P_WOI_LEFT      26 /* WOI left corner (before applying decimation) */#define P_WOI_TOP       27 /* WOI top corner */#define P_WOI_WIDTH     28 /* WOI width */#define P_WOI_HEIGHT    29 /* WOI height */#define P_FLIPH		    30#define P_FLIPV			31#define P_DCM_HOR       32 /* Horizontal decimation (1/2/4/8) */#define P_DCM_VERT      33 /* Vertical   decimation (1/2/4/8) copied from horizontal for Zoran chips */#define P_BIN_HOR       34 /* binning 1/2 - KAC1310 only */#define P_BIN_VERT      35 /* not used yet binning 1/2 - KAC1310 only */#define P_COLOR         36 /* mono - 0, color mode - 1 */#define P_TEST          37 /* 1 - test mode enabled */#define P_MCLK          38 /* 2..129 */#define P_MCLK_DIS      39 /* disable sensor clock */						 #define P_BITS          40 /* pixel depth - bits 10/8/4 */#define P_SHIFTL        41 /* "digital gain" - shift left by 0/1/2 bits */#define P_VEXPOS        42 /* video exposure (if 0 - use P_RW_EXPOS in ms) */#define P_GAINR         43 /* R channel gain (mono gain) */#define P_GAING         44 /* G channel gain ("red line" in ZR32212) */#define P_GAINB         45 /* B channel gain (mono gain) */#define P_GAINGB        46 /* G channel gain ("blue line" in ZR32212) - copied from P_RW_GAING in ZR2112 */// will be more for KODAK sensor ?/*EXAMPLE usage:    i2c_arg = I2C_WRITEARG(STA013_WRITE_ADDR, reg, val);    ioctl(fd, _IO(ETRAXI2C_IOCTYPE, I2C_WRITEREG), i2c_arg);    i2c_arg = I2C_READARG(STA013_READ_ADDR, reg);    val = ioctl(fd, _IO(ETRAXI2C_IOCTYPE, I2C_READREG), i2c_arg);*//* i2c errors */#define	ERR_I2C_SCL_ST0		 1#define	ERR_I2C_SDA_ST0		 2#define	ERR_I2C_SCL_ST1		 4#define	ERR_I2C_SDA_ST1		 8#define	ERR_I2C_SCL_NOPULLUP 16#define	ERR_I2C_SDA_NOPULLUP 32/* i2c_diagnose called by i2c_start (?) could not find any problems. Try again start */#define ERR_I2C_NOTDETECTED  64#define	ERR_I2C_SHORT		 128#define	ERR_I2C_BSY		 256#define	ERR_I2C_NACK		 512/* supported ioctl _IOC_NR's */#define IO_CCAM_SET_EXT_EXPOSURE  0x06#define IO_CCAM_MONITOR_SEQ       0x07#define IO_CCAM_EXPOSE		0x08#define IO_CCAM_EXPOS_END	0x09#define IO_CCAM_EXPOS_START	0x0a#define IO_CCAM_MONITOR_DMA_DESCR  0x0b#define IO_CCAM_MONITOR_DMA_BUFFER  0x0c#define IO_CCAM_STOP_DMA  0x0d//#define IO_CCAM_START_DMA 0x0e#define IO_CCAM_CR_MODIFY 0x0e	//(bit number)<<2 | op; op= 0 - nop, 1 - set, 2 - reset, 3 - toggle)#define IO_CCAM_CR_SHADOW 0x0f/* direct register r/w*/#define IO_CSP0R0    0x10  /* read and return CSP0+0  port data */#define IO_CSP0R1    0x11  /* read and return CSP0+4  port data */#define IO_CSP0R2    0x12  /* read and return CSP0+8  port data */#define IO_CSP0R3    0x13  /* read and return CSP0+12 port data */#define IO_CSP0R4    0x14  /* read and return CSP0+16 port data */#define IO_CSP0R5    0x15  /* read and return CSP0+20 port data */#define IO_CSP0R6    0x16  /* read and return CSP0+24 port data */#define IO_CSP0R7    0x17  /* read and return CSP0+28 port data */#define IO_CSP0R8    0x18  /* read and return CSP0+32 port data */#define IO_CSP0R9    0x19  /* read and return CSP0+36 port data */#define IO_CSP0R10   0x1a  /* read and return CSP0+40 port data */#define IO_CSP0R11   0x1b  /* read and return CSP0+44 port data */#define IO_CSP0R12   0x1c  /* read and return CSP0+48 port data */#define IO_CSP0R13   0x1d  /* read and return CSP0+52 port data */#define IO_CSP0R14   0x1e  /* read and return CSP0+56 port data */#define IO_CSP0R15   0x1f  /* read and return CSP0+60 port data */#define IO_CSP0W0    0x20  /* write data to port CSP0+0  */#define IO_CSP0W1    0x21  /* write data to port CSP0+4  */#define IO_CSP0W2    0x22  /* write data to port CSP0+8  */#define IO_CSP0W3    0x23  /* write data to port CSP0+12 */#define IO_CSP0W4    0x24  /* write data to port CSP0+16 */#define IO_CSP0W5    0x25  /* write data to port CSP0+20 */#define IO_CSP0W6    0x26  /* write data to port CSP0+24 */#define IO_CSP0W7    0x27  /* write data to port CSP0+28 */#define IO_CSP0W8    0x28  /* write data to port CSP0+32 */#define IO_CSP0W9    0x29  /* write data to port CSP0+36 */#define IO_CSP0W10   0x2a  /* write data to port CSP0+40 */#define IO_CSP0W11   0x2b  /* write data to port CSP0+44 */#define IO_CSP0W12   0x2c  /* write data to port CSP0+48 */#define IO_CSP0W13   0x2d  /* write data to port CSP0+52 */#define IO_CSP0W14   0x2e  /* write data to port CSP0+56 */#define IO_CSP0W15   0x2f  /* write data to port CSP0+60 */#define IO_CSP0R(a) (IO_CSP0R0 + a)#define IO_CSP0W(a) (IO_CSP0W0 + a)#define IO_CSP0_R 1#define IO_CSP0_W 2//(frame size/3) and a little more#define CCAM_DMA_SIZE 445830// 2* (frame size/3) and a little more// #define CCAM_DMA_SIZE 917504#define CCAM_DESCR_SIZE (( CCAM_DMA_SIZE >> 14)+1)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -