// // Created by EDZ on 25-9-23. // #include "../Inc/ring_buffer.h" void RingBuffer_Init(RingBuffer *q) { q->head = 0; q->tail = 0; } int RingBuffer_IsEmpty(RingBuffer *q) { return (q->head == q->tail); } int RingBuffer_IsFull(RingBuffer *q) { return ((q->tail + 1) % QUEUE_SIZE == q->head); } int RingBuffer_Enqueue(RingBuffer *q, const uint8_t *data) { if (RingBuffer_IsFull(q)) { return -1; // 队列已满 } // q->buffer[q->tail] = data; memcpy(q->buffer[q->tail], data, DATA_SIZE); q->tail = (q->tail + 1) % QUEUE_SIZE; return 0; } int RingBuffer_Dequeue(RingBuffer *q, uint8_t *data) { if (RingBuffer_IsEmpty(q)) { return -1; // 队列为空· } // *data = q->buffer[q->head]; memcpy(data,q->buffer[q->head], DATA_SIZE); q->head = (q->head + 1) % QUEUE_SIZE; return 0; }