Allolib  1.0
C++ Components For Interactive Multimedia
al_Arduino.hpp
1 #ifndef AL_ARDUINO_HPP
2 #define AL_ARDUINO_HPP
3 
4 #include <functional>
5 #include <thread>
6 
7 #include "serial/serial.h"
8 
9 #include "al/types/al_SingleRWRingBuffer.hpp"
10 
11 namespace al {
12 
20 class Arduino {
21  public:
22  Arduino(size_t ringBufferSize = 256) : mRingBuffer(ringBufferSize) {}
23 
35  bool init(std::string port = "", unsigned long baud = 9600,
36  uint32_t granularity = 50);
37 
38  void cleanup();
39 
40  bool isOpen() { return mRunning && mReaderThread; }
41 
46  std::vector<std::string> getLines();
47 
48  std::function<void(uint8_t *, size_t)> onInput = [](uint8_t *, size_t) {};
49 
50  private:
51  void readFunction();
52 
53  std::unique_ptr<serial::Serial> serialPort;
54  SingleRWRingBuffer mRingBuffer;
55 
56  bool mRunning{false};
57  std::unique_ptr<std::thread> mReaderThread;
58 
59  std::string mLineBuffer;
60  uint32_t mGranularity;
61 };
62 
63 } // namespace al
64 
65 #endif // AL_SERIAL_HPP
Arduino class.
Definition: al_Arduino.hpp:20
bool init(std::string port="", unsigned long baud=9600, uint32_t granularity=50)
initialize serial port and reader thread
std::vector< std::string > getLines()
getLines received from serial port and remove them from input buffer
Definition: al_App.hpp:23