#ifndef GR_ESB_BRIDGE_H #define GR_ESB_BRIDGE_H #include "abstractspwbridge.h" #include #include #include #include struct gresb_Conf_str { qint32 Read_port; qint32 Write_port; }; 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 }; 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_Answers; QList RMAP_pending_transaction_IDs; public: QTcpSocket* Read_soc; QTcpSocket* Write_soc; QString IP; int virtualLinkIndex; int RMAPtimeout; }; class GR_ESB_bridge : public abstractSpwBridge { Q_OBJECT public: explicit GR_ESB_bridge(socexplorerplugin *parent = 0); ~GR_ESB_bridge(); signals: public slots: void toggleBridgeConnection(); bool connectBridge(); bool disconnectBridge(); void setIP(QString ip); void setVirtualLink(QString vlink); void setVirtualLink(qint32 vlink); 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); void packetReceived(); private: GR_ESB_Manager* manager; }; #endif // GR_ESB_BRIDGE_H