fsfw/src/fsfw/cfdp/CfdpHandler.cpp

57 lines
1.8 KiB
C++
Raw Normal View History

#include "fsfw/cfdp/CfdpHandler.h"
#include "fsfw/cfdp/CfdpMessage.h"
2022-02-02 10:29:30 +01:00
#include "fsfw/ipc/CommandMessage.h"
#include "fsfw/ipc/QueueFactory.h"
2022-02-02 10:29:30 +01:00
#include "fsfw/storagemanager/storeAddress.h"
#include "fsfw/tmtcservices/AcceptsTelemetryIF.h"
object_id_t CfdpHandler::packetSource = 0;
object_id_t CfdpHandler::packetDestination = 0;
CfdpHandler::CfdpHandler(object_id_t setObjectId, CFDPDistributor* dist)
2022-02-02 10:29:30 +01:00
: SystemObject(setObjectId) {
requestQueue = QueueFactory::instance()->createMessageQueue(CFDP_HANDLER_MAX_RECEPTION);
distributor = dist;
}
CfdpHandler::~CfdpHandler() = default;
ReturnValue_t CfdpHandler::initialize() {
2022-02-02 10:29:30 +01:00
ReturnValue_t result = SystemObject::initialize();
2022-08-16 01:08:26 +02:00
if (result != returnvalue::OK) {
2022-02-02 10:29:30 +01:00
return result;
}
this->distributor->registerHandler(this);
2022-08-16 01:08:26 +02:00
return returnvalue::OK;
}
ReturnValue_t CfdpHandler::handleRequest(store_address_t storeId) {
#if FSFW_VERBOSE_LEVEL >= 1
#if FSFW_CPP_OSTREAM_ENABLED == 1
2022-02-02 10:29:30 +01:00
sif::debug << "CFDPHandler::handleRequest" << std::endl;
#else
2022-02-02 10:29:30 +01:00
sif::printDebug("CFDPHandler::handleRequest\n");
#endif /* !FSFW_CPP_OSTREAM_ENABLED == 1 */
#endif
2022-02-02 10:29:30 +01:00
// TODO read out packet from store using storeId
2022-08-16 01:08:26 +02:00
return returnvalue::OK;
}
ReturnValue_t CfdpHandler::performOperation(uint8_t opCode) {
2022-08-16 01:08:26 +02:00
ReturnValue_t status = returnvalue::OK;
2022-02-02 10:29:30 +01:00
CommandMessage currentMessage;
2022-08-16 01:08:26 +02:00
for (status = this->requestQueue->receiveMessage(&currentMessage); status == returnvalue::OK;
2022-02-02 10:29:30 +01:00
status = this->requestQueue->receiveMessage(&currentMessage)) {
store_address_t storeId = CfdpMessage::getStoreId(&currentMessage);
2022-02-02 10:29:30 +01:00
this->handleRequest(storeId);
}
2022-08-16 01:08:26 +02:00
return returnvalue::OK;
}
2022-09-14 20:10:41 +02:00
uint32_t CfdpHandler::getIdentifier() const { return 0; }
2022-09-14 20:10:41 +02:00
MessageQueueId_t CfdpHandler::getRequestQueue() const { return this->requestQueue->getId(); }