|
|
#include "arbitrarytime.h"
|
|
|
|
|
|
ArbitraryTime::ArbitraryTime(char option, QWidget *parent) :
|
|
|
QWidget(parent)
|
|
|
{
|
|
|
QRegExp timeToSendRegExp("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]");
|
|
|
validator = new QRegExpValidator(timeToSendRegExp);
|
|
|
|
|
|
packetToSend = new TCPacketToSend();
|
|
|
|
|
|
timeToSend = new QLineEdit();
|
|
|
main_HLAYOUT = new QHBoxLayout;
|
|
|
main_VLAYOUT = new QVBoxLayout;
|
|
|
|
|
|
timeToSend_LABEL = new QLabel("Arbitrary Time: 0x");
|
|
|
timeToSend_LABEL->setAlignment(Qt::AlignRight);
|
|
|
|
|
|
timeToSend->setMaxLength(8);
|
|
|
timeToSend->setValidator(validator);
|
|
|
timeToSend->setText("80000000");
|
|
|
currentTimeToSend = 0x80000000;
|
|
|
|
|
|
if (option == 1)
|
|
|
{
|
|
|
main_HLAYOUT->addWidget(timeToSend_LABEL);
|
|
|
main_HLAYOUT->addWidget(timeToSend);
|
|
|
main_HLAYOUT->addStretch();
|
|
|
this->setLayout(main_HLAYOUT);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
main_VLAYOUT->addWidget(timeToSend_LABEL);
|
|
|
main_VLAYOUT->addWidget(timeToSend);
|
|
|
main_VLAYOUT->addStretch();
|
|
|
this->setLayout(main_VLAYOUT);
|
|
|
}
|
|
|
|
|
|
connect(this->timeToSend, SIGNAL(editingFinished()),
|
|
|
this, SLOT(editingFinishedSLOT()));
|
|
|
}
|
|
|
|
|
|
void ArbitraryTime::editingFinishedSLOT()
|
|
|
{
|
|
|
currentTimeToSend = timeToSend->text().toLong(0, 16);
|
|
|
emit (
|
|
|
timeToSendChanged( currentTimeToSend)
|
|
|
);
|
|
|
}
|
|
|
|
|
|
void ArbitraryTime::sendCurrentTimeToSend()
|
|
|
{
|
|
|
Packet_TC_LFR_UPDATE_TIME_t packet;
|
|
|
unsigned char crcAsTwoBytes[2];
|
|
|
|
|
|
packet.packetID[0] = (unsigned char) (TC_LFR_PACKET_ID >> 8);
|
|
|
packet.packetID[1] = (unsigned char) (TC_LFR_PACKET_ID );
|
|
|
packet.packetSequenceControl[0] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL >> 8);
|
|
|
packet.packetSequenceControl[1] = (unsigned char) (TC_LFR_PACKET_SEQUENCE_CONTROL );
|
|
|
packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_TIME >> 8);
|
|
|
packet.packetLength[1] = (unsigned char) (PACKET_LENGTH_TC_LFR_UPDATE_TIME );
|
|
|
|
|
|
packet.ccsdsSecHeaderFlag_pusVersion_ack = 0x19;
|
|
|
packet.serviceType = TC_TYPE_LFR_UPDATE_TIME;
|
|
|
packet.serviceSubType = TC_SUBTYPE_UPDATE_TIME;
|
|
|
packet.sourceID = SID_TC_GROUND;
|
|
|
packet.cp_rpw_time[0] = (unsigned char) (currentTimeToSend >> 24);
|
|
|
packet.cp_rpw_time[1] = (unsigned char) (currentTimeToSend >> 16);
|
|
|
packet.cp_rpw_time[2] = (unsigned char) (currentTimeToSend >> 8);
|
|
|
packet.cp_rpw_time[3] = (unsigned char) (currentTimeToSend);
|
|
|
packet.cp_rpw_time[4] = 0; // fine time MSB
|
|
|
packet.cp_rpw_time[5] = 0; // fine time LSB
|
|
|
|
|
|
packetToSend->GetCRCAsTwoBytes((unsigned char*) &packet, crcAsTwoBytes,
|
|
|
PACKET_LENGTH_TC_LFR_UPDATE_TIME + CCSDS_TC_TM_PACKET_OFFSET - 2);
|
|
|
packet.crc[0] = crcAsTwoBytes[0];
|
|
|
packet.crc[1] = crcAsTwoBytes[1];
|
|
|
|
|
|
emit WriteSPW((char*) &packet, PACKET_LENGTH_TC_LFR_UPDATE_TIME + CCSDS_TC_TM_PACKET_OFFSET,
|
|
|
CCSDS_NODE_ADDRESS, CCSDS_USER_APP);
|
|
|
}
|
|
|
|