Line data Source code
1 : #include "SysExBuffer.hpp" 2 : #include <string.h> 3 : 4 : BEGIN_CS_NAMESPACE 5 : 6 48 : void SysExBuffer::start() { 7 48 : length = 0; // if the previous message wasn't finished, overwrite it 8 48 : receiving = true; 9 48 : } 10 : 11 42 : void SysExBuffer::end() { receiving = false; } 12 : 13 768 : void SysExBuffer::add(uint8_t data) { 14 768 : buffer[length] = data; 15 768 : ++length; 16 768 : } 17 : 18 108 : void SysExBuffer::add(const uint8_t *data, uint8_t len) { 19 108 : memcpy(buffer + length, data, len); 20 108 : length += len; 21 108 : } 22 : 23 852 : bool SysExBuffer::hasSpaceLeft(uint8_t amount) const { 24 852 : bool avail = length <= SYSEX_BUFFER_SIZE - amount; 25 852 : if (!avail) 26 : DEBUG(F("SysEx: Buffer full (") << amount << ')'); 27 852 : return avail; 28 : } 29 : 30 108 : bool SysExBuffer::isReceiving() const { return receiving; } 31 : 32 78 : const uint8_t *SysExBuffer::getBuffer() const { return buffer; } 33 : 34 78 : uint16_t SysExBuffer::getLength() const { return length; } 35 : 36 : END_CS_NAMESPACE