Merge branch 'develop' into meier/pdec-config-persistent

This commit is contained in:
Jakob Meier
2023-02-22 14:50:43 +01:00
3 changed files with 104 additions and 50 deletions

View File

@ -96,6 +96,8 @@ class PdecHandler : public SystemObject,
static const Event LOST_CARRIER_LOCK_PDEC = MAKE_EVENT(5, severity::INFO);
//! [EXPORT] : [COMMENT] Lost bit lock
static const Event LOST_BIT_LOCK_PDEC = MAKE_EVENT(6, severity::INFO);
//! [EXPORT] : [COMMENT] Too many IRQs over the time window of one second. P1: Allowed TCs
static constexpr Event TOO_MANY_IRQS = MAKE_EVENT(7, severity::MEDIUM);
static constexpr Event POLL_SYSCALL_ERROR_PDEC =
event::makeEvent(SUBSYSTEM_ID, 7, severity::MEDIUM);
static constexpr Event WRITE_SYSCALL_ERROR_PDEC =
@ -175,6 +177,8 @@ class PdecHandler : public SystemObject,
static const uint8_t NEGATIVE_WINDOW = 1;
};
static constexpr uint32_t MAX_ALLOWED_IRQS_PER_WINDOW = 800;
enum class FrameAna_t : uint8_t {
ABANDONED_CLTU,
FRAME_DIRTY,
@ -201,13 +205,16 @@ class PdecHandler : public SystemObject,
static uint32_t CURRENT_FAR;
Countdown lockCheckCd = Countdown(IRQ_TIMEOUT_MS);
Countdown genericCheckCd = Countdown(IRQ_TIMEOUT_MS);
object_id_t tcDestinationId;
AcceptsTelecommandsIF* tcDestination = nullptr;
LinuxLibgpioIF* gpioComIF = nullptr;
uint32_t interruptCounter = 0;
Countdown interruptWindowCd = Countdown(1000);
/**
* Reset signal is required to hold PDEC in reset state until the configuration has been
* written to the appropriate memory space.
@ -258,6 +265,7 @@ class PdecHandler : public SystemObject,
ReturnValue_t polledOperation();
ReturnValue_t irqOperation();
ReturnValue_t checkAndHandleIrqs(int fd, uint32_t& info);
uint32_t readFar();
@ -293,6 +301,8 @@ class PdecHandler : public SystemObject,
*/
void checkLocks();
void resetIrqLimiters();
/**
* @brief Analyzes the FramAna field (frame analysis data) of a FAR report.
*