update tmtcservices module

This commit is contained in:
Robin Müller 2021-10-20 16:57:04 +02:00
parent eb00c50950
commit 96e56ddc64
No known key found for this signature in database
GPG Key ID: 11D4952C8CCEF814
7 changed files with 772 additions and 771 deletions

View File

@ -251,7 +251,7 @@ void CommandingServiceBase::handleRequestQueue() {
for (result = requestQueue->receiveMessage(&message); result == RETURN_OK; for (result = requestQueue->receiveMessage(&message); result == RETURN_OK;
result = requestQueue->receiveMessage(&message)) { result = requestQueue->receiveMessage(&message)) {
address = message.getStorageId(); address = message.getStorageId();
packet.setStoreAddress(address); packet.setStoreAddress(address, &packet);
if ((packet.getSubService() == 0) if ((packet.getSubService() == 0)
or (isValidSubservice(packet.getSubService()) != RETURN_OK)) { or (isValidSubservice(packet.getSubService()) != RETURN_OK)) {
@ -351,18 +351,18 @@ ReturnValue_t CommandingServiceBase::sendTmPacket(uint8_t subservice,
} }
void CommandingServiceBase::startExecution(TcPacketStoredBase *storedPacket, void CommandingServiceBase::startExecution(TcPacketStoredPus* storedPacket,
CommandMapIter iter) { CommandMapIter iter) {
ReturnValue_t result = RETURN_OK; ReturnValue_t result = RETURN_OK;
CommandMessage command; CommandMessage command;
TcPacketBase* tcPacketBase = storedPacket->getPacketBase(); //TcPacketPusBase* tcPacketBase = storedPacket->getPacketBase();
if(tcPacketBase == nullptr) { if(storedPacket == nullptr) {
return; return;
} }
iter->second.subservice = tcPacketBase->getSubService(); iter->second.subservice = storedPacket->getSubService();
result = prepareCommand(&command, iter->second.subservice, result = prepareCommand(&command, iter->second.subservice,
tcPacketBase->getApplicationData(), storedPacket->getApplicationData(),
tcPacketBase->getApplicationDataSize(), &iter->second.state, storedPacket->getApplicationDataSize(), &iter->second.state,
iter->second.objectId); iter->second.objectId);
ReturnValue_t sendResult = RETURN_OK; ReturnValue_t sendResult = RETURN_OK;
@ -375,12 +375,12 @@ void CommandingServiceBase::startExecution(TcPacketStoredBase *storedPacket,
if (sendResult == RETURN_OK) { if (sendResult == RETURN_OK) {
Clock::getUptime(&iter->second.uptimeOfStart); Clock::getUptime(&iter->second.uptimeOfStart);
iter->second.step = 0; iter->second.step = 0;
iter->second.subservice = tcPacketBase->getSubService(); iter->second.subservice = storedPacket->getSubService();
iter->second.command = command.getCommand(); iter->second.command = command.getCommand();
iter->second.tcInfo.ackFlags = tcPacketBase->getAcknowledgeFlags(); iter->second.tcInfo.ackFlags = storedPacket->getAcknowledgeFlags();
iter->second.tcInfo.tcPacketId = tcPacketBase->getPacketId(); iter->second.tcInfo.tcPacketId = storedPacket->getPacketId();
iter->second.tcInfo.tcSequenceControl = iter->second.tcInfo.tcSequenceControl =
tcPacketBase->getPacketSequenceControl(); storedPacket->getPacketSequenceControl();
acceptPacket(tc_verification::START_SUCCESS, storedPacket); acceptPacket(tc_verification::START_SUCCESS, storedPacket);
} else { } else {
command.clearCommandMessage(); command.clearCommandMessage();
@ -414,15 +414,16 @@ void CommandingServiceBase::startExecution(TcPacketStoredBase *storedPacket,
void CommandingServiceBase::rejectPacket(uint8_t reportId, void CommandingServiceBase::rejectPacket(uint8_t reportId,
TcPacketStoredBase* packet, ReturnValue_t errorCode) { TcPacketStoredPus* packet, ReturnValue_t errorCode) {
verificationReporter.sendFailureReport(reportId, packet->getPacketBase(), errorCode); verificationReporter.sendFailureReport(reportId, dynamic_cast<TcPacketPusBase*>(packet),
errorCode);
packet->deletePacket(); packet->deletePacket();
} }
void CommandingServiceBase::acceptPacket(uint8_t reportId, void CommandingServiceBase::acceptPacket(uint8_t reportId,
TcPacketStoredBase* packet) { TcPacketStoredPus* packet) {
verificationReporter.sendSuccessReport(reportId, packet->getPacketBase()); verificationReporter.sendSuccessReport(reportId, dynamic_cast<TcPacketPusBase*>(packet));
packet->deletePacket(); packet->deletePacket();
} }

View File

@ -14,8 +14,8 @@
#include "fsfw/container/FIFO.h" #include "fsfw/container/FIFO.h"
#include "fsfw/serialize/SerializeIF.h" #include "fsfw/serialize/SerializeIF.h"
class TcPacketStored;
class TcPacketStoredBase; class TcPacketStoredBase;
class TcPacketStoredPus;
namespace Factory{ namespace Factory{
void setStaticFrameworkObjectIds(); void setStaticFrameworkObjectIds();
@ -36,9 +36,9 @@ void setStaticFrameworkObjectIds();
* @ingroup pus_services * @ingroup pus_services
*/ */
class CommandingServiceBase: public SystemObject, class CommandingServiceBase: public SystemObject,
public AcceptsTelecommandsIF, public AcceptsTelecommandsIF,
public ExecutableObjectIF, public ExecutableObjectIF,
public HasReturnvaluesIF { public HasReturnvaluesIF {
friend void (Factory::setStaticFrameworkObjectIds)(); friend void (Factory::setStaticFrameworkObjectIds)();
public: public:
// We could make this configurable via preprocessor and the FSFWConfig file. // We could make this configurable via preprocessor and the FSFWConfig file.
@ -321,7 +321,7 @@ protected:
void checkAndExecuteFifo(CommandMapIter& iter); void checkAndExecuteFifo(CommandMapIter& iter);
private: private:
/** /**
* This method handles internal execution of a command, * This method handles internal execution of a command,
* once it has been started by @sa{startExecution()} in the request * once it has been started by @sa{startExecution()} in the request
@ -351,12 +351,12 @@ private:
*/ */
void handleRequestQueue(); void handleRequestQueue();
void rejectPacket(uint8_t reportId, TcPacketStoredBase* packet, void rejectPacket(uint8_t reportId, TcPacketStoredPus* packet,
ReturnValue_t errorCode); ReturnValue_t errorCode);
void acceptPacket(uint8_t reportId, TcPacketStoredBase* packet); void acceptPacket(uint8_t reportId, TcPacketStoredPus* packet);
void startExecution(TcPacketStoredBase *storedPacket, CommandMapIter iter); void startExecution(TcPacketStoredPus* storedPacket, CommandMapIter iter);
void handleCommandMessage(CommandMessage* reply); void handleCommandMessage(CommandMessage* reply);
void handleReplyHandlerResult(ReturnValue_t result, CommandMapIter iter, void handleReplyHandlerResult(ReturnValue_t result, CommandMapIter iter,

View File

@ -12,7 +12,7 @@ object_id_t PusServiceBase::packetSource = 0;
object_id_t PusServiceBase::packetDestination = 0; object_id_t PusServiceBase::packetDestination = 0;
PusServiceBase::PusServiceBase(object_id_t setObjectId, uint16_t setApid, PusServiceBase::PusServiceBase(object_id_t setObjectId, uint16_t setApid,
uint8_t setServiceId) : uint8_t setServiceId):
SystemObject(setObjectId), apid(setApid), serviceId(setServiceId) { SystemObject(setObjectId), apid(setApid), serviceId(setServiceId) {
requestQueue = QueueFactory::instance()-> requestQueue = QueueFactory::instance()->
createMessageQueue(PUS_SERVICE_MAX_RECEPTION); createMessageQueue(PUS_SERVICE_MAX_RECEPTION);
@ -45,18 +45,18 @@ void PusServiceBase::handleRequestQueue() {
ReturnValue_t result = RETURN_FAILED; ReturnValue_t result = RETURN_FAILED;
for (uint8_t count = 0; count < PUS_SERVICE_MAX_RECEPTION; count++) { for (uint8_t count = 0; count < PUS_SERVICE_MAX_RECEPTION; count++) {
ReturnValue_t status = this->requestQueue->receiveMessage(&message); ReturnValue_t status = this->requestQueue->receiveMessage(&message);
// if(status != MessageQueueIF::EMPTY) { // if(status != MessageQueueIF::EMPTY) {
#if FSFW_CPP_OSTREAM_ENABLED == 1 #if FSFW_CPP_OSTREAM_ENABLED == 1
// sif::debug << "PusServiceBase::performOperation: Receiving from " // sif::debug << "PusServiceBase::performOperation: Receiving from "
// << "MQ ID: " << std::hex << "0x" << std::setw(8) // << "MQ ID: " << std::hex << "0x" << std::setw(8)
// << std::setfill('0') << this->requestQueue->getId() // << std::setfill('0') << this->requestQueue->getId()
// << std::dec << " returned: " << status << std::setfill(' ') // << std::dec << " returned: " << status << std::setfill(' ')
// << std::endl; // << std::endl;
#endif #endif
// } // }
if (status == RETURN_OK) { if (status == RETURN_OK) {
this->currentPacket.setStoreAddress(message.getStorageId()); this->currentPacket.setStoreAddress(message.getStorageId(), &currentPacket);
//info << "Service " << (uint16_t) this->serviceId << //info << "Service " << (uint16_t) this->serviceId <<
// ": new packet!" << std::endl; // ": new packet!" << std::endl;

View File

@ -35,9 +35,9 @@ void setStaticFrameworkObjectIds();
* @ingroup pus_services * @ingroup pus_services
*/ */
class PusServiceBase : public ExecutableObjectIF, class PusServiceBase : public ExecutableObjectIF,
public AcceptsTelecommandsIF, public AcceptsTelecommandsIF,
public SystemObject, public SystemObject,
public HasReturnvaluesIF { public HasReturnvaluesIF {
friend void (Factory::setStaticFrameworkObjectIds)(); friend void (Factory::setStaticFrameworkObjectIds)();
public: public:
/** /**

View File

@ -4,7 +4,7 @@
#include "VerificationCodes.h" #include "VerificationCodes.h"
#include "fsfw/ipc/MessageQueueMessage.h" #include "fsfw/ipc/MessageQueueMessage.h"
#include "fsfw/tmtcpacket/pus/tc/TcPacketBase.h" #include "fsfw/tmtcpacket/pus/tc/TcPacketPusBase.h"
#include "fsfw/returnvalues/HasReturnvaluesIF.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h"
class PusVerificationMessage: public MessageQueueMessage { class PusVerificationMessage: public MessageQueueMessage {

View File

@ -17,7 +17,7 @@ VerificationReporter::VerificationReporter() :
VerificationReporter::~VerificationReporter() {} VerificationReporter::~VerificationReporter() {}
void VerificationReporter::sendSuccessReport(uint8_t set_report_id, void VerificationReporter::sendSuccessReport(uint8_t set_report_id,
TcPacketBase* currentPacket, uint8_t set_step) { TcPacketPusBase* currentPacket, uint8_t set_step) {
if (acknowledgeQueue == MessageQueueIF::NO_QUEUE) { if (acknowledgeQueue == MessageQueueIF::NO_QUEUE) {
this->initialize(); this->initialize();
} }
@ -59,7 +59,7 @@ void VerificationReporter::sendSuccessReport(uint8_t set_report_id,
} }
void VerificationReporter::sendFailureReport(uint8_t report_id, void VerificationReporter::sendFailureReport(uint8_t report_id,
TcPacketBase* currentPacket, ReturnValue_t error_code, uint8_t step, TcPacketPusBase* currentPacket, ReturnValue_t error_code, uint8_t step,
uint32_t parameter1, uint32_t parameter2) { uint32_t parameter1, uint32_t parameter2) {
if (acknowledgeQueue == MessageQueueIF::NO_QUEUE) { if (acknowledgeQueue == MessageQueueIF::NO_QUEUE) {
this->initialize(); this->initialize();

View File

@ -25,13 +25,13 @@ public:
VerificationReporter(); VerificationReporter();
virtual ~VerificationReporter(); virtual ~VerificationReporter();
void sendSuccessReport( uint8_t set_report_id, TcPacketBase* current_packet, void sendSuccessReport( uint8_t set_report_id, TcPacketPusBase* current_packet,
uint8_t set_step = 0 ); uint8_t set_step = 0 );
void sendSuccessReport(uint8_t set_report_id, uint8_t ackFlags, void sendSuccessReport(uint8_t set_report_id, uint8_t ackFlags,
uint16_t tcPacketId, uint16_t tcSequenceControl, uint16_t tcPacketId, uint16_t tcSequenceControl,
uint8_t set_step = 0); uint8_t set_step = 0);
void sendFailureReport( uint8_t report_id, TcPacketBase* current_packet, void sendFailureReport( uint8_t report_id, TcPacketPusBase* current_packet,
ReturnValue_t error_code = 0, ReturnValue_t error_code = 0,
uint8_t step = 0, uint32_t parameter1 = 0, uint8_t step = 0, uint32_t parameter1 = 0,
uint32_t parameter2 = 0 ); uint32_t parameter2 = 0 );