|
|
#ifndef GRESB_H
|
|
|
#define GRESB_H
|
|
|
|
|
|
#include <QWidget>
|
|
|
#include <QLabel>
|
|
|
#include <QPushButton>
|
|
|
#include <QSpinBox>
|
|
|
#include <QGridLayout>
|
|
|
#include <QTcpSocket>
|
|
|
#include <QDialog>
|
|
|
#include <QSemaphore>
|
|
|
|
|
|
#include "gresbstatusenquiry.h"
|
|
|
#include "rmapoperations.h"
|
|
|
#include "qipdialogbox.h"
|
|
|
#include "ccsds.h"
|
|
|
#include "tmpackettoread.h"
|
|
|
|
|
|
class gresb : public QWidget
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
public:
|
|
|
explicit gresb(QWidget *parent = 0);
|
|
|
~gresb();
|
|
|
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);
|
|
|
unsigned int WriteSPW(char *Value, unsigned int count, char targetLogicalAddress, char userApplication);
|
|
|
|
|
|
unsigned int storeCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size);
|
|
|
|
|
|
gresbStatusEnquiry* spwLinkStatusEnquiry;
|
|
|
|
|
|
signals:
|
|
|
void sendMessage(QString message);
|
|
|
void sendPacket(TMPacketToRead*);
|
|
|
void isOpen(bool);
|
|
|
void RMAP_write_reply_setText(QString);
|
|
|
void appendToLog(QString);
|
|
|
|
|
|
public slots:
|
|
|
void Open();
|
|
|
void Close();
|
|
|
int receiveSPWPacketLoop(unsigned char requestID=0);
|
|
|
int receiveSPWPacket(unsigned char requestID=0);
|
|
|
void commandCodeHasChanged(RMAP_command_codes code) {this->commandCode = code;}
|
|
|
void targetHasChanged(int target) {rmapTargetLogicalAddress = (unsigned char) target;}
|
|
|
void sourceHasChanged(int source) {rmapSourceLogicalAddress = (unsigned char) source;}
|
|
|
void ccsdsPacketIsProcessed() {ccsdsPacketSEMAPHORE->tryAcquire();}
|
|
|
void reTestSPWLink();
|
|
|
//
|
|
|
void RMAPSendConnectionState(QAbstractSocket::SocketState socketState);
|
|
|
void RMAPReceiveConnectionState(QAbstractSocket::SocketState socketState);
|
|
|
void GRESBConnectionState(QAbstractSocket::SocketState socketState);
|
|
|
//
|
|
|
void setIP(unsigned char address1, unsigned char address2, unsigned char address3, unsigned char address4)
|
|
|
{this->gresbBridgeIPDialogBox->setIP(address1, address2, address3, address4);}
|
|
|
|
|
|
private slots:
|
|
|
int GRESBStatusQuery();
|
|
|
|
|
|
private:
|
|
|
unsigned int WriteBLOCK(char *data,unsigned int nbBytes,unsigned int address=0);
|
|
|
unsigned int ReadBLOCK(unsigned int nbBytes,unsigned int address=0);
|
|
|
void acquireRMAPSemaphore() {rmapPacketSEMAPHORE->tryAcquire();}
|
|
|
void acquireCCSDSSemaphore() {ccsdsPacketSEMAPHORE->tryAcquire();}
|
|
|
int GRESBStatusQueryRequest(GresbStatusQueryOption option, char link);
|
|
|
|
|
|
unsigned char rmapTargetLogicalAddress ;
|
|
|
unsigned char rmapSourceLogicalAddress ;
|
|
|
|
|
|
RMAP_command_codes commandCode;
|
|
|
|
|
|
QPushButton *gresbStatusQueryRetryButton;
|
|
|
QPushButton *gresbStatusQueryAbortButton;
|
|
|
|
|
|
QLabel *gresbBridgeIPLabel;
|
|
|
QLabel *gresbVirtualLinkLabel;
|
|
|
QLabel *spwLinkLabel;
|
|
|
QLabel *rmapSendStateLabel;
|
|
|
QLabel *rmapReceiveStateLabel;
|
|
|
QLabel *gresbStatusQueryLabel;
|
|
|
QLabel *gresbStatusQueryDialogLabel;
|
|
|
|
|
|
QDialog *gresbStatusQueryDialog;
|
|
|
|
|
|
QIPDialogBox* gresbBridgeIPDialogBox;
|
|
|
|
|
|
QSpinBox *gresbVirtualLinkSpinBox;
|
|
|
QSpinBox *spwLinkSpinBox;
|
|
|
|
|
|
QGridLayout *connectionLayout;
|
|
|
QGridLayout *gresbStatusQueryDialogLayout;
|
|
|
|
|
|
QTcpSocket *RMAPSend_SOCKET;
|
|
|
QTcpSocket *RMAPReceive_SOCKET;
|
|
|
QTcpSocket *GRESBStatusQuery_SOCKET;
|
|
|
|
|
|
// Packet receiver
|
|
|
QSemaphore *rmapPacketSEMAPHORE;
|
|
|
QSemaphore *ccsdsPacketSEMAPHORE;
|
|
|
char* rmapPacket; // The buffer to receive RMAP READ packets
|
|
|
unsigned char *ccsdsPacket;
|
|
|
char *spwPacket;
|
|
|
unsigned int rmapPacketSize;
|
|
|
unsigned int ccsdsPacketSize;
|
|
|
};
|
|
|
|
|
|
#endif // GRESB_H
|
|
|
|