Control Surface new-input
MIDI Control Surface library for Arduino
SysExBuffer.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Settings/SettingsWrapper.hpp>
4 
6 
13 class SysExBuffer {
14  private:
16  uint16_t length = 0;
17  bool receiving = false;
18 
19  public:
21  void start();
23  void end();
25  void add(uint8_t data);
27  void add(const uint8_t *data, uint8_t len);
29  bool hasSpaceLeft(uint8_t amount = 1) const;
31  bool isReceiving() const;
33  const uint8_t *getBuffer() const;
35  uint16_t getLength() const;
36 };
37 
#define END_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
constexpr size_t SYSEX_BUFFER_SIZE
The length of the maximum System Exclusive message that can be received.
Helper for storing the System Exclusive messages being received by a MIDI parser.
Definition: SysExBuffer.hpp:13
const uint8_t * getBuffer() const
Get a pointer to the buffer.
Definition: SysExBuffer.cpp:34
uint16_t length
Definition: SysExBuffer.hpp:16
uint8_t buffer[SYSEX_BUFFER_SIZE]
Definition: SysExBuffer.hpp:15
bool hasSpaceLeft(uint8_t amount=1) const
Check if the buffer has at least amount bytes of free space available.
Definition: SysExBuffer.cpp:25
void start()
Start a new SysEx message.
Definition: SysExBuffer.cpp:6
void add(uint8_t data)
Add a byte to the current SysEx message.
Definition: SysExBuffer.cpp:15
void end()
Finish the current SysEx message.
Definition: SysExBuffer.cpp:11
uint16_t getLength() const
Get the length of the SysEx message in the buffer.
Definition: SysExBuffer.cpp:36
bool isReceiving() const
Check if the buffer is receiving a SysEx message.
Definition: SysExBuffer.cpp:32