LCOV - code coverage report
Current view: top level - src/MIDI_Interfaces - PicoUSBInit.hpp (source / functions) Hit Total Coverage
Test: 3a807a259ebe0769dd942f7f612dca5273937539 Lines: 1 1 100.0 %
Date: 2024-03-24 17:16:54 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : /**
       4             :  * @file
       5             :  * When using the earlephilhower/arduino-pico core with the TinyUSB backend,
       6             :  * calling Serial.read/print/write before TinyUSBDevice.mounted() returns true
       7             :  * crashes the chip. The function in this file checks if the given stream is
       8             :  * actually the `Serial` port (USB CDC), and if so returns whether TinyUSB
       9             :  * has been mounted or not. If it returns true, it is safe to read/write from/to
      10             :  * the stream.
      11             :  */
      12             : 
      13             : #include <AH/Arduino-Wrapper.h>
      14             : 
      15             : #if defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_ARCH_MBED) &&             \
      16             :     defined(USE_TINYUSB)
      17             : #include <Adafruit_TinyUSB.h>
      18             : namespace {
      19             : bool ensure_usb_init(Print &stream) {
      20             :     if (&stream == static_cast<Print *>(&Serial))
      21             :         return TinyUSBDevice.mounted();
      22             :     return true;
      23             : }
      24             : } // namespace
      25             : #else
      26             : namespace {
      27          50 : constexpr bool ensure_usb_init(Print &) { return true; }
      28             : } // namespace
      29             : #endif

Generated by: LCOV version 1.15