#ifndef STARDUNDEE_H #define STARDUNDEE_H #include #include #include #include #include #include #include #include #include "rmapoperations.h" #include "spw_usb_api.h" #include "spw_config_library.h" #include "ccsds.h" #include "tmpackettoread.h" #define BWAIT_0 0 #define BWAIT_1 1 #define PATH_ADDRESSING_OFFSET 1 class StarDundee : public QWidget { Q_OBJECT public: explicit StarDundee(QWidget *parent = 0); ~StarDundee(); 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); 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(); void reTestSPWLink(); 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 receivePollingLoop(); 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();} unsigned char setRoutingTableEntry(int tableEntry, U32 dwOutputPorts); unsigned int getLinkStatus(unsigned char link); unsigned int GetRoutingTableEntry(int tableEntry); unsigned char rmapTargetLogicalAddress ; unsigned char rmapSourceLogicalAddress ; RMAP_command_codes commandCode; QLabel *usbDeviceNumber_LABEL; QLabel *linkNumber_LABEL; QLabel *starDundeeStatusQueryDialogLabel; QSpinBox *usbDeviceNumber_SPINBOX; QSpinBox *linkNumber_SPINBOX; QGridLayout *connection_LAYOUT; QGridLayout *starDundeeStatusQueryDialogLayout; QDialog *starDundeeStatusQueryDialog; QPushButton *starDundeeStatusQueryRetryButton; QPushButton *starDundeeStatusQueryAbortButton; QTimer *timer; unsigned char pBuffer[10]; // Pointer to the start of the user buffer from which to transmit data USB_SPACEWIRE_ID pIdentifierRead; // A pointer to a variable which will be set to contain a unique identifier for the read USB_SPACEWIRE_ID pIdentifier; star_device_handle hDevice; // Handle to the SpaceWire device USB_SPACEWIRE_STATUS result; // The result of the send operation // 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 // STARDUNDEE_H