gr_esb_bridge.h
88 lines
| 2.0 KiB
| text/x-c
|
CLexer
Jeandet Alexis
|
r22 | #ifndef GR_ESB_BRIDGE_H | ||
#define GR_ESB_BRIDGE_H | ||||
#include "abstractspwbridge.h" | ||||
Jeandet Alexis
|
r23 | #include <QTcpSocket> | ||
Jeandet Alexis
|
r25 | #include <QThread> | ||
#include <QMutex> | ||||
#include <QSemaphore> | ||||
Jeandet Alexis
|
r22 | |||
Jeandet Alexis
|
r24 | struct gresb_Conf_str | ||
{ | ||||
qint32 Read_port; | ||||
qint32 Write_port; | ||||
}; | ||||
Jeandet Alexis
|
r25 | |||
Jeandet Alexis
|
r24 | const struct gresb_Conf_str gresb_Conf[]= | ||
{ | ||||
{3000,3001}, //Virtual link 0 | ||||
{3002,3003}, //Virtual link 1 | ||||
{3004,3005}, //Virtual link 2 | ||||
{3006,3007}, //Virtual link 3 | ||||
{3008,3009}, //Virtual link 4 | ||||
{3010,3011} //Virtual link 5 | ||||
}; | ||||
Jeandet Alexis
|
r25 | |||
class GR_ESB_Manager: public QThread | ||||
{ | ||||
Q_OBJECT | ||||
public: | ||||
explicit GR_ESB_Manager(socexplorerplugin *plugin = 0,QObject* parent=0); | ||||
~GR_ESB_Manager(); | ||||
void run(); | ||||
bool connectBridge(); | ||||
bool disconnectBridge(); | ||||
int getRMAPtransactionID(); | ||||
int getRMAPanswer(int transactionID,char** buffer); | ||||
bool sendPacket(char* packet,int size); | ||||
signals: | ||||
void emitPacket(char* packet,int size); | ||||
private: | ||||
QMutex* handleMutex,*RMAP_AnswersMtx,*RMAP_pending_transaction_IDsMtx; | ||||
QSemaphore* RMAP_AnswersSem; | ||||
void pushRmapPacket(char* packet,int len); | ||||
socexplorerplugin* plugin; | ||||
bool connected; | ||||
char* SPWPacketBuff; | ||||
QList<RMAP_Answer*> RMAP_Answers; | ||||
QList<int> RMAP_pending_transaction_IDs; | ||||
public: | ||||
QTcpSocket* Read_soc; | ||||
QTcpSocket* Write_soc; | ||||
QString IP; | ||||
int virtualLinkIndex; | ||||
int RMAPtimeout; | ||||
}; | ||||
Jeandet Alexis
|
r22 | class GR_ESB_bridge : public abstractSpwBridge | ||
{ | ||||
Q_OBJECT | ||||
public: | ||||
explicit GR_ESB_bridge(socexplorerplugin *parent = 0); | ||||
Jeandet Alexis
|
r23 | ~GR_ESB_bridge(); | ||
Jeandet Alexis
|
r22 | signals: | ||
public slots: | ||||
Jeandet Alexis
|
r25 | void toggleBridgeConnection(); | ||
Jeandet Alexis
|
r22 | bool connectBridge(); | ||
bool disconnectBridge(); | ||||
Jeandet Alexis
|
r24 | void setIP(QString ip); | ||
void setVirtualLink(QString vlink); | ||||
void setVirtualLink(qint32 vlink); | ||||
Jeandet Alexis
|
r22 | unsigned int Write(unsigned int *Value,unsigned int count, unsigned int address=0); | ||
unsigned int Read(unsigned int *Value,unsigned int count, unsigned int address=0); | ||||
int pushRMAPPacket(char* packet,int size); | ||||
Jeandet Alexis
|
r23 | void packetReceived(); | ||
Jeandet Alexis
|
r22 | |||
Jeandet Alexis
|
r24 | private: | ||
Jeandet Alexis
|
r25 | |||
GR_ESB_Manager* manager; | ||||
Jeandet Alexis
|
r22 | |||
}; | ||||
#endif // GR_ESB_BRIDGE_H | ||||