#ifndef STARDUNDEESPW_USB_H #define STARDUNDEESPW_USB_H #include #include #include #include #include #include #include #include class RMAP_Answer { public: RMAP_Answer(int ID,char* data,int len) { transactionID = ID; this->data = data; this->len = len; } int transactionID; char* data; int len; }; class stardundeeSPW_USB_Manager: public QThread { Q_OBJECT public: explicit stardundeeSPW_USB_Manager(socexplorerplugin *parent = 0); ~stardundeeSPW_USB_Manager(); void run(); bool connectBridge(); bool disconnectBridge(); int getRMAPtransactionID(); int getRMAPanswer(int transactionID,char** buffer); bool sendPacket(char* packet,int size); private: QMutex* handleMutex,*RMAP_AnswersMtx,*RMAP_pending_transaction_IDsMtx; QSemaphore* RMAP_AnswersSem; void pushRmapPacket(char* packet,int len); star_device_handle hDevice; socexplorerplugin* plugin; bool connected; char* SPWPacketBuff; QList RMAP_Answers; QList RMAP_pending_transaction_IDs; }; class stardundeeSPW_USB : public abstractSpwBridge { Q_OBJECT public: explicit stardundeeSPW_USB(socexplorerplugin *parent = 0); signals: public slots: bool connectBridge(); bool disconnectBridge(); int pushRMAPPacket(char* packet,int size); 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); private: stardundeeSPW_USB_Manager* manager; }; #endif // STARDUNDEESPW_USB_H