##// END OF EJS Templates
Functions added to the plugin to get the number of CCSDS packets...
Functions added to the plugin to get the number of CCSDS packets transmitted (linked to the lfrcontrol plugin counter of TC transmitted, it is possible to flush the TC transmission before changing the spacewire link in use)

File last commit:

r40:cda6b4e8adc1 Patch 3 from Paul on spwplugin default
r40:cda6b4e8adc1 Patch 3 from Paul on spwplugin default
Show More
spwplugin.cpp
180 lines | 8.0 KiB | text/x-c | CppLexer
First init /!\ outdated spwplugin!
r0 /*------------------------------------------------------------------------------
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 -- This file is a part of the SocExplorer Software
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 -- Copyright (C) 2014, Plasma Physics Laboratory - CNRS
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 --
-- 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
First init /!\ outdated spwplugin!
r0 -------------------------------------------------------------------------------*/
/*-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@member.fsf.org
----------------------------------------------------------------------------*/
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8
First init /!\ outdated spwplugin!
r0 #include "spwplugin.h"
#include "stardundeespw_usb.h"
Jeandet Alexis
Started GR-ESB driver.
r22 #include "gr_esb_bridge.h"
Jeandet Alexis
Sync
r7 #include <socexplorerproxy.h>
Added stop function to dsu3plugin...
r14 #include "spwpywrapper.h"
Jeandet Alexis
Sync
r18
Jeandet Alexis
Some work on GRESB driver for spwplugin.
r25
Added stop function to dsu3plugin...
r14 spwplugin::spwplugin(QWidget *parent):socexplorerplugin(parent,false)
First init /!\ outdated spwplugin!
r0 {
Q_UNUSED(parent)
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 this->bridge = NULL;
Jeandet Alexis
Sync
r7 this->scanDone = false;
Added stop function to dsu3plugin...
r14 this->pyObject = new spwPyWrapper(this);
Jeandet Alexis
Sync
r18 this->tcpServer = new SpwTcpPacketServer(this);
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 this->mainGroupBox = new QGroupBox("SpaceWire Plugin Configuration",this);
this->bridgeSelector = new QComboBox(this);
Jeandet Alexis
Sync
r18 this->mainTabWidgt = new QTabWidget(this);
Sync
r19 this->mainTabWidgt->addTab(this->mainGroupBox,"Bridge Configuration");
this->mainTabWidgt->addTab(this->tcpServer,"TCP Server");
Jeandet Alexis
Now RMAP write uses Transaction ID and waits for ack.
r16 this->mainLayout = new QGridLayout(this->mainGroupBox);
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 this->mainLayout->addWidget(new QLabel("Select SpaceWire bridge",this),0,0,1,1,Qt::AlignCenter);
this->mainLayout->addWidget(this->bridgeSelector,0,1,1,1);
Sync
r19 this->setWidget(this->mainTabWidgt);
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 this->bridgeSelector->addItem("none");
this->bridgeSelector->addItem("STAR-Dundee Spw USB Brick");
Jeandet Alexis
Started GR-ESB driver.
r22 this->bridgeSelector->addItem("GR-ESB");
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 connect(this->bridgeSelector,SIGNAL(currentIndexChanged(QString)),this,SLOT(bridgeSelectionChanged(QString)));
Jeandet Alexis
Sync
r15 connect(((spwPyWrapper*)this->pyObject),SIGNAL(selectBridge(QString)),this,SLOT(selectBridge(QString)));
Jeandet Alexis
Sync
r20 connect(((spwPyWrapper*)this->pyObject),SIGNAL(TCPServerConnect()),this->tcpServer,SLOT(connectServer()));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(TCPServerDisconnect()),this->tcpServer,SLOT(disconnectServer()));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(TCPServerSetPort(qint32)),this->tcpServer,SLOT(setServerPort(qint32)));
Sync
r21 connect(((spwPyWrapper*)this->pyObject),SIGNAL(TCPServerSetIP(QString)),this->tcpServer,SLOT(setServerSetIP(QString)));
First init /!\ outdated spwplugin!
r0 }
spwplugin::~spwplugin()
{
}
unsigned int spwplugin::Read(unsigned int *Value,unsigned int count,unsigned int address)
{
if(Connected)
{
return bridge->Read(Value,count,address);
}
return 0;
}
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 void spwplugin::bridgeSelectionChanged(const QString &text)
{
printf("test");
if(text=="none")
{
if(this->bridge!=NULL)
{
this->mainLayout->removeWidget(this->bridge->getGUI());
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 this->disconnect(this,SLOT(setConnected(bool)));
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 delete this->bridge;
this->bridge= NULL;
}
}
if(text=="STAR-Dundee Spw USB Brick")
{
if(this->bridge!=NULL)
{
this->mainLayout->removeWidget(this->bridge->getGUI());
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 this->disconnect(this,SLOT(setConnected(bool)));
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 delete this->bridge;
}
this->bridge = new stardundeeSPW_USB(this);
this->mainLayout->addWidget(this->bridge->getGUI(),1,0,1,2);
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 connect(this->bridge,SIGNAL(setConnected(bool)),this,SLOT(setConnected(bool)));
Added stop function to dsu3plugin...
r14 connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSelectBrick(int)),((stardundeeSPW_USB*)bridge),SIGNAL(SelectBrick(int)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSelectLinkNumber(int)),((stardundeeSPW_USB*)bridge),SIGNAL(SelectLinkNumber(int)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSelectLinkSpeed(int)),((stardundeeSPW_USB*)bridge),SIGNAL(SelectLinkSpeed(int)));
paul
timecodes added to the spw plugin
r38 connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetSourceAddress(QString)),((stardundeeSPW_USB*)bridge),SIGNAL(SetSourceAddress(QString)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetDestinationAddress(QString)),((stardundeeSPW_USB*)bridge),SIGNAL(SetDestinationAddress(QString)));
Added stop function to dsu3plugin...
r14 connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetDestinationKey(QString)),((stardundeeSPW_USB*)bridge),SIGNAL(SetDestinationKey(QString)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetRmapTimeout(QString)),((stardundeeSPW_USB*)bridge),SIGNAL(SetRmapTimeout(QString)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(connectBridge()),((stardundeeSPW_USB*)bridge),SLOT(connectBridge()));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(disconnectBridge()),((stardundeeSPW_USB*)bridge),SLOT(disconnectBridge()));
paul
Functions added to the plugin to get the number of CCSDS packets...
r40 connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeGetAvailableBrickCount()),
((stardundeeSPW_USB*)bridge),SIGNAL(GetAvailableBrickCount()));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeGetNbPacketsTransmittedToSpw()),
((stardundeeSPW_USB*)bridge),SIGNAL(GetNbPacketsTransmittedToSpw()));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeGetNbCCSDSPacketsTransmittedToSpw()),
((stardundeeSPW_USB*)bridge),SIGNAL(GetNbCCSDSPacketsTransmittedToSpw()));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeGetLinkNumber()),((stardundeeSPW_USB*)bridge),SIGNAL(GetLinkNumber()));
paul
Functions added to the Python API:...
r35 connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetBrickAsAninterface(bool)),
((stardundeeSPW_USB*)bridge),SIGNAL(SetBrickAsAnInterface(bool)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetBrickAsARouter(bool)),
((stardundeeSPW_USB*)bridge),SIGNAL(SetBrickAsARouter(bool)));
paul
timecodes added to the spw plugin
r38 connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeStartTimecodes(bool)),
((stardundeeSPW_USB*)bridge),SIGNAL(StartSendingTimecodes(bool)));
connect(((spwPyWrapper*)this->pyObject),SIGNAL(StarDundeeSetTimecodeFrequency(double)),
((stardundeeSPW_USB*)bridge),SIGNAL(SetTimecodeFrequency(double)));
Jeandet Alexis
Started GR-ESB driver.
r22 connect(this->bridge,SIGNAL(pushPacketOverTCP(char*,int)),this->tcpServer,SLOT(pushPacket(char*,int)));
paul
Functions added to the Python API:...
r35 connect(this->tcpServer, SIGNAL(sendSPWPacket(char*,int)), ((stardundeeSPW_USB*)bridge), SLOT(sendPacketComingFromTCPServer(char*,int)));
Jeandet Alexis
Started GR-ESB driver.
r22 }
if(text=="GR-ESB")
{
if(this->bridge!=NULL)
{
this->mainLayout->removeWidget(this->bridge->getGUI());
this->disconnect(this,SLOT(setConnected(bool)));
delete this->bridge;
}
this->bridge = new GR_ESB_bridge(this);
this->mainLayout->addWidget(this->bridge->getGUI(),1,0,1,2);
connect(this->bridge,SIGNAL(setConnected(bool)),this,SLOT(setConnected(bool)));
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8 }
Jeandet Alexis
Sync
r20 }
Jeandet Alexis
Space wire plugin GUI Work In Progress.
r8
Jeandet Alexis
Sync
r15 void spwplugin::selectBridge(const QString &text)
{
if(text=="none")
{
this->bridgeSelector->setCurrentIndex(0);
}
if(text=="STAR-Dundee Spw USB Brick")
{
this->bridgeSelector->setCurrentIndex(1);
}
}
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 void spwplugin::setConnected(bool connected)
{
Jeandet Alexis
STAR-Dundee USB Brick driver ready for testing.
r12 this->bridgeSelector->setDisabled(connected);
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 this->Connected = connected;
emit activateSig(connected);
Added stop function to dsu3plugin...
r14 if(!this->scanDone)
{
socexplorerproxy::loadChildSysDriver(this,"AMBA_PLUGIN");
this->scanDone=true;
}
Jeandet Alexis
Added disconnection auto-detection to the spacewire plugin.
r11 }
First init /!\ outdated spwplugin!
r0 unsigned int spwplugin::Write(unsigned int *Value,unsigned int count, unsigned int address)
{
if(Connected)
{
return bridge->Write(Value,count,address);
}
return 0;
}