// #include "queue.h" // /// front ... rear 数据方向 -> // /* 队列的顺序存储结构(循环队列) */ // can_queue_tag can_tx_queue; // can_queue_tag can_rx_queue; // /**************************************************** // * 函 数 名:init_queue // * 函数功能:初始化队列 // * 入口参数:无 // * 说 明: // ****************************************************/ // void queue_init(p_can_queue_tag p_queue) // { /* 构造一个空队列Q */ // p_queue->head = p_queue->tail = 0; /*空队列*/ // p_queue->count = 0; // } // /**************************************************** // * 函 数 名:is_queue_empty // * 函数功能:查询队列是否为空 // * 入口参数:Q 队列 // * 说 明:空队列,返回SUCCESS;否则返回ERROR // ****************************************************/ // uint8_t queue_empty(p_can_queue_tag p_queue) // { /* 若*/ // return p_queue->count == 0; // } // uint8_t queue_full(p_can_queue_tag p_queue) // { /* 若*/ // return p_queue->count == MAX_QSIZE; // } // /**************************************************** // * 函 数 名:queue_length // * 函数功能:初始化长度 // * 入口参数:Q 队列 // * 说 明: // ****************************************************/ // uint16_t queue_length(can_queue_tag p_queue) // { /* 返回Q的元素个数,即队列的长度 */ // return (p_queue.tail - p_queue.head + MAX_QSIZE) % MAX_QSIZE; // } // /**************************************************** // * 函 数 名:get_head // * 函数功能:获取对头数据 // * 入口参数:Q 队列 // * 说 明: // ****************************************************/ // uint8_t get_head( // can_queue_tag *p_queue, // pdu_tag *e) // { /* 若队列不空,则用e返回Q的队头元素,并返回OK;否则返回ERROR*/ // if (p_queue->head == p_queue->tail) /* 队列空 */ // return Q_ERR; // *e = p_queue->can_message[p_queue->head]; // p_queue->head = (p_queue->head + 1) % MAX_QSIZE; // return Q_OK; // } // /**************************************************** // * 函 数 名:insert_queue // * 函数功能:队列插入数据 // * 入口参数:Q 待插入队列 e 待插入数据 // * 说 明: // ****************************************************/ // QUEUE_STATUS en_queue(p_can_queue_tag p_queue, // pdu_tag data) // { // if (queue_full(p_queue)) // return Q_FULL; // p_queue->count++; // p_queue->can_message[p_queue->head] = data; // p_queue->head = (p_queue->head + 1) % MAX_QSIZE; // return Q_OK; // /* 插入元素e为Q的新的队尾元素 */ // // if ((p_queue->tail + 1) % MAX_QSIZE == p_queue->head) /* 队列满 */ // // return ERROR; // // p_queue->can_message[p_queue->tail] = e; // // p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE; // // return SUCCESS; // } // QUEUE_STATUS de_queue(p_can_queue_tag p_queue, // pdu_tag data) // { /* 插入元素e为Q的新的队尾元素 */ // // if ((p_queue->tail + 1) % MAX_QSIZE == p_queue->head) /* 队列满 */ // // return ERROR; // // p_queue->can_message[p_queue->tail] = e; // // p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE; // // return SUCCESS; // if (queue_empty(p_queue)) // return Q_EMPTY; // data = p_queue->can_message[p_queue->tail]; // p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE; // p_queue->count--; // return Q_OK; // }