Files
checker_host/prot/prot_pc.h
2023-11-29 15:36:45 +08:00

89 lines
1.7 KiB
C++

#ifndef prot_pc_h__
#define prot_pc_h__
#include "QObject"
#include "base/base.h"
#include "QList"
#include "interface/codec.h"
#include "interface/interface.h"
#include "base/mycfg.h"
#include "QThread"
#include "QTimer"
// 定义处理命令的类
class HandlePc : public QObject
{
Q_OBJECT
public:
HandlePc() {
busy = 0;
timer_ = nullptr;
}
virtual ~HandlePc() {
if(timer_!=nullptr){
delete timer_;
}
}
virtual int dolater(int cmd, myarray data) = 0;
virtual void timeout()=0;
int busy;
protected:
void timeout_start(int ms){
if(timer_==nullptr){
timer_=new QTimer();
connect(timer_,&QTimer::timeout,this,&HandlePc::timeout);
}
timer_->start(ms);
}
void timeout_stop(){
if(timer_!=nullptr){
timer_->stop();
}
}
private:
QTimer *timer_;
signals:
void send_data_signal(int cmd, myarray data);
};
class ProtPc : public QObject
{
Q_OBJECT
public:
ProtPc()
{
if_ = nullptr;
codec_ = nullptr;
handle_ = nullptr;
}
~ProtPc() {}
void init();
protected slots:
void send_data_slot(int cmd, myarray data);
protected:
InterFace *if_;
Codec *codec_;
HandlePc *handle_;
QThread thread;
myarray recv_data;
};
ProtPc *protPc();
typedef struct
{
int cmd;
HandlePc *(*handle_get_fun)();
} handlepc_def;
#define protpc_export(cmd_, fun_) \
__attribute__((used)) static handlepc_def _handlepc_##cmd_ __attribute__((section("protpc"))) = { \
.cmd = cmd_, \
.handle_get_fun = fun_, \
}
#endif