| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #include <string.h>
- #include "sys_queue.h"
- void queue_init(queue_list_t* queue) {
- queue->front = -1;
- queue->rear = -1;
- queue->size = 0;
- }
- bool queue_full(queue_list_t* queue)
- {
- return (queue->size == QUEUE_MAX_DATA_NUM);
- }
- bool queue_empty(queue_list_t* queue)
- {
- return (queue->size == 0);
- }
- void queue_in(queue_list_t* queue, void* item, int length)
- {
- if (queue_full(queue))
- {
- return;
- }
- length = length > QUEUE_MAX_DATA_LEN ? QUEUE_MAX_DATA_LEN : length;
- queue->rear++;
- queue->rear %= QUEUE_MAX_DATA_NUM;
- queue->size++;
- memset(&queue->data[queue->rear], 0, sizeof(queue_element_t));
- memcpy(queue->data[queue->rear].cmd, item, length);
- queue->data[queue->rear].length = length;
- }
- int queue_out(queue_list_t* queue, void* item)
- {
- if (queue_empty(queue))
- {
- return 0;
- }
- queue->front++;
- queue->front %= QUEUE_MAX_DATA_NUM;
- queue->size--;
- memcpy(item, queue->data[queue->front].cmd, queue->data[queue->front].length);
- return queue->data[queue->front].length;
- }
- int queue_size(queue_list_t* queue)
- {
- return queue->size;
- }
|