123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #include "queue.h"
- can_queue_tag can_tx_queue;
- can_queue_tag can_rx_queue;
- void queue_init(p_can_queue_tag p_queue)
- {
- p_queue->head = p_queue->tail = 0;
- p_queue->count = 0;
- }
- 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;
- }
- uint16_t queue_length(can_queue_tag p_queue)
- {
- return (p_queue.tail - p_queue.head + MAX_QSIZE) % MAX_QSIZE;
- }
- uint8_t get_head(
- can_queue_tag *p_queue,
- pdu_tag *e)
- {
- 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;
- }
- 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;
-
-
-
-
-
-
- }
- QUEUE_STATUS de_queue(p_can_queue_tag p_queue,
- p_pdu_tag p_data)
- {
-
-
-
-
-
- if (queue_empty(p_queue))
- return Q_EMPTY;
- *p_data = p_queue->can_message[p_queue->tail];
- p_queue->tail = (p_queue->tail + 1) % MAX_QSIZE;
- p_queue->count--;
- return Q_OK;
- }
|