rk3399_arm_lvds/scanner/scanner.h

109 lines
3.6 KiB
C
Raw Permalink Normal View History

2024-03-05 03:46:18 +00:00
#pragma once
#include <memory>
#include <thread>
#include "BlockingQueue.h"
#include "fsmstate.h"
#include <threadex.h>
#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<ICapturer> capturer, std::shared_ptr<MotorBoard> mb, std::shared_ptr<WakeUp> 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<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;
virtual void single_correct(std::uint32_t mode) override;
virtual void set_sensor_param(int type,uint32_t val) override;
2024-03-18 06:31:20 +00:00
virtual std::uint32_t get_ultrasonic_version() override;
2024-03-05 03:46:18 +00:00
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<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;
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;
};