bool Camera::presetRegisters() { //set registers to default values this->lastError = OscCamPresetRegs(); /* * enables continuous capturing, no sleep between readpicture and setupcapture needed * about 10ms shorter capturing time in average */ this->lastError = OscCamSetRegisterValue(0x07, 0x388); return this->lastError == SUCCESS; }
/*********************************************************************//*! * @brief Initialize framework and system parameters * * @param s Pointer to the system state *//*********************************************************************/ void initSystem(struct SYSTEM *s) { OscCreate(&s->hFramework); /******* Load the framework module dependencies. **********/ OscLoadDependencies(s->hFramework, deps, sizeof(deps)/sizeof(struct OSC_DEPENDENCY)); OscLogSetConsoleLogLevel(WARN); OscLogSetFileLogLevel(WARN); #if defined(OSC_HOST) /* Setup file name reader (for host compiled version); read constant image */ OscFrdCreate(s->hFramework); OscFrdCreateConstantReader(&s->hFileNameReader, "EAN13Example.bmp"); OscCamSetFileNameReader(s->hFileNameReader); #endif /* Configure camera */ OscCamPresetRegs(); /* Set AGC and AEC */ OscCamSetRegisterValue(REG_AEC_AGC_ENABLE, 0x3); /* Turn on continuous capture for this application. */ OscCamSetRegisterValue(CAM_REG_CHIP_CONTROL, 0x388); /* Set the undocumented reserved almighty Micron register to the "optimal" value. */ OscCamSetRegisterValue(CAM_REG_RESERVED_0x20, 0x3d5); OscCamSetAreaOfInterest(0, 0, OSC_CAM_MAX_IMAGE_WIDTH, OSC_CAM_MAX_IMAGE_HEIGHT); OscCamSetupPerspective(OSC_CAM_PERSPECTIVE_180DEG_ROTATE); OscCamSetFrameBuffer(0, OSC_CAM_MAX_IMAGE_WIDTH * OSC_CAM_MAX_IMAGE_HEIGHT, s->frameBuffer1, TRUE); OscCamSetFrameBuffer(1, OSC_CAM_MAX_IMAGE_WIDTH * OSC_CAM_MAX_IMAGE_HEIGHT, s->frameBuffer2, TRUE); s->doubleBufferIDs[0] = 0; s->doubleBufferIDs[1] = 1; OscCamCreateMultiBuffer(2, s->doubleBufferIDs); OscCamSetupCapture(OSC_CAM_MULTI_BUFFER); } /* initSystem */
bool Camera::setAutoExposure(bool enabled) { uint16 reg_val; OscCamGetRegisterValue(0xAF, ®_val); return (this->lastError = OscCamSetRegisterValue(0xAF, (reg_val & ~0x1) | (uint16)enabled)) != SUCCESS; }
bool Camera::setRegister(const uint32 reg, const uint16 value) { return (OscCamSetRegisterValue(reg, value) == SUCCESS); }