44 lines
865 B
C++
Executable File
44 lines
865 B
C++
Executable File
#ifndef STM32U5XX_HAL_QUEUE_HPP
|
|
#define STM32U5XX_HAL_QUEUE_HPP
|
|
|
|
#include "global_variable.h"
|
|
#include <cstdint>
|
|
#include <stm32u5xx.h>
|
|
|
|
|
|
template<int size, typename T>
|
|
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
|