43#ifndef QF_EQUEUE_CTR_SIZE
52 #define QF_EQUEUE_CTR_SIZE 1U
57#if (QF_EQUEUE_CTR_SIZE == 1U)
64#elif (QF_EQUEUE_CTR_SIZE == 2U)
66#elif (QF_EQUEUE_CTR_SIZE == 4U)
69 #error "QF_EQUEUE_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U"
161 void init(
QEvt const *qSto[], std::uint_fast16_t
const qLen)
noexcept;
177 bool post(
QEvt const *
const e, std::uint_fast16_t
const margin,
178 std::uint_fast8_t
const qs_id)
noexcept;
189 std::uint_fast8_t
const qs_id)
noexcept;
203 QEvt const *
get(std::uint_fast8_t
const qs_id)
noexcept;
QActive active object (based on QP::QHsm implementation)
Native QF Event Queue class.
QEQueueCtr volatile m_head
offset to where next event will be inserted into the buffer
QEQueueCtr getNFree(void) const noexcept
"raw" thread-safe QF event queue operation for obtaining the number of free entries still available i...
bool isEmpty(void) const noexcept
"raw" thread-safe QF event queue operation to find out if the queue is empty
QEQueue & operator=(QEQueue const &)=delete
disallow assignment of QEQueue
QEvt const *volatile m_frontEvt
pointer to event at the front of the queue
QEQueue(QEQueue const &)=delete
disallow copying of QEQueue
QEQueueCtr getNMin(void) const noexcept
"raw" thread-safe QF event queue operation for obtaining the minimum number of free entries ever in t...
QEvt const * get(std::uint_fast8_t const qs_id) noexcept
"raw" thread-safe QF event queue implementation for the Last-In-First-Out (LIFO) event posting.
void init(QEvt const *qSto[], std::uint_fast16_t const qLen) noexcept
Initializes the native QF event queue.
QEvt const ** m_ring
pointer to the start of the ring buffer
void postLIFO(QEvt const *const e, std::uint_fast8_t const qs_id) noexcept
"raw" thread-safe QF event queue implementation for the First-In-First-Out (FIFO) event posting.
QEQueueCtr m_nMin
minimum number of free events ever in the ring buffer.
bool post(QEvt const *const e, std::uint_fast16_t const margin, std::uint_fast8_t const qs_id) noexcept
"raw" thread-safe QF event queue implementation for the event posting (FIFO).
QEQueue(void) noexcept
public default constructor
QEQueueCtr volatile m_tail
offset of where next event will be extracted from the buffer
QEQueueCtr m_end
offset of the end of the ring buffer from the start of the buffer
QEQueueCtr volatile m_nFree
number of free events in the ring buffer
QS software tracing facilities.
"Ticker" Active Object class
Extended (blocking) thread of the QXK preemptive kernel.
namespace associated with the QP/C++ framework
std::uint8_t QEQueueCtr
The data type to store the ring-buffer counters based on the macro #QF_EQUEUE_CTR_SIZE.