#ifndef GRESB_H #define GRESB_H #include #include #include #include #include #include #include #include #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