#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 void single_correct(std::uint32_t mode) override; virtual void set_sensor_param(int type,uint32_t val) override; virtual std::uint32_t get_ultrasonic_version() override; virtual std::uint32_t get_fpga_version() override { return mfpgaversion;} private: void runMessageLoop(); void runScan(); void testRunscan(); void preFeed(); void startcapimage(bool value); bool getcapimageflag(); bool pickpaper(); void autosizescan(); void fixedsizescan(); void scan_process_8478(bool is_fixed); int waitpaperout(); void ControlFeedMode(); bool ExceptionCheck(); int ContaminationDetection(); int ContaminationDetection_8478(); void update_disk_syslog(std::string info,bool bprintf_diskinfo); void update_mem_syslog(std::string info,bool bprinf_meminfo); 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; std::uint32_t capturer_type; volatile int done_scan = 0; volatile bool handstop = 0; volatile bool is_ml_top = 0; volatile bool slow_moire = 0; volatile int scannum = 0; int scancount = 0; volatile unsigned int mb_error_code =0; HGScanConfig m_config{0}; GScanCap m_cap{0}; ScannerNativeParam scannerinfo; void *m_parent; std::string mbversion; unsigned int mfpgaversion; };