##// END OF EJS Templates
lfrsgse is able to parse TM_LFR_SCIENCE_NORMAL_ASM_F0 packets...
lfrsgse is able to parse TM_LFR_SCIENCE_NORMAL_ASM_F0 packets possibility to store the spectral matrices possibility to plot diagonal values of the matrices

File last commit:

r58:6bfd3f59df14 default
r60:ead0b0c28332 default
Show More
rmappluginpythonwrapper.cpp
146 lines | 4.0 KiB | text/x-c | CppLexer
/ rmapplugin / rmappluginpythonwrapper.cpp
#include "rmappluginpythonwrapper.h"
#include <math.h>
#include <QApplication>
rmappluginPythonWrapper::rmappluginPythonWrapper(lppmonplugin *parent) :
genericPySysdriver(parent)
{
timer = new QTimer;
timer->setSingleShot(true);
connect(timer, SIGNAL(timeout()), this, SLOT(sendTC()));
connect(this, SIGNAL(activateTCLoopSig()), this, SLOT(sendTCLoop()));
}
QList<QVariant> rmappluginPythonWrapper::ReadSPW(unsigned int size) // size is not used
{
QList<QVariant> result;
TMPacketToRead *ccsdsPacket;
if (!ccsdsPacketStore->isEmpty())
{
ccsdsPacket = ccsdsPacketStore->takeFirst();
for(unsigned int i = 0;i<ccsdsPacket->size;i++)
{
result.append((QVariant)ccsdsPacket->Value[i]);
}
delete(ccsdsPacket);
}
emit nbPacketHasChanged(ccsdsPacketStore->size());
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()
{
emit ccsdsPacketIsAvailable(ccsdsPacketStore->at(0)->size);
}
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();
}