tx-gxx-linux/device/gxx-linux/capimage/Capturer.h

70 lines
1.9 KiB
C++

#pragma once
#include <ICapturer.h>
#include "hgutils.h"
class FpgaComm;
class gVideo;
class Gpio;
class Capturer : public ICapturer
{
public:
Capturer();
virtual ~Capturer();
virtual void Fpga_regsAccess_reset(bool enable);
virtual void open();
virtual void open(HGScanConfig config,FPGAConfigParam fpgaparam);
virtual void close();
virtual void start();
virtual void stop();
virtual bool is_runing();
virtual void snap();
virtual void stopsnap(){}
virtual int getautosizeheight(){return 0;}
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<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;
};