2021-07-13 20:58:45 +02:00
|
|
|
#include "fsfw/tmtcservices/VerificationReporter.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-07-26 17:41:10 +02:00
|
|
|
#include "fsfw/objectmanager.h"
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "fsfw/serviceinterface/ServiceInterface.h"
|
|
|
|
#include "fsfw/tmtcservices/PusVerificationReport.h"
|
2020-09-29 13:34:27 +02:00
|
|
|
|
2022-07-26 17:41:10 +02:00
|
|
|
object_id_t VerificationReporter::DEFAULT_RECEIVER = objects::PUS_SERVICE_1_VERIFICATION;
|
2022-08-16 17:17:45 +02:00
|
|
|
object_id_t VerificationReporter::DEFAULT_REPORTER = objects::VERIFICATION_REPORTER;
|
2022-07-26 17:41:10 +02:00
|
|
|
|
2022-08-16 17:10:48 +02:00
|
|
|
VerificationReporter::VerificationReporter(object_id_t objectId, AcceptsVerifyMessageIF* receiver)
|
2022-07-26 13:59:09 +02:00
|
|
|
: SystemObject(objectId) {
|
|
|
|
if (receiver != nullptr) {
|
|
|
|
acknowledgeQueue = receiver->getVerificationQueue();
|
|
|
|
}
|
|
|
|
}
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-07-19 18:13:25 +02:00
|
|
|
VerificationReporter::~VerificationReporter() = default;
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-07-26 13:59:09 +02:00
|
|
|
void VerificationReporter::setReceiver(AcceptsVerifyMessageIF& receiver) {
|
|
|
|
acknowledgeQueue = receiver.getVerificationQueue();
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-07-26 13:59:09 +02:00
|
|
|
ReturnValue_t VerificationReporter::sendFailureReport(VerifFailureParams params) {
|
|
|
|
PusVerificationMessage message(params.reportId, params.ackFlags, params.tcPacketId, params.tcPsc,
|
|
|
|
params.errorCode, params.step, params.errorParam1,
|
|
|
|
params.errorParam2);
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t status = MessageQueueSenderIF::sendMessage(acknowledgeQueue, &message);
|
2022-08-16 01:08:26 +02:00
|
|
|
if (status != returnvalue::OK) {
|
2021-01-03 14:16:52 +01:00
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
2022-02-02 10:29:30 +01:00
|
|
|
sif::error << "VerificationReporter::sendSuccessReport: Error writing "
|
|
|
|
<< "to queue. Code: " << std::hex << status << std::dec << std::endl;
|
2021-01-03 13:58:18 +01:00
|
|
|
#endif
|
2022-02-02 10:29:30 +01:00
|
|
|
}
|
2022-07-26 13:59:09 +02:00
|
|
|
return status;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-07-26 13:59:09 +02:00
|
|
|
ReturnValue_t VerificationReporter::sendSuccessReport(VerifSuccessParams params) {
|
|
|
|
PusVerificationMessage message(params.reportId, params.ackFlags, params.tcPacketId, params.tcPsc,
|
2022-08-16 01:08:26 +02:00
|
|
|
returnvalue::OK, params.step);
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t status = MessageQueueSenderIF::sendMessage(acknowledgeQueue, &message);
|
2022-08-16 01:08:26 +02:00
|
|
|
if (status != returnvalue::OK) {
|
2021-01-03 14:16:52 +01:00
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
2022-07-26 13:59:09 +02:00
|
|
|
sif::error << "VerificationReporter::sendSuccessReport: Error writing "
|
|
|
|
<< "to queue. Code: " << std::hex << status << std::dec << std::endl;
|
2021-01-03 13:58:18 +01:00
|
|
|
#endif
|
2022-02-02 10:29:30 +01:00
|
|
|
}
|
2022-07-26 13:59:09 +02:00
|
|
|
return status;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
2022-07-26 17:41:10 +02:00
|
|
|
|
|
|
|
ReturnValue_t VerificationReporter::initialize() {
|
|
|
|
if (acknowledgeQueue == MessageQueueIF::NO_QUEUE) {
|
|
|
|
auto* receiver = ObjectManager::instance()->get<AcceptsVerifyMessageIF>(DEFAULT_RECEIVER);
|
|
|
|
if (receiver != nullptr) {
|
|
|
|
acknowledgeQueue = receiver->getVerificationQueue();
|
|
|
|
} else {
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
sif::error
|
|
|
|
<< "Could not find a suitable verification message receiver. Please ensure that it is set"
|
|
|
|
" via the constructor or creating a global one with the ID "
|
|
|
|
"VerificationReporter::DEFAULT_RECEIVER"
|
|
|
|
<< std::endl;
|
|
|
|
#else
|
|
|
|
sif::printError(
|
|
|
|
"Could not find a suitable verification message receiver. Please ensure "
|
|
|
|
"that it is set via the constructor or creating a global one with the ID "
|
|
|
|
"VerificationReporter::DEFAULT_RECEIVER\n");
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return SystemObject::initialize();
|
|
|
|
}
|