#ifndef STM32U5XX_HAL_QUEUE_HPP #define STM32U5XX_HAL_QUEUE_HPP #include "global_variable.h" #include #include template class queue_stack { private: T buffer[size]{}; uint32_t head = 0; // index of head uint32_t tail = 0; // index of tail uint32_t count = 0; // number of elements in queue public: queue_stack(); void clear(); bool is_empty(); hal_status_e push(T data); hal_status_e pop(T *data); hal_status_e push_block(const T *data, uint32_t len); hal_status_e pop_block(T *data, uint32_t &len); hal_status_e get_line(T *data, uint32_t &len); }; template class queue_stack<20, uint8_t>; template class queue_stack<20, uint32_t>; #define queue20u8 queue_stack<20, uint8_t> #define queue20u32 queue_stack<20, uint32_t> #endif // STM32U5XX_HAL_QUEUE_HPP