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