78 lines
2.2 KiB
C++
78 lines
2.2 KiB
C++
/*
|
|
* @Descripttion:
|
|
* @version:
|
|
* @Author: pengming
|
|
* @Date: 2023-10-26 21:31:49
|
|
* @LastEditors: pengming
|
|
*/
|
|
#pragma once
|
|
#include "IScanner.h"
|
|
#include "usb_manager.h"
|
|
#include "defines.h"
|
|
#include "USBProtocol.h"
|
|
#include "BlockingQueue.h"
|
|
|
|
class G1G2Scanner: public IScanner
|
|
{
|
|
public:
|
|
G1G2Scanner(usb_io* usb);
|
|
virtual ~G1G2Scanner();
|
|
virtual void USBDisconnect() override;
|
|
virtual void Reboot(bool b_loader) override;
|
|
virtual void PowerOFF() override;
|
|
virtual void GetFile(std::string path,std::string &content) override;
|
|
virtual void GetIOStatus(int type) override;
|
|
virtual int RecordFinalResult(std::string res) override;
|
|
virtual int CheckLEDDisplay(std::string display) override;
|
|
virtual int Flat(unsigned int mode) override;
|
|
virtual void Snap(unsigned int mode, unsigned int count) override;
|
|
virtual void SetScannerCallback(scanner_call_handler callback, void* user) override;
|
|
virtual int RecordTestInfo(std::string info) override;
|
|
virtual bool CheckSwitchs(int idx0, int idx1, int idx2, int idx3) override;
|
|
virtual bool CheckCapacity(int dst_mem, int dst_disk) override;
|
|
private:
|
|
void init_work_thread();
|
|
void workrun();
|
|
int read_register(int addr, int* val);
|
|
int write_register(int addr, int val);
|
|
std::string read_file(std::string path);
|
|
int write_file(std::string path,std::string content);
|
|
int read_data(void* data, int length, int timeout);
|
|
int update_statue(HGEIntInfo* info);
|
|
bool is_running();
|
|
int im_dev_count();
|
|
bool is_xferfing();
|
|
void xfer_start();
|
|
void xfer_image();
|
|
int get_image_size();
|
|
int get_imgproc_done();
|
|
void popimage();
|
|
void get_cur_dir(std::string& dir);
|
|
//void aquire_imgs()
|
|
private:
|
|
void proc(bool bcachemode);
|
|
void procmsg();
|
|
private:
|
|
scanner_call_handler m_callback;
|
|
void* m_user;
|
|
volatile bool m_bwork;
|
|
volatile bool m_bproc;
|
|
volatile bool m_bprocmsg;
|
|
|
|
std::shared_ptr<std::thread> m_work_thread;
|
|
std::shared_ptr<std::thread> m_imgprocthread;
|
|
std::shared_ptr<std::thread> m_msgProcThread;
|
|
usb_io* m_usb;
|
|
std::mutex m_mtx_usb;
|
|
bool m_online = false;
|
|
int img_index = 0;
|
|
BlockingQueue<std::shared_ptr<std::vector<char>>> imgs;
|
|
BlockingQueue<std::string> m_paths;
|
|
struct Msg
|
|
{
|
|
TASKID id;
|
|
DATA_TYPE type;
|
|
std::string msg;
|
|
};
|
|
BlockingQueue<Msg> m_msg;
|
|
}; |