#ifndef _BSP_QUEUE_ #define _BSP_QUEUE_ #ifdef __cplusplus extern "C" { #endif #include #include typedef struct { uint16_t max_cnt; uint16_t cell_len; uint16_t pop_index; uint16_t push_index; uint8_t *buf; } QueueItem; #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, \ } bool bsp_queue_is_full(QueueItem* item); bool bsp_queue_is_empty(QueueItem* item); KitResult bsp_queue_pop_pointer(QueueItem* item, void **ptr); KitResult bsp_queue_push_pointer(QueueItem* item, void **ptr); KitResult bsp_queue_pop_instance(QueueItem* item, uint8_t *ins); KitResult bsp_queue_push_instance(QueueItem* item, uint8_t *ins); #ifdef __cplusplus } #endif #endif