#pragma once #include #include #include "BlockingQueue.h" #include "fsmstate.h" #include #include "IScanner.h" #include "wakeup.hpp" #include "commondef.h" class MotorBoard; class ICapturer; class IImageHandler; class MotorController; class CSizedetect; class CImageApplyDogEarDetection; class Scanner : public IScanner { public: Scanner(std::shared_ptr capturer, std::shared_ptr mb, std::shared_ptr wake); virtual ~Scanner(); 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; virtual int count() override; virtual int mode() override; virtual void put(ScanEvent evt) override { sysEvent.Put(evt); } virtual bool is_runscan() override; virtual void set_imagehandler(std::shared_ptr 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; virtual std::shared_ptr get_capture(void) override { return capturer; } private: 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 sysEvent; std::shared_ptr m_dog; std::shared_ptr m_sizedetect; std::shared_ptr mb; std::shared_ptr capturer; std::shared_ptr wake; std::shared_ptr fu_runscan; std::shared_ptr imagehandler; std::shared_ptr m_motorcontrol; std::shared_ptr m_capturereload; std::function m_mtcallback; volatile int done_scan = 0; volatile bool is_ml_top = 0; volatile bool handstop = 0; 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; };