class to generate pdec config words

This commit is contained in:
Jakob Meier
2021-11-02 11:11:38 +01:00
parent 9191d1ec33
commit 3e2f4e7a10
7 changed files with 89 additions and 50 deletions

View File

@ -37,9 +37,11 @@ public:
* @param tcDestinationId Object ID of object responsible for processing TCs.
* @param gpioComIF Pointer to GPIO interace responsible for driving GPIOs.
* @param pdecReset GPIO ID of GPIO connected to the reset signal of the PDEC.
* @param uioMemory String of uio device file same mapped to the PDEC memory space
* @param uioregsiters String of uio device file same mapped to the PDEC register space
*/
PdecHandler(object_id_t objectId, object_id_t tcDestinationId, LinuxLibgpioIF* gpioComIF,
gpioId_t pdecReset);
gpioId_t pdecReset, std::string uioMemory, std::string uioRegisters);
virtual ~PdecHandler();
@ -148,25 +150,6 @@ private:
INCORRECT_BC_CC
};
typedef struct PdecParams {
uint8_t versionId : 2 ;
uint8_t bypassFlag : 1;
uint8_t controlCommandFlag : 1;
uint8_t reservedFieldA : 2;
uint16_t spacecraftId : 10;
uint8_t virtualChannelId : 6;
uint8_t dummy : 2;
uint8_t positiveWindow;
uint8_t negativeWindow;
//Authentication unit not used for EIVE
uint8_t auMapIdPointer = 0;
// De-randomizing enabled
uint8_t derandomiserConfig = 1;
// Only used when AU is enabled. Enables the use of an external recovery lac counter.
// The AU requires a lac counter to generate the signature.
uint8_t recoveryLacConfig = 0;
} PdecParams_t;
enum class State: uint8_t {
INIT,
RUNNING,
@ -269,10 +252,6 @@ private:
LinuxLibgpioIF* gpioComIF = nullptr;
StorageManagerIF* tcStore = nullptr;
State state = State::INIT;
/**
* Reset signal is required to hold PDEC in reset state until the configuration has been
* written to the appropriate memory space.
@ -280,6 +259,16 @@ private:
*/
gpioId_t pdecReset = gpio::NO_GPIO;
// UIO device file giving access to the PDEC memory space
std::string uioMemory;
// UIO device file giving access to the PDEC register space
std::string uioRegisters;
StorageManagerIF* tcStore = nullptr;
State state = State::INIT;
/**
* Pointer pointing to base address of the PDEC memory space.
* This address is equivalent with the base address of the section named configuration area in