tx-gxx-linux/device/gxx-linux/scanner/scanner.h

99 lines
3.1 KiB
C
Raw Normal View History

2023-04-08 00:56:20 +00:00
#pragma once
2023-05-02 01:50:55 +00:00
#include <memory>
#include <thread>
#include "BlockingQueue.h"
#include "fsmstate.h"
#include <threadex.h>
#include "IScanner.h"
#include "wakeup.hpp"
#include "commondef.h"
2023-04-08 00:56:20 +00:00
2023-05-02 01:50:55 +00:00
class MotorBoard;
class ICapturer;
class IImageHandler;
class MotorController;
class CSizedetect;
class CImageApplyDogEarDetection;
2023-04-08 00:56:20 +00:00
class Scanner : public IScanner
2023-04-08 00:56:20 +00:00
{
public:
2023-05-02 01:50:55 +00:00
Scanner(std::shared_ptr<ICapturer> capturer, std::shared_ptr<MotorBoard> mb, std::shared_ptr<WakeUp> wake);
virtual ~Scanner();
2023-05-02 01:50:55 +00:00
virtual void try_scan(const std::string encodehexstr) override;
virtual void configparam(HGScanConfig config) override;
virtual void start_scan() override;
virtual void stop_scan() override;
2023-05-02 01:50:55 +00:00
virtual int count() override;
virtual int mode() override;
2023-05-02 01:50:55 +00:00
virtual void put(ScanEvent evt) override { sysEvent.Put(evt); }
virtual bool is_runscan() override;
virtual void set_imagehandler(std::shared_ptr<IImageHandler> handler = nullptr) override;
virtual void clear_error() override;
virtual bool paper_ready() override;
virtual bool get_keeplastpaper() override;
virtual void set_motorboardcallback(MotorBoardGlue glue) override;
virtual void set_imgprocparams(HGImgProcParms parmas) override;
virtual void test_autocorrect(int colormode) override;
virtual void test_cap(HGScanConfig config) override;
virtual bool set_hgimgconfig(GScanCap config) override;
virtual void add_scansever(HGIntInfo event) override;
virtual void set_sleeptime(int val) override;
virtual int get_sleeptime() override;
virtual void resettime() override;
virtual int get_sleepstatus() override;
virtual void set_sleepstatus(bool off) override;
virtual int getimageprocedone() override;
virtual void set_paprent(void *parent) override;
virtual bool getpaperon() override;
virtual int getmbstatus() override;
virtual std::string getmbversion() override;
virtual void setfeedmode(int value) override;
virtual void settrayposition(int value) override;
virtual void clean_paper_road() override;
2023-04-08 00:56:20 +00:00
private:
2023-05-02 01:50:55 +00:00
void runMessageLoop();
void runScan();
void testRunscan();
void preFeed();
void startcapimage(bool value);
bool getcapimageflag();
bool pickpaper();
void autosizescan();
void fixedsizescan();
int waitpaperout();
void ControlFeedMode();
bool ExceptionCheck();
ImgStatus ImgDetect();
std::thread threadRunMessageLoop;
volatile bool bMsgLoop = true;
BlockingQueue<ScanEvent> sysEvent;
std::shared_ptr<CImageApplyDogEarDetection> m_dog;
std::shared_ptr<CSizedetect> m_sizedetect;
std::shared_ptr<MotorBoard> mb;
std::shared_ptr<ICapturer> capturer;
std::shared_ptr<WakeUp> wake;
std::shared_ptr<ThreadEx> fu_runscan;
std::shared_ptr<IImageHandler> imagehandler;
std::shared_ptr<MotorController> m_motorcontrol;
std::shared_ptr<ThreadEx> m_capturereload;
std::function<void(int)> m_mtcallback;
2023-04-08 00:56:20 +00:00
volatile int done_scan = 0;
volatile bool is_ml_top = 0;
volatile bool handstop = 0;
2023-05-02 01:50:55 +00:00
volatile int scannum = 0;
int scancount = 0;
volatile unsigned int mb_error_code;
HGScanConfig m_config;
GScanCap m_cap;
ScannerNativeParam scannerinfo;
void *m_parent;
std::string mbversion;
unsigned int mfpgaversion;
2023-04-08 00:56:20 +00:00
};