From f0d79038c137270d42a9266e18d9b72b72318d84 Mon Sep 17 00:00:00 2001 From: kenji Date: Tue, 12 Aug 2025 11:51:26 -0400 Subject: [PATCH] update for pico-sdk v2.2.0 --- CMakeLists.txt | 8 +-- build/hyperx_kb_rgb.uf2 | Bin 170496 -> 171520 bytes hyperx_elite2.h | 2 +- tusb_config.h | 29 ++++++++- usb_descriptors.c | 134 ++++++++++++++++++---------------------- usb_descriptors.h | 10 +++ 6 files changed, 100 insertions(+), 83 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8999287..5fed187 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,14 +15,8 @@ target_sources(${PROJECT} PRIVATE main_host.c usb_descriptors.c hyperx_elite2.c - # can use 'tinyusb_pico_pio_usb' library later when pico-sdk is updated - ${PICO_TINYUSB_PATH}/src/portable/raspberrypi/pio_usb/dcd_pio_usb.c - ${PICO_TINYUSB_PATH}/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c ) - - - # print memory usage, enable all warnings target_link_options(${PROJECT} PRIVATE -Xlinker --print-memory-usage) target_compile_options(${PROJECT} PRIVATE ) #-Wall -Wextra @@ -36,8 +30,10 @@ target_include_directories(${PROJECT} PRIVATE ${CMAKE_CURRENT_LIST_DIR}) target_link_libraries(${PROJECT} PRIVATE pico_stdlib pico_pio_usb + tinyusb_board tinyusb_device tinyusb_host + tinyusb_pico_pio_usb hardware_adc ) diff --git a/build/hyperx_kb_rgb.uf2 b/build/hyperx_kb_rgb.uf2 index eb60347921ce4707dce6b4edb263b672d3bc7506..f8e9cd713455f204bead4747ccf051871214b7ad 100644 GIT binary patch delta 25905 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 pywT|A-2QhU&+nnbi6-V8 31 ) chr_count = 31; + // Cap at max char + chr_count = (uint8_t) strlen(str); + if ( chr_count > 31 ) chr_count = 31; - // Convert ASCII string into UTF-16 - for(uint8_t i=0; i