#ifndef _BSP_QUEUE_H_ #define _BSP_QUEUE_H_ #ifdef __cplusplus extern "C" { #endif #include "kit_macro.h" #define QUEUE_STATIC_INIT(_name, _len, _cell_len) \ uint8_t buf_##_name[_len * _cell_len]; \ QueueItem _name = \ { \ (_len), \ (_cell_len), \ 0, \ 0, \ buf_##_name, \ } #define QUEUE_STATIC_INIT_CCM(_name, _len, _cell_len) \ uint8_t buf_##_name[_len * _cell_len] __attribute__((section (".CCM_RAM"))); \ QueueItem _name __attribute__((section (".CCM_RAM"))) = \ { \ (_len), \ (_cell_len), \ 0, \ 0, \ buf_##_name, \ } typedef struct { uint16_t max_cnt; uint16_t cell_len; uint16_t pop_index; uint16_t push_index; uint8_t *buf; }QueueItem; bool bsp_queue_is_full(QueueItem* item); bool bsp_queue_is_empty(QueueItem* item); kit_ret_e bsp_queue_pop_pointer(QueueItem* item, void **prt); kit_ret_e bsp_queue_push_pointer(QueueItem* item, void **prt); kit_ret_e bsp_queue_pop_instance(QueueItem* item, uint8_t *ins); kit_ret_e bsp_queue_push_instance(QueueItem* item, uint8_t *ins); #ifdef __cplusplus } #endif #endif