##// END OF EJS Templates
Improved AHB UART Plugin, now check how many bytes are available on uart...
Improved AHB UART Plugin, now check how many bytes are available on uart before reading.

File last commit:

r25:8fdbbdd7a3a4 default
r33:de3df68ac881 default
Show More
gr_esb_bridge.h
88 lines | 2.0 KiB | text/x-c | CLexer
#ifndef GR_ESB_BRIDGE_H
#define GR_ESB_BRIDGE_H
#include "abstractspwbridge.h"
#include <QTcpSocket>
#include <QThread>
#include <QMutex>
#include <QSemaphore>
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_Answer*> RMAP_Answers;
QList<int> 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