| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #ifndef __SYS_QUEUE_H__
- #define __SYS_QUEUE_H__
- #include "stdint.h"
- #include "stdbool.h"
- #define QUEUE_MAX_DATA_NUM 32 //队列中有几包数据
- #define QUEUE_MAX_DATA_LEN 64 //队列中单包数据长度
- typedef struct {
- int length;
- uint8_t cmd[QUEUE_MAX_DATA_LEN];
- }queue_element_t;
- typedef struct {
- queue_element_t data[QUEUE_MAX_DATA_NUM];
- int front;
- int rear;
- int size;
- } queue_list_t;
- void queue_init(queue_list_t* queue);
- bool queue_full(queue_list_t* queue);
- bool queue_empty(queue_list_t* queue);
- void queue_in(queue_list_t* queue, void* item, int length);
- int queue_out(queue_list_t* queue, void* item);
- int queue_size(queue_list_t* queue);
- #define QUEUE_MSG_PROCESS(QUEUE,FUNC) \
- do { \
- uint8_t out[QUEUE_MAX_DATA_LEN]; \
- if(!queue_empty(QUEUE)) { \
- int len = queue_out(QUEUE, out); \
- if(len > 0) { \
- FUNC(out, len); \
- } \
- } \
- } while (0)
- #define QUEUE_MSG_EMPTY(QUEUE) (queue_empty(QUEUE))
- #define QUEUE_MSG_NOT_EMPTY(QUEUE) (!queue_empty(QUEUE))
- #endif /* __SYS_QUEUE_H__ */
|