#pragma once #include #include #include #include "regsaccess.h" #include "commondef.h" #include "hgutils.h" class FpgaComm; class gVideo; class Gpio; class ICapturer { public: virtual ~ICapturer() {} virtual void open() = 0; virtual void Fpga_regsAccess_reset(bool enable) = 0 ; virtual void open(HGScanConfig config) = 0; virtual void close() = 0; virtual void start() = 0; virtual void stop() = 0; virtual bool is_runing() = 0; virtual void snap() = 0; virtual void set_size(int width, int height) = 0; virtual void* readFrame(int timeout) = 0; virtual void set_gain(int ix, int val) = 0; virtual void set_offset(int ix, int val) = 0; virtual void set_expo(int ix, int val) = 0; virtual std::shared_ptr regs() = 0; virtual void reset() = 0; virtual int width() = 0; virtual int height() = 0; virtual int color() = 0; virtual void init_autocorrect(int colormode) = 0; virtual void setcapturecall(std::function callback) = 0; }; class Capturer : public ICapturer { public: Capturer(); virtual ~Capturer(); virtual void Fpga_regsAccess_reset(bool enable); virtual void open(); virtual void open(HGScanConfig config); virtual void close(); virtual void start(); virtual void stop(); virtual bool is_runing(); virtual void snap(); virtual void set_size(int width, int height); virtual void set_sp(int sp); virtual void* readFrame(int timeout); virtual void set_gain(int ix, int val); virtual void set_offset(int ix, int val); virtual void set_expo(int ix, int val); virtual std::shared_ptr regs(); virtual void reset(); virtual int width(); virtual int height(); virtual int color(); virtual void init_autocorrect(int colormode); virtual void setcapturecall(std::function callback) { m_captureCallback = callback; }; private: void setFGPAParmas(int exposures[2][3], int gains[2][6], int offsets[2][6]); void configFPGAParam(bool iscorrect,int mode); void fpga_reset(); void fpga_reload(); void autocorrect(int colormode); void creatcorrect(int mode); void openDevice(int mode); void creatcorrectconfig(int mode); bool saveLutImg(int mode, int index); std::shared_ptr vdd_cis_3voff_pin; std::shared_ptr vdd_vis_5ven_pin; std::shared_ptr reset_pin; std::shared_ptr image_in_transfer_pin; std::shared_ptr initDone_pin; std::shared_ptr fpgaLoad; std::shared_ptr fpga_conf_initn; std::shared_ptr fpga_conf_done; std::shared_ptr fpgaComm; std::shared_ptr video; std::function m_captureCallback; HGScanConfig m_configParam; bool bcorrecting; std::thread m_correctthread; HGCorrectConfigs cisconfigs; ScannerNativeParam scannerinfo; };