diff --git a/pico_sdk_sigrok/CMakeLists.txt b/pico_sdk_sigrok/CMakeLists.txt index 2cdf62c5..fa75ce2b 100644 --- a/pico_sdk_sigrok/CMakeLists.txt +++ b/pico_sdk_sigrok/CMakeLists.txt @@ -21,6 +21,9 @@ include(pico_sdk_import.cmake) project(pico_sdk_sigrok C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) +# DTR is not used for USB CDC connection, so we can set this to 1 +# This will allow PulseView to connect independently of the DTR signal +add_definitions(-DPICO_STDIO_USB_CONNECTION_WITHOUT_DTR=1) pico_sdk_init() add_executable(pico_sdk_sigrok diff --git a/pico_sdk_sigrok/build/pico_sdk_sigrok.uf2 b/pico_sdk_sigrok/build/pico_sdk_sigrok.uf2 index 2945c981..b41bea62 100644 Binary files a/pico_sdk_sigrok/build/pico_sdk_sigrok.uf2 and b/pico_sdk_sigrok/build/pico_sdk_sigrok.uf2 differ diff --git a/pico_sdk_sigrok/pico_sdk_sigrok.c b/pico_sdk_sigrok/pico_sdk_sigrok.c index 38ddc2a3..91ca099f 100644 --- a/pico_sdk_sigrok/pico_sdk_sigrok.c +++ b/pico_sdk_sigrok/pico_sdk_sigrok.c @@ -67,7 +67,7 @@ volatile bool mask_xfer_err; void my_stdio_usb_out_chars(const char *buf, int length) { static uint64_t last_avail_time; uint32_t owner; - if (tud_cdc_connected()) { + if (tud_ready()) { for (int i = 0; i < length;) { int n = length - i; int avail = (int) tud_cdc_write_available(); @@ -81,7 +81,7 @@ void my_stdio_usb_out_chars(const char *buf, int length) { } else { tud_task(); tud_cdc_write_flush(); - if (!tud_cdc_connected() || + if (!tud_ready() || (!tud_cdc_write_available() && time_us_64() > last_avail_time + PICO_STDIO_USB_STDOUT_TIMEOUT_US)) { break; }