#include #include #include "common.h" #include "param_config.h" #include "ble_pub.h" #include "drv_oled.h" #include #include #include "ring_queue.h" void RingQueue_init(RingQueue *q) { q->front = 0; q->rear = 0; q->size = 0; } bool RingQueue_isFull(RingQueue *q) { return q->size == MAX_SIZE; } int RingQueue_size(RingQueue* q) { return q->size; } bool RingQueue_enqueue(RingQueue *q, int value) { if (RingQueue_isFull(q)) { return false; // 队列已满,返回失败 } q->data[q->rear] = value; // 将值放入队尾 q->rear = (q->rear + 1) % MAX_SIZE; // 更新队尾指针,注意使用模运算实现循环 q->size++; // 队列大小加一 return true; // 成功入队返回true } bool RingQueue_dequeue(RingQueue *q, int *value) { if (q->size == 0) { // 队列为空,返回失败 return false; } *value = q->data[q->front]; // 获取队头元素的值 q->front = (q->front + 1) % MAX_SIZE; // 更新队头指针,注意使用模运算实现循环 q->size--; // 队列大小减一 return true; // 成功出队返回true }