queue.c111 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // #include "queue.h"
  2. // /// front ... rear 数据方向 ->
  3. // /* 队列的顺序存储结构(循环队列) */
  4. // can_queue_tag can_tx_queue;
  5. // can_queue_tag can_rx_queue;
  6. // /****************************************************
  7. // * 函 数 名:init_queue
  8. // * 函数功能:初始化队列
  9. // * 入口参数:无
  10. // * 说 明:
  11. // ****************************************************/
  12. // void queue_init(p_can_queue_tag p_queue)
  13. // { /* 构造一个空队列Q */
  14. // p_queue->head = p_queue->tail = 0; /*空队列*/
  15. // p_queue->count = 0;
  16. // }
  17. // /****************************************************
  18. // * 函 数 名:is_queue_empty
  19. // * 函数功能:查询队列是否为空
  20. // * 入口参数:Q 队列
  21. // * 说 明:空队列,返回SUCCESS;否则返回ERROR
  22. // ****************************************************/
  23. // uint8_t queue_empty(p_can_queue_tag p_queue)
  24. // { /* 若*/
  25. // return p_queue->count == 0;
  26. // }
  27. // uint8_t queue_full(p_can_queue_tag p_queue)
  28. // { /* 若*/
  29. // return p_queue->count == MAX_QSIZE;
  30. // }
  31. // /****************************************************
  32. // * 函 数 名:queue_length
  33. // * 函数功能:初始化长度
  34. // * 入口参数:Q 队列
  35. // * 说 明:
  36. // ****************************************************/
  37. // uint16_t queue_length(can_queue_tag p_queue)
  38. // { /* 返回Q的元素个数,即队列的长度 */
  39. // return (p_queue.tail - p_queue.head + MAX_QSIZE) % MAX_QSIZE;
  40. // }
  41. // /****************************************************
  42. // * 函 数 名:get_head
  43. // * 函数功能:获取对头数据
  44. // * 入口参数:Q 队列
  45. // * 说 明:
  46. // ****************************************************/
  47. // uint8_t get_head(
  48. // can_queue_tag *p_queue,
  49. // pdu_tag *e)
  50. // { /* 若队列不空,则用e返回Q的队头元素,并返回OK;否则返回ERROR*/
  51. // if (p_queue->head == p_queue->tail) /* 队列空 */
  52. // return Q_ERR;
  53. // *e = p_queue->can_message[p_queue->head];
  54. // p_queue->head = (p_queue->head + 1) % MAX_QSIZE;
  55. // return Q_OK;
  56. // }
  57. // /****************************************************
  58. // * 函 数 名:insert_queue
  59. // * 函数功能:队列插入数据
  60. // * 入口参数:Q 待插入队列 e 待插入数据
  61. // * 说 明:
  62. // ****************************************************/
  63. // QUEUE_STATUS en_queue(p_can_queue_tag p_queue,
  64. // pdu_tag data)
  65. // {
  66. // if (queue_full(p_queue))
  67. // return Q_FULL;
  68. // p_queue->count++;
  69. // p_queue->can_message[p_queue->head] = data;
  70. // p_queue->head = (p_queue->head + 1) % MAX_QSIZE;
  71. // return Q_OK;
  72. // /* 插入元素e为Q的新的队尾元素 */
  73. // // if ((p_queue->tail + 1) % MAX_QSIZE == p_queue->head) /* 队列满 */
  74. // // return ERROR;
  75. // // p_queue->can_message[p_queue->tail] = e;
  76. // // p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE;
  77. // // return SUCCESS;
  78. // }
  79. // QUEUE_STATUS de_queue(p_can_queue_tag p_queue,
  80. // pdu_tag data)
  81. // { /* 插入元素e为Q的新的队尾元素 */
  82. // // if ((p_queue->tail + 1) % MAX_QSIZE == p_queue->head) /* 队列满 */
  83. // // return ERROR;
  84. // // p_queue->can_message[p_queue->tail] = e;
  85. // // p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE;
  86. // // return SUCCESS;
  87. // if (queue_empty(p_queue))
  88. // return Q_EMPTY;
  89. // data = p_queue->can_message[p_queue->tail];
  90. // p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE;
  91. // p_queue->count--;
  92. // return Q_OK;
  93. // }