fsfw/src/fsfw/cfdp/handler/defs.h

77 lines
2.6 KiB
C
Raw Normal View History

2022-08-23 20:30:41 +02:00
#ifndef FSFW_CFDP_HANDLER_DEFS_H
#define FSFW_CFDP_HANDLER_DEFS_H
2023-07-17 09:53:23 +02:00
#include <etl/list.h>
2023-07-17 10:25:09 +02:00
#include "fsfw/storagemanager/StorageManagerIF.h"
2023-06-30 11:59:22 +02:00
#include "fsfw/storagemanager/storeAddress.h"
2023-07-17 10:25:09 +02:00
#include "fsfw/tmtcservices/AcceptsTelemetryIF.h"
2023-06-30 11:59:22 +02:00
2022-08-23 20:30:41 +02:00
namespace cfdp {
2023-07-14 15:56:38 +02:00
enum class CfdpState { IDLE, BUSY_CLASS_1_NACKED, BUSY_CLASS_2_ACKED, SUSPENDED };
2022-08-23 20:30:41 +02:00
2022-10-17 12:19:31 +02:00
static constexpr uint8_t SSID = SUBSYSTEM_ID::CFDP;
2023-07-17 15:03:08 +02:00
static constexpr uint8_t CID = CLASS_ID::CFDP;
2022-10-17 12:19:31 +02:00
2023-06-30 11:59:22 +02:00
struct PacketInfo {
PacketInfo(PduType type, store_address_t storeId,
std::optional<FileDirective> directive = std::nullopt)
: pduType(type), directiveType(directive), storeId(storeId) {}
PduType pduType = PduType::FILE_DATA;
std::optional<FileDirective> directiveType = FileDirective::INVALID_DIRECTIVE;
store_address_t storeId = store_address_t::invalid();
PacketInfo() = default;
};
2023-07-17 10:25:09 +02:00
struct FsfwParams {
FsfwParams(AcceptsTelemetryIF& packetDest, MessageQueueIF* msgQueue,
EventReportingProxyIF* eventReporter, StorageManagerIF& tcStore,
StorageManagerIF& tmStore)
: FsfwParams(packetDest, msgQueue, eventReporter) {
this->tcStore = &tcStore;
this->tmStore = &tmStore;
}
FsfwParams(AcceptsTelemetryIF& packetDest, MessageQueueIF* msgQueue,
EventReportingProxyIF* eventReporter)
: packetDest(packetDest), msgQueue(msgQueue), eventReporter(eventReporter) {}
AcceptsTelemetryIF& packetDest;
MessageQueueIF* msgQueue;
EventReportingProxyIF* eventReporter = nullptr;
StorageManagerIF* tcStore = nullptr;
StorageManagerIF* tmStore = nullptr;
};
2023-06-30 11:59:22 +02:00
template <size_t SIZE>
using PacketInfoList = etl::list<PacketInfo, SIZE>;
using PacketInfoListBase = etl::ilist<PacketInfo>;
2023-07-17 13:28:32 +02:00
struct PutRequestFull {
2023-07-17 15:03:08 +02:00
public:
2023-07-17 13:28:32 +02:00
EntityId destId;
2023-07-17 15:03:08 +02:00
TransmissionMode transmissionMode = TransmissionMode::UNACKNOWLEDGED;
char destName[524]{};
size_t destNameSize = 0;
char sourceName[524]{};
size_t sourceNameSize = 0;
bool closureRequested = true;
2023-07-17 13:28:32 +02:00
};
2022-10-17 12:19:31 +02:00
namespace events {
static constexpr Event STORE_ERROR = event::makeEvent(SSID, 0, severity::LOW);
static constexpr Event MSG_QUEUE_ERROR = event::makeEvent(SSID, 1, severity::LOW);
static constexpr Event SERIALIZATION_ERROR = event::makeEvent(SSID, 2, severity::LOW);
2023-02-24 15:49:05 +01:00
static constexpr Event FILESTORE_ERROR = event::makeEvent(SSID, 3, severity::LOW);
//! [EXPORT] : [COMMENT] P1: Transaction step ID, P2: 0 for source file name, 1 for dest file name
static constexpr Event FILENAME_TOO_LARGE_ERROR = event::makeEvent(SSID, 4, severity::LOW);
2022-10-17 12:19:31 +02:00
} // namespace events
2023-07-17 15:03:08 +02:00
static constexpr ReturnValue_t SOURCE_TRANSACTION_PENDING = returnvalue::makeCode(CID, 0);
2022-10-17 12:19:31 +02:00
} // namespace cfdp
2022-08-23 20:30:41 +02:00
#endif // FSFW_CFDP_HANDLER_DEFS_H