Files
checker_host/prot/prot_pc.h

90 lines
1.7 KiB
C
Raw Normal View History

2023-11-26 23:05:35 +08:00
#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"
2023-11-27 14:31:00 +08:00
#include "QTimer"
2023-11-26 23:05:35 +08:00
// 定义处理命令的类
2023-11-27 14:31:00 +08:00
class HandlePc : public QObject
{
2023-11-26 23:05:35 +08:00
Q_OBJECT
public:
2023-11-27 14:31:00 +08:00
HandlePc() {
busy = 0;
timer_ = nullptr;
}
virtual ~HandlePc() {
if(timer_!=nullptr){
delete timer_;
}
}
virtual int dolater(int cmd, myarray data) = 0;
virtual void timeout()=0;
2023-11-26 23:05:35 +08:00
int busy;
2023-11-27 14:31:00 +08:00
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_;
2023-11-26 23:05:35 +08:00
signals:
2023-11-27 14:31:00 +08:00
void send_data_signal(int cmd, myarray data);
2023-11-26 23:05:35 +08:00
};
2023-11-27 14:31:00 +08:00
class ProtPc : public QObject
{
2023-11-26 23:05:35 +08:00
Q_OBJECT
public:
2023-11-27 14:31:00 +08:00
ProtPc()
{
if_ = nullptr;
codec_ = nullptr;
handle_ = nullptr;
}
~ProtPc() {}
2023-11-26 23:05:35 +08:00
void init();
2023-12-07 18:29:49 +08:00
bool docmd(int cmd,myarray data);
public slots:
2023-11-27 14:31:00 +08:00
void send_data_slot(int cmd, myarray data);
2023-11-26 23:05:35 +08:00
protected:
InterFace *if_;
Codec *codec_;
HandlePc *handle_;
QThread thread;
myarray recv_data;
};
ProtPc *protPc();
2023-11-27 14:31:00 +08:00
typedef struct
{
int cmd;
HandlePc *(*handle_get_fun)();
} handlepc_def;
2023-11-26 23:05:35 +08:00
2023-11-27 14:31:00 +08:00
#define protpc_export(cmd_, fun_) \
2023-11-29 15:36:45 +08:00
__attribute__((used)) static handlepc_def _handlepc_##cmd_ __attribute__((section("protpc"))) = { \
2023-11-27 14:31:00 +08:00
.cmd = cmd_, \
.handle_get_fun = fun_, \
}
2023-11-26 23:05:35 +08:00
#endif