c code refactor

This commit is contained in:
Attila Body 2019-11-12 09:36:56 +01:00
parent 76ba80db36
commit 180f2ef624
14 changed files with 369 additions and 130 deletions

View file

@ -23,8 +23,8 @@ class LL_CrcHandler : public Singleton<LL_CrcHandler>
public:
struct ICallback
{
virtual void CrcSucceeded(uintptr_t callbackParam, uint32_t crc, int prio) = 0;
virtual void CrcFailed(uintptr_t callbackParam, uint32_t crc, int prio) = 0;
virtual void CrcSucceeded(uintptr_t callbackParam, uint32_t crc, uint8_t task) = 0;
virtual void CrcFailed(uintptr_t callbackParam, uint32_t crc, uint8_t task) = 0;
};
class SlotBase
@ -39,8 +39,9 @@ public:
};
private:
SlotBase *m_next = nullptr;
uint8_t m_taskCount;
SlotBase *m_next = nullptr;
uint8_t m_taskCount;
virtual CrcTask& operator[](int index) = 0;
protected:
@ -49,7 +50,6 @@ public:
SlotBase(SlotBase const &other) = delete;
};
// DON't try this at home! we "extend" LL_CrcHandler::m_tasks this way
template <uint8_t n> class Slot : public SlotBase
{
public:
@ -61,12 +61,12 @@ public:
};
void AttachSlot(SlotBase &slot);
bool Enqueue(SlotBase &slot, uint8_t prio, void const *address, uint16_t len, ICallback *cb, uintptr_t cbParam);
uint32_t Compute(SlotBase &slot, uint8_t prio, void const *address, uint16_t len);
bool Enqueue(SlotBase &slot, uint8_t task, void const *address, uint16_t len, ICallback *cb, uintptr_t cbParam);
uint32_t Compute(SlotBase &slot, uint8_t task, void const *address, uint16_t len);
bool IsActive(SlotBase &slot, uint8_t prio) const;
bool IsQueued(SlotBase &slot, uint8_t prio) const;
bool IsRunning(SlotBase &slot, uint8_t prio) const;
bool IsActive(SlotBase &slot, uint8_t task) const;
bool IsQueued(SlotBase &slot, uint8_t task) const;
bool IsRunning(SlotBase &slot, uint8_t task) const;
void DmaTransferCompleted(void);
@ -75,12 +75,12 @@ private:
friend void ::_HandleCrcDmaIrq(void);
void StartNextTask(void);
void WaitResults(SlotBase &slot, uint8_t prio) const;
void WaitResults(SlotBase &slot, uint8_t task) const;
LL_DmaHelper m_dma;
LL_DmaHelper m_dma;
SlotBase * volatile m_firstSlot = nullptr;
SlotBase * volatile m_activeSlot = nullptr;
int volatile m_activePrio;
int volatile m_activeTask;
};