##// END OF EJS Templates
plugin updated, TM packet store reworked to store any TM continuously...
plugin updated, TM packet store reworked to store any TM continuously test done in NORMAL mode

File last commit:

r13:482a184909ef default
r13:482a184909ef default
Show More
rmappluginpythonwrapper.cpp
165 lines | 4.4 KiB | text/x-c | CppLexer
/ rmapplugin / rmappluginpythonwrapper.cpp
#include "rmappluginpythonwrapper.h"
#include <math.h>
#include <QApplication>
rmappluginPythonWrapper::rmappluginPythonWrapper(QObject *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);
}
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();
}
}
/*unsigned int rmappluginPythonWrapper::storeCCSDSPacket(unsigned char *ccsdsPacket, unsigned int size)
{
unsigned int i;
TMPacketToRead ccsdsPacketToStore;
ccsdsPacketToStore.size = size;
for(i=0; i<size; i++)
{
//ccsdsPacket0[i] = ccsdsPacket[i];
ccsdsPacketToStore.data[i] = ccsdsPacket[i];
}
ccsdsPacketStore->append(ccsdsPacketToStore);
emit ccsdsPacketIsAvailable(size);
return 1;
}*/
void rmappluginPythonWrapper::processPacketStore()
{
while (!ccsdsPacketStore->isEmpty())
{
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();
}