2021-07-13 20:58:45 +02:00
|
|
|
#include "fsfw/pus/Service17Test.h"
|
2020-09-16 19:05:25 +02:00
|
|
|
|
2022-11-02 19:35:22 +01:00
|
|
|
#include <fsfw/serialize/SerializeElement.h>
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "fsfw/FSFW.h"
|
2022-07-20 22:21:15 +02:00
|
|
|
#include "fsfw/objectmanager/ObjectManager.h"
|
2021-07-13 20:58:45 +02:00
|
|
|
#include "fsfw/objectmanager/SystemObject.h"
|
2022-07-21 13:48:58 +02:00
|
|
|
#include "fsfw/tmtcservices/tmHelpers.h"
|
2020-09-16 19:05:25 +02:00
|
|
|
|
2022-07-26 16:49:46 +02:00
|
|
|
Service17Test::Service17Test(PsbParams params)
|
|
|
|
: PusServiceBase(params),
|
|
|
|
storeHelper(params.apid),
|
2022-08-01 11:00:36 +02:00
|
|
|
tmHelper(params.serviceId, storeHelper, sendHelper) {
|
|
|
|
params.name = "PUS 17 Test";
|
|
|
|
}
|
2020-09-16 19:05:25 +02:00
|
|
|
|
2022-07-20 11:43:16 +02:00
|
|
|
Service17Test::~Service17Test() = default;
|
2020-09-16 19:05:25 +02:00
|
|
|
|
|
|
|
ReturnValue_t Service17Test::handleRequest(uint8_t subservice) {
|
2022-02-02 10:29:30 +01:00
|
|
|
switch (subservice) {
|
|
|
|
case Subservice::CONNECTION_TEST: {
|
2022-07-26 13:59:09 +02:00
|
|
|
ReturnValue_t result = tmHelper.prepareTmPacket(Subservice::CONNECTION_TEST_REPORT);
|
2022-08-16 01:08:26 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-07-26 13:59:09 +02:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
return tmHelper.storeAndSendTmPacket();
|
2022-02-02 10:29:30 +01:00
|
|
|
}
|
2020-09-16 19:05:25 +02:00
|
|
|
case Subservice::EVENT_TRIGGER_TEST: {
|
2022-02-02 10:29:30 +01:00
|
|
|
triggerEvent(TEST, 1234, 5678);
|
2022-07-26 13:59:09 +02:00
|
|
|
ReturnValue_t result = tmHelper.prepareTmPacket(Subservice::EVENT_TRIGGER_TEST);
|
2022-08-16 01:08:26 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-07-26 13:59:09 +02:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
return tmHelper.storeAndSendTmPacket();
|
2020-09-16 19:05:25 +02:00
|
|
|
}
|
2022-11-02 19:35:22 +01:00
|
|
|
case Subservice::PING_WITH_DATA: {
|
|
|
|
SerializeElement<uint32_t> receivedDataLen = currentPacket.getUserDataLen();
|
|
|
|
ReturnValue_t result =
|
|
|
|
tmHelper.prepareTmPacket(Subservice::PING_WITH_DATA_REPORT_WITH_SIZE, receivedDataLen);
|
|
|
|
if (result != returnvalue::OK) {
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
return tmHelper.storeAndSendTmPacket();
|
|
|
|
}
|
2022-02-02 10:29:30 +01:00
|
|
|
default:
|
|
|
|
return AcceptsTelecommandsIF::INVALID_SUBSERVICE;
|
|
|
|
}
|
2020-09-16 19:05:25 +02:00
|
|
|
}
|
|
|
|
|
2022-08-16 01:08:26 +02:00
|
|
|
ReturnValue_t Service17Test::performService() { return returnvalue::OK; }
|
2022-07-20 11:43:16 +02:00
|
|
|
|
|
|
|
ReturnValue_t Service17Test::initialize() {
|
|
|
|
ReturnValue_t result = PusServiceBase::initialize();
|
2022-08-16 01:08:26 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-07-20 11:43:16 +02:00
|
|
|
return result;
|
|
|
|
}
|
2022-07-20 22:21:15 +02:00
|
|
|
initializeTmHelpers(sendHelper, storeHelper);
|
|
|
|
if (storeHelper.getTmStore() == nullptr) {
|
|
|
|
auto* tmStore = ObjectManager::instance()->get<StorageManagerIF>(objects::TM_STORE);
|
|
|
|
if (tmStore == nullptr) {
|
|
|
|
return ObjectManagerIF::CHILD_INIT_FAILED;
|
|
|
|
}
|
2022-07-25 11:24:13 +02:00
|
|
|
storeHelper.setTmStore(*tmStore);
|
2022-07-20 22:21:15 +02:00
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2022-07-25 11:24:13 +02:00
|
|
|
void Service17Test::setCustomTmStore(StorageManagerIF& tmStore_) {
|
2022-07-20 22:21:15 +02:00
|
|
|
storeHelper.setTmStore(tmStore_);
|
|
|
|
}
|