📄 zc3xx.h
字号:
spca50x->mode_cam[SIF].height = 288; spca50x->mode_cam[SIF].t_palette = P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[SIF].pipe = 1023; spca50x->mode_cam[SIF].method = 1; spca50x->mode_cam[SIF].mode = 0; spca50x->mode_cam[CIF].width = 320; spca50x->mode_cam[CIF].height = 240; spca50x->mode_cam[CIF].t_palette = P_JPEG | P_RAW | P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[CIF].pipe = 1023; spca50x->mode_cam[CIF].method = 0; spca50x->mode_cam[CIF].mode = 1; spca50x->mode_cam[QPAL].width = 192; spca50x->mode_cam[QPAL].height = 144; spca50x->mode_cam[QPAL].t_palette = P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[QPAL].pipe = 1023; spca50x->mode_cam[QPAL].method = 1; spca50x->mode_cam[QPAL].mode = 1; spca50x->mode_cam[QSIF].width = 176; spca50x->mode_cam[QSIF].height = 144; spca50x->mode_cam[QSIF].t_palette = P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[QSIF].pipe = 1023; spca50x->mode_cam[QSIF].method = 1; spca50x->mode_cam[QSIF].mode = 1;}static void set_zc3xxSIF(struct usb_spca50x *spca50x ){ memset (spca50x->mode_cam, 0x00, TOTMODE * sizeof(struct mwebcam)); spca50x->mode_cam[SIF].width = 352; spca50x->mode_cam[SIF].height = 288; spca50x->mode_cam[SIF].t_palette = P_JPEG | P_RAW |P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[SIF].pipe = 1023; spca50x->mode_cam[SIF].method = 0; spca50x->mode_cam[SIF].mode = 0; spca50x->mode_cam[CIF].width = 320; spca50x->mode_cam[CIF].height = 240; spca50x->mode_cam[CIF].t_palette = P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[CIF].pipe = 1023; spca50x->mode_cam[CIF].method = 1; spca50x->mode_cam[CIF].mode = 0; spca50x->mode_cam[QPAL].width = 192; spca50x->mode_cam[QPAL].height = 144; spca50x->mode_cam[QPAL].t_palette = P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[QPAL].pipe = 1023; spca50x->mode_cam[QPAL].method = 1; spca50x->mode_cam[QPAL].mode = 0; spca50x->mode_cam[QSIF].width = 176; spca50x->mode_cam[QSIF].height = 144; spca50x->mode_cam[QSIF].t_palette = P_JPEG | P_RAW |P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16; spca50x->mode_cam[QSIF].pipe = 1023; spca50x->mode_cam[QSIF].method = 0; spca50x->mode_cam[QSIF].mode = 1;}static int zc3xx_config( struct usb_spca50x *spca50x ){ int sensor =0; __u8 bsensor = 0; spca50x->qindex = 1; sensor = zcxx_probeSensor(spca50x); switch (sensor) { case -1: PDEBUG(0,"Find Sensor UNKNOW_0 force Tas5130"); spca50x->sensor = SENSOR_TAS5130C; set_zc3xxVGA (spca50x); break; case 0: PDEBUG(0,"Find Sensor HV7131B"); spca50x->sensor = SENSOR_HV7131B; set_zc3xxVGA (spca50x); break; case 1: PDEBUG(0,"Find Sensor SIF UNKNOW_1"); break; case 0x02: PDEBUG(0,"Find Sensor UNKNOW_2"); break; case 0x04: PDEBUG(0,"Find Sensor CS2102"); spca50x->sensor = SENSOR_CS2102; set_zc3xxVGA (spca50x); break; case 5: PDEBUG(0,"Find Sensor SIF UNKNOW_5"); break; case 0x06: PDEBUG(0,"Find Sensor VGA UNKNOW_6"); break; case 7: PDEBUG(0,"Find Sensor SIF UNKNOW_7"); break; case 0x08: PDEBUG(0,"Find Sensor HDCS2020(b)"); spca50x->sensor = SENSOR_HDCS2020b; set_zc3xxVGA (spca50x); break; case 9: PDEBUG(0,"Find Sensor SIF UNKNOW_9"); break; case 0x0a: PDEBUG(0,"Find Sensor PB0330"); spca50x->sensor = SENSOR_PB0330; set_zc3xxVGA (spca50x); break; case 0x0b: PDEBUG(0,"Find Sensor SIF UNKNOW_b"); break; case 0x0c: PDEBUG(0,"Find Sensor ICM105T"); spca50x->sensor = SENSOR_ICM105A; set_zc3xxVGA (spca50x); break; case 0x0d: PDEBUG(0,"Find Sensor SIF UNKNOW_d"); break; case 0x0e: PDEBUG(0,"Find Sensor PAS202BCB"); spca50x->sensor = SENSOR_HDCS2020; set_zc3xxVGA (spca50x); break; case 0x0f: PDEBUG(0,"Find Sensor PAS106"); spca50x->sensor = SENSOR_PAS106; set_zc3xxSIF (spca50x); break; case 0x10: PDEBUG(0,"Find Sensor TAS5130"); spca50x->sensor = SENSOR_TAS5130C; set_zc3xxVGA (spca50x); break; case 0x11: PDEBUG(0,"Find Sensor HV7131R(c)"); spca50x->sensor = SENSOR_HV7131C; set_zc3xxVGA (spca50x); break; case 0x12: PDEBUG(0,"Find Sensor TAS5130"); spca50x->sensor = SENSOR_TAS5130C; set_zc3xxVGA (spca50x); break; }; if (( sensor == 0x02) || (sensor == 0x06 ) || (sensor == 0x01) || (sensor == 0x05) || (sensor == 0x07) || (sensor == 0x09) || (sensor == 0x0b) || (sensor == 0x0d)){ PDEBUG(0,"Our Sensor is unknow at the moment please report mxhaard@free.fr "); return -EINVAL; } if((sensor == -1) || (sensor == 0x10) || (sensor == 0x12)){ spca5xxRegWrite(spca50x->dev,0xa0,0x02,0x0010,NULL,0); spca5xxRegRead(spca50x->dev,0xa1,0x01,0x0010,&bsensor,1); } else { sensor = sensor & 0x0f; spca5xxRegWrite(spca50x->dev,0xa0,sensor,0x0010,NULL,0); spca5xxRegRead(spca50x->dev,0xa1,0x01,0x0010,&bsensor,1); } // spca5xxRegWrite(spca50x->dev,0xa0,0x01,0x0000,NULL,0); return 0;}static void zc3xx_setquality(struct usb_spca50x *spca50x ){ __u8 quality = 0; quality = (spca50x->qindex) & 0xff; spca5xxRegWrite(spca50x->dev,0xa0,quality,0x0008,NULL,0);}static void zc3xx_setAutobright (struct usb_spca50x *spca50x){ __u8 autoval = 0; if(spca50x->autoexpo) autoval = 0x42; else autoval = 0x02; spca5xxRegWrite(spca50x->dev,0xa0,autoval,0x0180,NULL,0); }static void zc3xx_start(struct usb_spca50x *spca50x ){ int err = 0; /* Assume start use the good resolution from spca50x->mode */ err = zcxx_probeSensor(spca50x); switch (spca50x->sensor){ case SENSOR_TAS5130C: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,tas5130cxx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,tas5130cxx_scale_data); } break; case SENSOR_ICM105A: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,icm105axx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,icm105axx_scale_data); } break; case SENSOR_HDCS2020: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,hdcs2020xx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,hdcs2020xx_scale_data); } break; case SENSOR_HDCS2020b: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,hdcs2020xb_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,hdcs2020xb_scale_data); } break; case SENSOR_HV7131B: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,hv7131bxx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,hv7131bxx_scale_data); } break; case SENSOR_HV7131C://HV7131R if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,hv7131cxx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,hv7131cxx_scale_data); } break; case SENSOR_PB0330: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,pb0330xx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,pb0330xx_scale_data); } break; case SENSOR_CS2102: if (spca50x->mode){ /* 320x240 */ err = zc3xxWriteVector(spca50x,cs2102_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x,cs2102_scale_data); } break; case SENSOR_PAS106: if (spca50x->mode){ /* 176x144 */ err = zc3xxWriteVector(spca50x,pas106b_start_data); } else { /* 352x288 */ err = zc3xxWriteVector(spca50x,pas106b_scale_data); } break; } zc3xx_setbrightness(spca50x); zc3xx_setquality(spca50x ); zc3xx_setAutobright (spca50x);}static void zc3xx_stop(struct usb_spca50x *spca50x ){ // Nothing todo }static void zc3xx_shutdown(struct usb_spca50x *spca50x ){ struct usb_device *dev=spca50x->dev; __u8 buffread; spca5xxRegRead(dev,0xa1,0x01,0x0180,&buffread,1); spca5xxRegWrite(dev,0xa0,0x00,0x0180,NULL,0); spca5xxRegWrite(dev,0xa0,0x01,0x0000,NULL,0);}#endif // ZC3XXUSB_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -