#include "PdecConfig.h" #include "fsfw/serviceinterface/ServiceInterface.h" PdecConfig::PdecConfig() { initialize(); } PdecConfig::~PdecConfig() {} void PdecConfig::initialize() { uint32_t word = 0; word |= (VERSION_ID << 30); // Setting the bypass flag and the control command flag should not have any // implication on the operation of the PDEC IP Core word |= (BYPASS_FLAG << 29); word |= (CONTROL_COMMAND_FLAG << 28); word |= (RESERVED_FIELD_A << 26); word |= (SPACECRAFT_ID << 16); word |= (VIRTUAL_CHANNEL << 10); word |= (DUMMY_BITS << 8); word |= POSITIVE_WINDOW; configWords[0] = word; word = 0; word |= (NEGATIVE_WINDOW << 24); word |= (HIGH_AU_MAP_ID << 16); word |= (ENABLE_DERANDOMIZER << 8); configWords[1] = word; } uint32_t PdecConfig::getConfigWord(uint8_t wordNo) { if (wordNo >= CONFIG_WORDS_NUM) { sif::error << "PdecConfig::getConfigWord: Invalid word number" << std::endl; return 0; } return configWords[wordNo]; } uint32_t PdecConfig::getImrReg() { return static_cast(enableNewFarIrq << 2) | static_cast(enableTcAbortIrq << 1) | static_cast(enableTcNewIrq); }