LCOV - code coverage report
Current view: top level - src/MIDI_Interfaces - USBMIDI_Interface.ipp (source / functions) Hit Total Coverage
Test: b8a30b4b7040ae1abf162fd0a258beaa2de43626 Lines: 28 39 71.8 %
Date: 2024-12-21 21:28:55 Functions: 10 12 83.3 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #include <Def/TypeTraits.hpp>
       2             : #include <MIDI_Parsers/LambdaPuller.hpp>
       3             : 
       4             : BEGIN_CS_NAMESPACE
       5             : 
       6             : // Reading MIDI
       7             : // -----------------------------------------------------------------------------
       8             : 
       9             : template <class Backend>
      10          18 : MIDIReadEvent GenericUSBMIDI_Interface<Backend>::read() {
      11          44 :     auto pullpacket = [this](typename Backend::MIDIUSBPacket_t &packet) {
      12          26 :         packet = backend.read();
      13          26 :         return packet[0] != 0x00;
      14             :     };
      15          36 :     return parser.pull(LambdaPuller(std::move(pullpacket)));
      16             : }
      17             : 
      18             : template <class Backend>
      19           0 : void GenericUSBMIDI_Interface<Backend>::begin() {
      20             : #ifndef __SAM3X8E__ // Due compiler too old, doesn't support begin_if_possible()
      21           0 :     begin_if_possible(backend);
      22             : #endif
      23           0 : }
      24             : 
      25             : template <class Backend>
      26           6 : void GenericUSBMIDI_Interface<Backend>::update() {
      27           6 :     MIDI_Interface::updateIncoming(this);
      28           6 : }
      29             : 
      30             : // Retrieving the received messages
      31             : // -----------------------------------------------------------------------------
      32             : 
      33             : template <class Backend>
      34           3 : ChannelMessage GenericUSBMIDI_Interface<Backend>::getChannelMessage() const {
      35           3 :     return parser.getChannelMessage();
      36             : }
      37             : 
      38             : template <class Backend>
      39             : SysCommonMessage
      40           3 : GenericUSBMIDI_Interface<Backend>::getSysCommonMessage() const {
      41           3 :     return parser.getSysCommonMessage();
      42             : }
      43             : 
      44             : template <class Backend>
      45           2 : RealTimeMessage GenericUSBMIDI_Interface<Backend>::getRealTimeMessage() const {
      46           2 :     return parser.getRealTimeMessage();
      47             : }
      48             : 
      49             : template <class Backend>
      50           7 : SysExMessage GenericUSBMIDI_Interface<Backend>::getSysExMessage() const {
      51           7 :     return parser.getSysExMessage();
      52             : }
      53             : 
      54             : // Sending MIDI
      55             : // -----------------------------------------------------------------------------
      56             : 
      57             : template <class Backend>
      58           3 : void GenericUSBMIDI_Interface<Backend>::sendChannelMessageImpl(
      59             :     ChannelMessage msg) {
      60           3 :     sender.sendChannelMessage(msg, Sender {this});
      61           3 :     if (alwaysSendImmediately_)
      62           0 :         backend.sendNow();
      63           3 : }
      64             : 
      65             : template <class Backend>
      66           0 : void GenericUSBMIDI_Interface<Backend>::sendSysCommonImpl(
      67             :     SysCommonMessage msg) {
      68           0 :     sender.sendSysCommonMessage(msg, Sender {this});
      69           0 :     if (alwaysSendImmediately_)
      70           0 :         backend.sendNow();
      71           0 : }
      72             : 
      73             : template <class Backend>
      74          19 : void GenericUSBMIDI_Interface<Backend>::sendSysExImpl(const SysExMessage msg) {
      75          19 :     sender.sendSysEx(msg, Sender {this});
      76          19 :     if (alwaysSendImmediately_)
      77           0 :         backend.sendNow();
      78          19 : }
      79             : 
      80             : template <class Backend>
      81           1 : void GenericUSBMIDI_Interface<Backend>::sendRealTimeImpl(RealTimeMessage msg) {
      82           1 :     sender.sendRealTimeMessage(msg, Sender {this});
      83           1 :     if (alwaysSendImmediately_)
      84           0 :         backend.sendNow();
      85           1 : }
      86             : 
      87             : END_CS_NAMESPACE

Generated by: LCOV version 1.15