stardundeespw_usb.h
116 lines
| 3.9 KiB
| text/x-c
|
CLexer
Jeandet Alexis
|
r22 | /*------------------------------------------------------------------------------ | ||
-- This file is a part of the SocExplorer Software | ||||
-- Copyright (C) 2014, Plasma Physics Laboratory - CNRS | ||||
-- | ||||
-- This program is free software; you can redistribute it and/or modify | ||||
-- it under the terms of the GNU General Public License as published by | ||||
-- the Free Software Foundation; either version 3 of the License, or | ||||
-- (at your option) any later version. | ||||
-- | ||||
-- This program is distributed in the hope that it will be useful, | ||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
-- GNU General Public License for more details. | ||||
-- | ||||
-- You should have received a copy of the GNU General Public License | ||||
-- along with this program; if not, write to the Free Software | ||||
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
-------------------------------------------------------------------------------*/ | ||||
/*-- Author : Alexis Jeandet | ||||
-- Mail : alexis.jeandet@member.fsf.org | ||||
----------------------------------------------------------------------------*/ | ||||
#ifndef STARDUNDEESPW_USB_H | ||||
#define STARDUNDEESPW_USB_H | ||||
#include <QObject> | ||||
#include <spw_usb_api.h> | ||||
#include <spw_config_library.h> | ||||
#include <socexplorerplugin.h> | ||||
#include <abstractspwbridge.h> | ||||
#include <QThread> | ||||
#include <QMutex> | ||||
#include <QSemaphore> | ||||
#include <QGridLayout> | ||||
#include <QPushButton> | ||||
#include <QComboBox> | ||||
#include <QLabel> | ||||
#include "stardundeegui.h" | ||||
Jeandet Alexis
|
r25 | |||
Jeandet Alexis
|
r22 | |||
class stardundeeSPW_USB_Manager: public QThread | ||||
{ | ||||
Q_OBJECT | ||||
public: | ||||
explicit stardundeeSPW_USB_Manager(socexplorerplugin *plugin = 0,QObject* 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); | ||||
signals: | ||||
void updateAvailableBrickCount(int count); | ||||
void emitPacket(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_Answer*> RMAP_Answers; | ||||
QList<int> RMAP_pending_transaction_IDs; | ||||
public: | ||||
int selectedBrick; | ||||
int linkNumber; | ||||
int brickList; | ||||
int linkSpeed; | ||||
int destinationKey; | ||||
int rmapAddress; | ||||
int rmapKey; | ||||
int RMAPtimeout; | ||||
}; | ||||
class stardundeeSPW_USB : public abstractSpwBridge | ||||
{ | ||||
Q_OBJECT | ||||
public: | ||||
explicit stardundeeSPW_USB(socexplorerplugin *parent = 0); | ||||
~stardundeeSPW_USB(); | ||||
signals: | ||||
void setRmapTimeout(const QString & timeout); | ||||
void SelectBrick(int brickIndex); | ||||
void SelectLinkNumber(int linkIndex); | ||||
void SelectLinkSpeed(int linkSpeed); | ||||
void SetDestinationKey(const QString & destKey); | ||||
void SetRmapAddress(const QString & address); | ||||
void SetRmapKey(const QString & key); | ||||
void SetRmapTimeout(const QString & timeout); | ||||
public slots: | ||||
void toggleBridgeConnection(); | ||||
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); | ||||
void brickSelectionChanged(int brickIndex); | ||||
void linkNumberSelectionChanged(int linkIndex); | ||||
void linkSpeedSelectionChanged(const QString & linkSpeed); | ||||
void destinationKeyChanged(const QString & destKey); | ||||
void rmapAddressChanged(const QString & rmapaddress); | ||||
void rmapKeyChanged(const QString & key); | ||||
void rmapTimeoutChanged(const QString & timeout); | ||||
private: | ||||
void makeGUI(socexplorerplugin *parent); | ||||
stardundeeSPW_USB_Manager* manager; | ||||
}; | ||||
#endif // STARDUNDEESPW_USB_H | ||||