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

85 lines
2.0 KiB
C
Raw Normal View History

2023-04-08 00:56:20 +00:00
#pragma once
#include <memory>
#include <thread>
#include "BlockingQueue.h"
#include "fsmstate.h"
#include <threadex.h>
#include "commondef.h"
#include "wakeup.hpp"
enum MotorVersion : uint{
Motor_old,
Motor_mltop,
Motor_paperout,
};
class MotorBoard;
class ICapturer;
class IImageHandler;
class Gpio;
class Scanner
{
public:
Scanner(std::shared_ptr<ICapturer> capturer, std::shared_ptr<MotorBoard> mb, std::shared_ptr<WakeUp> wake);
~Scanner();
void try_scan(const std::string encodehexstr);
void configparam(HGScanConfig config);
void start_scan();
void stop_scan();
int count();
int mode();
void put(ScanEvent evt) { sysEvent.Put(evt); }
bool is_runscan();
void set_imagehandler(std::shared_ptr<IImageHandler> handler = nullptr);
void clear_error();
bool paper_ready();
bool get_keeplastpaper();
void set_motorboardcallback(MotorBoardGlue glue);
void set_imgprocparams(HGImgProcParms parmas);
void test_autocorrect(int colormode);
void test_cap(HGScanConfig config);
bool set_hgimgconfig(GScanCap config);
void add_scansever(HGIntInfo event);
void set_sleeptime(int val);
int get_sleeptime();
void resettime();
int get_sleepstatus();
void set_sleepstatus(bool off);
int getimageprocedone();
void set_paprent(void* parent);
bool getpaperon();
int getmbstatus();
std::string getmbversion();
private:
void runMessageLoop();
void runScan();
void startcapimage();
void scanold();
void scanpaperout();
//std::shared_ptr<Gpio> testGpio;
std::thread threadRunMessageLoop;
volatile bool bMsgLoop = true;
BlockingQueue<ScanEvent> sysEvent;
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::function<void(int)> m_mtcallback;
volatile int done_scan = 0;
volatile bool is_ml_top = 0;
volatile bool handstop = 0;
int scancount=0;
volatile unsigned int mb_error_code;
MotorVersion m_mbver;
HGScanConfig m_config;
GScanCap m_cap;
ScannerNativeParam scannerinfo;
void* m_parent;
std::string mbversion;
};