104 lines
2.7 KiB
C
104 lines
2.7 KiB
C
|
#pragma once
|
||
|
#include <functional>
|
||
|
#include <thread>
|
||
|
#include <string>
|
||
|
#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<IRegsAccess> 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<void(int,std::string)> 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<IRegsAccess> regs();
|
||
|
virtual void reset();
|
||
|
virtual int width();
|
||
|
virtual int height();
|
||
|
virtual int color();
|
||
|
virtual void init_autocorrect(int colormode);
|
||
|
virtual void setcapturecall(std::function<void(int,std::string)> 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<Gpio> vdd_cis_3voff_pin;
|
||
|
std::shared_ptr<Gpio> vdd_vis_5ven_pin;
|
||
|
std::shared_ptr<Gpio> reset_pin;
|
||
|
std::shared_ptr<Gpio> image_in_transfer_pin;
|
||
|
std::shared_ptr<Gpio> initDone_pin;
|
||
|
std::shared_ptr<Gpio> fpgaLoad;
|
||
|
std::shared_ptr<Gpio> fpga_conf_initn;
|
||
|
std::shared_ptr<Gpio> fpga_conf_done;
|
||
|
std::shared_ptr<FpgaComm> fpgaComm;
|
||
|
|
||
|
std::shared_ptr<gVideo> video;
|
||
|
std::function<void(int,std::string)> m_captureCallback;
|
||
|
HGScanConfig m_configParam;
|
||
|
bool bcorrecting;
|
||
|
std::thread m_correctthread;
|
||
|
HGCorrectConfigs cisconfigs;
|
||
|
ScannerNativeParam scannerinfo;
|
||
|
};
|