##// END OF EJS Templates
Functions added to the plugin to get the number of CCSDS packets...
Functions added to the plugin to get the number of CCSDS packets transmitted (linked to the lfrcontrol plugin counter of TC transmitted, it is possible to flush the TC transmission before changing the spacewire link in use)

File last commit:

r25:8fdbbdd7a3a4 default
r40:cda6b4e8adc1 Patch 3 from Paul on spwplugin 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