##// END OF EJS Templates
Function added to the plugin to store packets in CSV format.
Function added to the plugin to store packets in CSV format.

File last commit:

r19:7f565009af54 default
r55:4ea52012da18 default
Show More
rmappluginpythonwrapper.cpp
146 lines | 4.0 KiB | text/x-c | CppLexer
/ rmapplugin / rmappluginpythonwrapper.cpp
Initial commit: rmapplugin fully operational with the GRESB Ethernet/SpaceWire bridge.
r0 #include "rmappluginpythonwrapper.h"
#include <math.h>
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 #include <QApplication>
Initial commit: rmapplugin fully operational with the GRESB Ethernet/SpaceWire bridge.
r0
rmappluginPythonWrapper::rmappluginPythonWrapper(QObject *parent) :
genericPySysdriver(parent)
{
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 timer = new QTimer;
timer->setSingleShot(true);
connect(timer, SIGNAL(timeout()), this, SLOT(sendTC()));
connect(this, SIGNAL(activateTCLoopSig()), this, SLOT(sendTCLoop()));
Initial commit: rmapplugin fully operational with the GRESB Ethernet/SpaceWire bridge.
r0 }
Last commit before installation on pc-alison
r12 QList<QVariant> rmappluginPythonWrapper::ReadSPW(unsigned int size) // size is not used
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 {
QList<QVariant> result;
plugin updated, TM packet store reworked to store any TM continuously...
r13 TMPacketToRead *ccsdsPacket;
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11
if (!ccsdsPacketStore->isEmpty())
{
ccsdsPacket = ccsdsPacketStore->takeFirst();
plugin updated, TM packet store reworked to store any TM continuously...
r13 for(unsigned int i = 0;i<ccsdsPacket->size;i++)
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 {
plugin updated, TM packet store reworked to store any TM continuously...
r13 result.append((QVariant)ccsdsPacket->Value[i]);
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 }
plugin updated, TM packet store reworked to store any TM continuously...
r13 delete(ccsdsPacket);
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 }
waveform display added for the normal mode...
r19 emit nbPacketHasChanged(ccsdsPacketStore->size());
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 return result;
}
void rmappluginPythonWrapper::WriteSPW(QList<int> dataList)
{
char targetLogicalAddress;
char userApplication;
unsigned int count;
char *Value;
unsigned char data[dataList.count()];
for(int i = 0; i<dataList.count(); i++) // get the data as unsigned char
{
data[i] = (unsigned char)dataList.at(i);
}
// read the first bytes of the data to get the targetLogicalAddress and the userApplication parameters
targetLogicalAddress = data[0];
userApplication = data[3];
count = dataList.count() - 4; // the CCSDS header (4 bytes) is added by LPPMON
Value = (char*) &data[4];
emit WriteSPWSig(Value, count, targetLogicalAddress, userApplication);
}
void rmappluginPythonWrapper::WriteSPWDelay(QList<int> dataList, unsigned int delay)
{
char targetLogicalAddress;
char userApplication;
unsigned int count;
char *Value;
TCPacketToSend *packet;
unsigned char data[dataList.count()];
for(int i = 0; i<dataList.count(); i++) // get the data as unsigned char
{
data[i] = (unsigned char)dataList.at(i);
}
// read the first bytes of the data to get the targetLogicalAddress and the userApplication parameters
targetLogicalAddress = data[0];
userApplication = data[3];
count = dataList.count() - 4; // the CCSDS header (4 bytes) is added by LPPMON
Value = (char*) &data[4];
packet = new TCPacketToSend(Value, count, targetLogicalAddress, userApplication, delay);
TCPacketStore.append(packet);
emit(activateTCLoopSig());
}
void rmappluginPythonWrapper::processPacketStoreLater(unsigned int delay)
{
emit sendMessage(
"*** process packet store in " + QString::number(delay) + " ms"
);
QTimer::singleShot(delay, this, SLOT(sendProcessPacketStoreNowSig()));
}
void rmappluginPythonWrapper::sendTCLoop()
{
unsigned int delay;
if (!timer->isActive())
{
if (!TCPacketStore.isEmpty())
{
delay = TCPacketStore.at(0)->delay;
timer->setInterval(delay);
timer->start();
}
}
}
void rmappluginPythonWrapper::sendTC()
{
TCPacketToSend *packet;
unsigned int delay;
packet = TCPacketStore.takeFirst();
// the signal is connected with the option Qt::DirectConnection, thus it is processed immediately
emit(WriteSPWSig(packet->Value, packet->count,packet->targetLogicalAddress, packet->userApplication));
delete(packet);
if (!TCPacketStore.isEmpty())
{
delay = TCPacketStore.at(0)->delay;
timer->setInterval(delay);
timer->start();
}
}
void rmappluginPythonWrapper::processPacketStore()
{
infinite loop suppressed...
r18 emit ccsdsPacketIsAvailable(ccsdsPacketStore->at(0)->size);
Plugin modified to allow the launch of interactiv tests from the python interpreter...
r11 }
void rmappluginPythonWrapper::setTargetAddressValue(unsigned int address)
{
unsigned char newAddress;
newAddress = (unsigned char) address;
emit updateTargetAddress(newAddress);
}
void rmappluginPythonWrapper::setSourceAddressValue(unsigned int address)
{
unsigned char newAddress;
newAddress = (unsigned char) address;
emit updateSourceAddress(newAddress);
}
void rmappluginPythonWrapper::ProcessPendingEvents()
{
QCoreApplication::processEvents();
}
Last commit before installation on pc-alison
r12