| 1234567891011121314151617181920212223242526272829303132333435363738 |
- //
- // 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, BL_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], BL_DATA_SIZE);
- q->head = (q->head + 1) % QUEUE_SIZE;
- return 0;
- }
|