| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <string.h>
- #include "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);
- }
- bool queue_empty(queue_list_t* queue) {
- return (queue->size == 0);
- }
- void queue_in(queue_list_t* queue, uint8_t* item, int length) {
- // int i;
- if (queue_full(queue)) {
- //LOG_ERROR("queue is full!");
- return;
- }
- length = length > MAX_BUF ? MAX_BUF : length;
- // for(i=0; i<QUEUE_MAX; i++) {
- // if(memcmp(item, queue->data[i].cmd, length) == 0) // have same cmd, return
- // return;
- // }
- queue->rear++;
- queue->rear %= QUEUE_MAX;
- 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, uint8_t* item) {
- if (queue_empty(queue)) {
- //LOG_ERROR("queue is empty!");
- return 0;
- }
- queue->front++;
- queue->front %= QUEUE_MAX;
- 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;
- }
|