This repository has been archived on 2024-05-28. You can view files and clone it, but cannot push or open issues or pull requests.
2023-11-14 16:25:09 -05:00

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