stardundeespw_usb.h
149 lines
| 5.4 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> | ||||
r63 | //#include <spw_usb_api.h> | |||
//#include <spw_config_library.h> | ||||
#include "fakestardundeespwusb_lib.h" | ||||
Jeandet Alexis
|
r22 | #include <socexplorerplugin.h> | ||
#include <abstractspwbridge.h> | ||||
#include <QThread> | ||||
#include <QMutex> | ||||
#include <QSemaphore> | ||||
#include <QGridLayout> | ||||
#include <QPushButton> | ||||
#include <QComboBox> | ||||
#include <QLabel> | ||||
#include "stardundeegui.h" | ||||
paul
|
r35 | #define BRICK_IS_SET_AS_AN_INTERFACE true | ||
#define BRICK_IS_SET_AS_A_ROUTER false | ||||
Jeandet Alexis
|
r22 | |||
Alexis Jeandet
|
r78 | class stardundeeSPW_USB_Manager: public abstractSpwManager | ||
Jeandet Alexis
|
r22 | { | ||
Q_OBJECT | ||||
public: | ||||
explicit stardundeeSPW_USB_Manager(socexplorerplugin *plugin = 0,QObject* parent=0); | ||||
~stardundeeSPW_USB_Manager(); | ||||
Alexis Jeandet
|
r82 | virtual void run(); | ||
virtual bool connectBridge(); | ||||
paul
|
r35 | bool connectBridgeAsInterface(); | ||
bool connectBridgeAsRouter(); | ||||
void initDialog( void ); | ||||
unsigned char setRoutingTableEntry(int tableEntry, U32 dwOutputPorts, char bDelHead); | ||||
unsigned int getRoutingTableEntry(int tableEntry); | ||||
void initializeTimecodeGeneration(); | ||||
paul
|
r38 | void setTimecodeFrequency(double requestedFrequency); | ||
paul
|
r35 | unsigned int getLinkStatus(unsigned char link); | ||
Alexis Jeandet
|
r82 | virtual bool disconnectBridge(); | ||
virtual bool sendPacket(char* packet,int size); | ||||
Jeandet Alexis
|
r22 | |||
signals: | ||||
void updateAvailableBrickCount(int count); | ||||
void emitPacket(char* packet,int size); | ||||
paul
|
r35 | void bytesReceivedFromSpw( unsigned int ); | ||
void bytesTransmittedToSpw( unsigned int); | ||||
paul
|
r40 | void ccsdsPacketTransmittedToSpw( void ); | ||
paul
|
r35 | |||
paul
|
r38 | public slots: | ||
void sendTimecodePeriodically( bool onOff ); | ||||
paul
|
r46 | void sendOneTimecode(unsigned char nTimein); | ||
paul
|
r40 | int getLinkNumber( void ); | ||
paul
|
r38 | |||
Jeandet Alexis
|
r22 | private: | ||
Alexis Jeandet
|
r78 | //QSemaphore* RMAP_AnswersSem; | ||
Jeandet Alexis
|
r22 | star_device_handle hDevice; | ||
paul
|
r35 | QLabel *starDundeeStatusQueryDialogLabel; | ||
QPushButton *starDundeeStatusQueryRetryButton; | ||||
QPushButton *starDundeeStatusQueryAbortButton; | ||||
QLabel *statusLink1; | ||||
QLabel *statusLink2; | ||||
QPushButton *starDundeeStatusQueryContinueButton; | ||||
QDialog *starDundeeStatusQueryDialog; | ||||
QGridLayout *starDundeeStatusQueryDialogLayout; | ||||
Jeandet Alexis
|
r22 | public: | ||
int selectedBrick; | ||||
int brickList; | ||||
int linkSpeed; | ||||
paul
|
r38 | double timecodeFrequency; | ||
paul
|
r35 | bool interfaceMode; // 1 => interface mode, 0 => router mode | ||
Jeandet Alexis
|
r22 | }; | ||
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); | ||||
paul
|
r38 | void SetSourceAddress(const QString & address); | ||
void SetDestinationAddress(const QString & address); | ||||
Jeandet Alexis
|
r22 | void SetRmapTimeout(const QString & timeout); | ||
paul
|
r38 | void SetTimecodeFrequency( double ); | ||
paul
|
r35 | void SetBrickAsAnInterface( bool ); | ||
void SetBrickAsARouter( bool ); | ||||
int GetAvailableBrickCount( void ); | ||||
paul
|
r40 | unsigned int GetNbPacketsTransmittedToSpw( void ); | ||
unsigned int GetNbCCSDSPacketsTransmittedToSpw( void ); | ||||
paul
|
r35 | void BytesReceivedFromSpw( unsigned int ); | ||
void BytesTransmittedToSpw( unsigned int ); | ||||
paul
|
r40 | void CCSDSPacketTransmittedToSpw( void ); | ||
paul
|
r38 | void StartSendingTimecodes( bool ); | ||
paul
|
r46 | void SendOneTimecode( unsigned char ); | ||
paul
|
r40 | int GetLinkNumber(); | ||
Jeandet Alexis
|
r22 | |||
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); | ||||
paul
|
r35 | void sourceLogicalAddressChanged(const QString & destKey); | ||
paul
|
r38 | void destinationAddressChanged(const QString & rmapaddress); | ||
paul
|
r35 | void brickModeChanged( bool interfaceMode ); | ||
void destinationKeyChanged(const QString & key); | ||||
Jeandet Alexis
|
r22 | void rmapTimeoutChanged(const QString & timeout); | ||
paul
|
r35 | void sendPacketComingFromTCPServer(char *packet, int size); | ||
paul
|
r38 | void timecodeFrequencyChanged(const QString &frequency); | ||
void startSendingTimecodes( bool onOff ); | ||||
Jeandet Alexis
|
r22 | private: | ||
void makeGUI(socexplorerplugin *parent); | ||||
stardundeeSPW_USB_Manager* manager; | ||||
}; | ||||
#endif // STARDUNDEESPW_USB_H | ||||