Arduino MIDI Library  Version 4.3
midi_UsbTransport.h
Go to the documentation of this file.
1 
29 #pragma once
30 
31 #include "midi_Defs.h"
32 #include "midi_RingBuffer.h"
33 #include <MIDIUSB.h>
34 
36 
37 template<unsigned BuffersSize>
39 {
40 public:
41  inline UsbTransport();
42  inline ~UsbTransport();
43 
44 public: // Serial / Stream API required for template compatibility
45  inline void begin(unsigned inBaudrate);
46  inline unsigned available();
47  inline byte read();
48  inline void write(byte inData);
49 
50 private:
51  inline bool pollUsbMidi();
52  inline void recomposeAndSendTxPackets();
53  inline void resetTx();
54  static inline byte encodePacketHeader(StatusByte inStatusByte);
55  static inline int getPacketLength(const midiEventPacket_t& inPacket);
56 
57 private:
59  Buffer mTxBuffer;
60  Buffer mRxBuffer;
61 
62  union TxPacket
63  {
64  byte mDataArray[4];
65  midiEventPacket_t mPacket;
66  };
67  TxPacket mCurrentTxPacket;
68  int mCurrentTxPacketByteIndex;
69 };
70 
72 
73 #include "midi_UsbTransport.hpp"
byte StatusByte
Definition: midi_Defs.h:58
#define BEGIN_MIDI_NAMESPACE
#define END_MIDI_NAMESPACE
unsigned available()
MIDI Library for Arduino - Ring Buffer.
MIDI Library for the Arduino - Transport layer for USB MIDI.
uint8_t byte
Definition: midi_Defs.h:37
MIDI Library for the Arduino - Definitions.
void begin(unsigned inBaudrate)
void write(byte inData)