LCOV - code coverage report
Current view: top level - src/MIDI_Interfaces - PicoUSBInit.hpp (source / functions) Coverage Total Hit
Test: 73449d9b107c772cf65493691543348214e5d5eb Lines: 100.0 % 1 1
Test Date: 2026-06-06 17:44:35 Functions: 100.0 % 1 1
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 2.4-beta