esp01s-serial-remote-controller

Serial communication from ESP-01S served webpage
Index Commits Files Refs README LICENSE
src/queue.c (799B)
   1 #include "queue.h"
   2 
   3 void queue_init(queue_t *queue)
   4 {
   5     queue->head = 0;
   6     queue->tail = 0;
   7     queue->count = 0;
   8 
   9     for (uint8_t i = 0; i < QUEUE_LEN; ++i)
  10     {
  11         queue->data[i] = 0;
  12     }
  13 }
  14 
  15 void queue_enqueue(queue_t *queue, uint8_t value)
  16 {
  17     queue->data[queue->head] = value;
  18     queue->count += ((queue->count == QUEUE_LEN) ? 0 : 1);
  19     queue->head += ((queue->count == QUEUE_LEN) ? 0 : 1);
  20 }
  21 
  22 uint8_t queue_dequeue(queue_t *queue)
  23 {
  24     if (queue_is_empty(queue))
  25     {
  26         return 0;
  27     }
  28 
  29     queue->count--;
  30     return queue->data[queue->tail++];
  31 }
  32 
  33 uint8_t queue_peek(queue_t *queue)
  34 {
  35     return queue->data[queue->tail];
  36 }
  37 
  38 uint16_t queue_count(queue_t *queue)
  39 {
  40     return queue->count;
  41 }
  42 
  43 uint8_t queue_is_empty(queue_t *queue)
  44 {
  45     return (queue->count == 0);
  46 }