gr_esb_bridge.h
96 lines
| 2.1 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> | ||||
Alexis Jeandet
|
r78 | #include <QQueue> | ||
Jeandet Alexis
|
r22 | |||
Jeandet Alexis
|
r24 | struct gresb_Conf_str | ||
{ | ||||
Alexis Jeandet
|
r78 | qint32 Transmit_port; | ||
qint32 Receive_port; | ||||
Jeandet Alexis
|
r24 | }; | ||
Jeandet Alexis
|
r25 | |||
Jeandet Alexis
|
r24 | const struct gresb_Conf_str gresb_Conf[]= | ||
{ | ||||
Alexis Jeandet
|
r78 | {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
|
r24 | }; | ||
Jeandet Alexis
|
r25 | |||
Alexis Jeandet
|
r78 | class GR_ESB_Manager: public abstractSpwManager | ||
Jeandet Alexis
|
r25 | { | ||
Q_OBJECT | ||||
Alexis Jeandet
|
r78 | |||
typedef struct packetBuffer_t | ||||
{ | ||||
char* buffer; | ||||
int PacketLen; | ||||
int index; | ||||
bool complete; | ||||
}packetBuffer_t; | ||||
Jeandet Alexis
|
r25 | public: | ||
explicit GR_ESB_Manager(socexplorerplugin *plugin = 0,QObject* parent=0); | ||||
~GR_ESB_Manager(); | ||||
void run(); | ||||
bool connectBridge(); | ||||
bool disconnectBridge(); | ||||
bool sendPacket(char* packet,int size); | ||||
signals: | ||||
void emitPacket(char* packet,int size); | ||||
private: | ||||
void pushRmapPacket(char* packet,int len); | ||||
char* SPWPacketBuff; | ||||
Alexis Jeandet
|
r78 | |||
void __processPacket(packetBuffer_t *packet); | ||||
QByteArray __processData(const QByteArray &data, packetBuffer_t* buffer); | ||||
private slots: | ||||
void readyRead(); | ||||
Jeandet Alexis
|
r25 | |||
public: | ||||
Alexis Jeandet
|
r78 | QTcpSocket Read_soc; | ||
QTcpSocket Write_soc; | ||||
QMutex incomingPacketsMutex; | ||||
QQueue<QByteArray> incomingPackets; | ||||
Jeandet Alexis
|
r25 | QString IP; | ||
int virtualLinkIndex; | ||||
}; | ||||
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); | ||||
Alexis Jeandet
|
r79 | //void packetReceived(); | ||
Jeandet Alexis
|
r22 | |||
Jeandet Alexis
|
r24 | private: | ||
Jeandet Alexis
|
r25 | |||
GR_ESB_Manager* manager; | ||||
Jeandet Alexis
|
r22 | |||
}; | ||||
#endif // GR_ESB_BRIDGE_H | ||||