/ firmware / src / console / session.h
session.h
 1  #pragma once
 2  #include <stddef.h>
 3  #include <atomic>
 4  #include <stdint.h>
 5  
 6  namespace programs::shell::session {
 7  
 8  struct RingBuffer {
 9    char *data;
10    uint16_t capacity;
11    std::atomic<uint16_t> head;
12    std::atomic<uint16_t> tail;
13  };
14  
15  struct WriteBuffer {
16    char *data;
17    size_t capacity;
18    size_t position;
19  };
20  
21  void reset(RingBuffer *ring);
22  bool push(RingBuffer *ring, char ch);
23  int pop(RingBuffer *ring, char *ch);
24  
25  void reset(WriteBuffer *buffer);
26  bool push(WriteBuffer *buffer, char ch);
27  
28  }
29