#include "PdecConfig.h"

#include "fsfw/serviceinterface/ServiceInterface.h"

PdecConfig::PdecConfig() { initialize(); }

PdecConfig::~PdecConfig() {}

void PdecConfig::initialize() {
  uint32_t word = 0;
  word |= (VERSION_ID << 30);
  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];
}