📄 zc3xx.h
字号:
U8 frxt = 0x30; quality = (spca50x->qindex) & 0x0f; spca5xxRegWrite(spca50x, 0xa0, quality, 0x0008, NULL, 0); spca5xxRegWrite(spca50x, 0xa0, frxt, 0x0007, NULL, 0); switch (quality){ case 0: case 1: case 2: frxt = 0xff; break; case 3: frxt = 0xf0; break; case 4: frxt = 0xe0; break; case 5: frxt = 0x20; break; } spca5xxRegWrite(spca50x, 0xa0, frxt, 0x0018, NULL, 0); }static void zc3xx_setAutobright(USBCAM_CONTEXT*spca50x){ U8 autoval = 0; if (spca50x->autoexpo) autoval = 0x42; else autoval = 0x02; spca5xxRegWrite(spca50x, 0xa0, autoval, 0x0180, NULL, 0);}static void zc3xx_start(USBCAM_CONTEXT*spca50x){ int err = 0; /* Assume start use the good resolution from spca50x->mode */ //err = zcxx_probeSensor(spca50x); switch (spca50x->sensor) { case SENSOR_TAS5130CXX: if (spca50x->mode) { /* 320x240 */ err = zc3xxWriteVector(spca50x, tas5130cxx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x, tas5130cxx_scale_data); } break; case SENSOR_TAS5130C_FV0250: // Firmware version 0250 if (spca50x->mode) { /* 320x240 */ err = zc3xxWriteVector(spca50x, tas5130c_fv0250_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x, tas5130c_fv0250_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: err = zcxx_probeSensor(spca50x); if (spca50x->mode) { /* 320x240 */ err = zc3xxWriteVector(spca50x, hv7131bxx_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x, hv7131bxx_scale_data); } break; case SENSOR_HV7131C: //HV7131R err = zcxx_probeSensor(spca50x); 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 */ if ((spca50x->chip_revision == 0xc001) || (spca50x->chip_revision == 0xe001) || (spca50x->chip_revision == 0x8001)) err = zc3xxWriteVector(spca50x, pb03303x_start_data); else err = zc3xxWriteVector(spca50x, pb0330xx_start_data); } else { /* 640x480 */ if ((spca50x->chip_revision == 0xc001) || (spca50x->chip_revision == 0xe001) || (spca50x->chip_revision == 0x8001)) err = zc3xxWriteVector(spca50x, pb03303x_scale_data); else 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_OV7630C: if (spca50x->mode) { /* 320x240 */ err = zc3xxWriteVector(spca50x, ov7630c_start_data); } else { /* 640x480 */ err = zc3xxWriteVector(spca50x, ov7630c_scale_data); } break; case SENSOR_PAS106: err= zc3xxWriteVector(spca50x, pas106b_com_data); 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_stop0(USBCAM_CONTEXT *spca50x){// Nothing todo switch (spca50x->sensor) { case SENSOR_PAS106: spca5xxRegWrite(spca50x, 0xa0, 0x01, 0x0000, NULL, 0); spca5xxRegWrite(spca50x, 0xa0, 0x03, 0x003a, NULL, 0); spca5xxRegWrite(spca50x, 0xa0, 0x0c, 0x003b, NULL, 0); spca5xxRegWrite(spca50x, 0xa0, 0x08, 0x0038, NULL, 0); break; }}static void zc3xx_shutdown(USBCAM_CONTEXT *spca50x){ U8 buffread; spca5xxRegRead(spca50x, 0xa1, 0x01, 0x0180, &buffread, 1); spca5xxRegWrite(spca50x, 0xa0, 0x00, 0x0180, NULL, 0); spca5xxRegWrite(spca50x, 0xa0, 0x01, 0x0000, NULL, 0);}static U16 zc3xx_getcolors(USBCAM_CONTEXT *spca50x){//Nothingreturn spca50x->colour;}static void zc3xx_setcolors(USBCAM_CONTEXT *spca50x){//Nothing spca50x->colour = 0;}static int zc3xx_sofdetect(USBCAM_CONTEXT *spca50x, unsigned char *cdata,int *iPix, int seqnum, int *datalength){ if (cdata[0] == 0xFF && cdata[1] == 0xD8) { *iPix = 2; //18 remove 0xff 0xd8; *datalength -= *iPix; return 0; RETAILMSG(5,(TEXT( "Zc301 header packet found datalength %d !!"), *datalength) ); } *iPix = 0; return (seqnum +1);} static void zc3xx_set50HZ(USBCAM_CONTEXT *spca50x) { switch (spca50x->sensor) { case SENSOR_TAS5130C_FV0250: zc3xxWriteVector(spca50x, tas5130c_fv0250_50HZ); break; case SENSOR_TAS5130CXX: zc3xxWriteVector(spca50x, tas5130cxx_50HZ); case SENSOR_PB0330: zc3xxWriteVector(spca50x, pb0330_50HZ); break; case SENSOR_PAS106: zc3xxWriteVector(spca50x, pas106b_50HZ); break; case SENSOR_ICM105A: zc3xxWriteVector(spca50x, icm105a_50HZ); break; case SENSOR_HDCS2020b: zc3xxWriteVector(spca50x, hdcs2020b_50HZ); break; case SENSOR_CS2102: zc3xxWriteVector(spca50x, cs2102_50HZ); break; default: break; } } static void zc3xx_set60HZ(USBCAM_CONTEXT *spca50x) { switch (spca50x->sensor) { case SENSOR_TAS5130C_FV0250: zc3xxWriteVector(spca50x, tas5130c_fv0250_60HZ); break; case SENSOR_TAS5130CXX: zc3xxWriteVector(spca50x, tas5130cxx_60HZ); break; case SENSOR_PB0330: zc3xxWriteVector(spca50x, pb0330_60HZ); break; case SENSOR_PAS106: zc3xxWriteVector(spca50x, pas106b_60HZ); break; case SENSOR_ICM105A: zc3xxWriteVector(spca50x, icm105a_60HZ); break; case SENSOR_HDCS2020b: zc3xxWriteVector(spca50x, hdcs2020b_60HZ); break; case SENSOR_CS2102: zc3xxWriteVector(spca50x, cs2102_60HZ); break; default: break; } } static void zc3xx_set50HZScale(USBCAM_CONTEXT *spca50x) { switch (spca50x->sensor) { case SENSOR_TAS5130C_FV0250: zc3xxWriteVector(spca50x, tas5130c_fv0250_50HZScale); break; case SENSOR_TAS5130CXX: zc3xxWriteVector(spca50x, tas5130cxx_50HZScale); break; case SENSOR_PB0330: zc3xxWriteVector(spca50x, pb0330_50HZScale); break; case SENSOR_PAS106: zc3xxWriteVector(spca50x, pas106b_50HZ); break; case SENSOR_ICM105A: zc3xxWriteVector(spca50x, icm105a_50HZScale); break; case SENSOR_HDCS2020b: zc3xxWriteVector(spca50x, hdcs2020b_50HZScale); break; case SENSOR_CS2102: zc3xxWriteVector(spca50x, cs2102_50HZScale); break; default: break; } } static void zc3xx_set60HZScale(USBCAM_CONTEXT *spca50x) { switch (spca50x->sensor) { case SENSOR_TAS5130C_FV0250: zc3xxWriteVector(spca50x, tas5130c_fv0250_60HZScale); break; case SENSOR_TAS5130CXX: zc3xxWriteVector(spca50x, tas5130cxx_60HZScale); break; case SENSOR_PB0330: zc3xxWriteVector(spca50x, pb0330_60HZScale); break; case SENSOR_PAS106: zc3xxWriteVector(spca50x, pas106b_60HZ); break; case SENSOR_ICM105A: zc3xxWriteVector(spca50x, icm105a_60HZScale); break; case SENSOR_HDCS2020b: zc3xxWriteVector(spca50x, hdcs2020b_60HZScale); break; case SENSOR_CS2102: zc3xxWriteVector(spca50x, cs2102_60HZScale); break; default: break; } } static void zc3xx_setNoFliker(USBCAM_CONTEXT *spca50x) { switch (spca50x->sensor) { case SENSOR_TAS5130C_FV0250: zc3xxWriteVector(spca50x, tas5130c_fv0250_NoFliker); break; case SENSOR_TAS5130CXX: zc3xxWriteVector(spca50x, tas5130cxx_NoFliker); break; case SENSOR_PB0330: zc3xxWriteVector(spca50x, pb0330_NoFliker); break; case SENSOR_PAS106: zc3xxWriteVector(spca50x, pas106b_NoFliker); break; case SENSOR_ICM105A: zc3xxWriteVector(spca50x, icm105a_NoFliker); break; case SENSOR_HDCS2020b: zc3xxWriteVector(spca50x, hdcs2020b_NoFliker); break; case SENSOR_CS2102: zc3xxWriteVector(spca50x, cs2102_NoFliker); break; default: break; } } static void zc3xx_setNoFlikerScale(USBCAM_CONTEXT *spca50x) { switch (spca50x->sensor) { case SENSOR_TAS5130C_FV0250: zc3xxWriteVector(spca50x, tas5130c_fv0250_NoFlikerScale); break; case SENSOR_TAS5130CXX: zc3xxWriteVector(spca50x, tas5130cxx_NoFlikerScale); break; case SENSOR_PB0330: zc3xxWriteVector(spca50x, pb0330_NoFlikerScale); break; case SENSOR_PAS106: zc3xxWriteVector(spca50x, pas106b_NoFliker); break; case SENSOR_ICM105A: zc3xxWriteVector(spca50x, icm105a_NoFlikerScale); break; case SENSOR_HDCS2020b: zc3xxWriteVector(spca50x, hdcs2020b_NoFlikerScale); break; case SENSOR_CS2102: zc3xxWriteVector(spca50x, cs2102_NoFlikerScale); break; default: break; } }#endif // ZC3XXUSB_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -