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

104 lines
2.7 KiB
C
Raw Normal View History

2023-04-08 00:56:20 +00:00
#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;
};