Add cpu_temp_raw_smoothed() (cmd.cpp/cmd.h): 256-sample average over a slow EMA (alpha=0.15) so the RP2350 on-die temperature converges to the true value instead of chasing per-sample 12-bit ADC noise (~1 LSB = 0.47 C). Single source of truth, ADC initialised in one place. Also export CPU/Clock telemetry on HID feature report 0xfc (set_khz, cached real_khz, vreg code, ADC ch4 raw). The handler is dormant: live read over WebHID is not feasible (Chrome requires the report declared in the HID descriptor, and declaring the OLED Edition vendor reports breaks DualSense enumeration on Windows). It is harmless and left for a possible future non-WebHID consumer. Link hardware_adc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
187 lines
5.1 KiB
CMake
187 lines
5.1 KiB
CMake
# Generated Cmake Pico project file
|
|
|
|
cmake_minimum_required(VERSION 3.13)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
# Initialise pico_sdk from installed location
|
|
# (note this can come from environment, CMake cache etc)
|
|
|
|
# == DO NOT EDIT THE FOLLOWING LINES for the Raspberry Pi Pico VS Code Extension to work ==
|
|
if (WIN32)
|
|
set(USERHOME $ENV{USERPROFILE})
|
|
else ()
|
|
set(USERHOME $ENV{HOME})
|
|
endif ()
|
|
set(sdkVersion 2.2.0)
|
|
set(toolchainVersion 14_2_Rel1)
|
|
set(picotoolVersion 2.2.0-a4)
|
|
set(picoVscode ${USERHOME}/.pico-sdk/cmake/pico-vscode.cmake)
|
|
if (EXISTS ${picoVscode})
|
|
include(${picoVscode})
|
|
endif ()
|
|
# ====================================================================================
|
|
|
|
if (PICO_W_BUILD)
|
|
set(PICO_BOARD pico_w CACHE STRING "Board type")
|
|
set(PICO_RP2350 OFF CACHE BOOL "Not using RP2350")
|
|
else ()
|
|
set(PICO_BOARD pico2_w CACHE STRING "Board type")
|
|
endif ()
|
|
#set(PICO_CYW43_SUPPORTED 1)
|
|
#set(PICO_CYW43_ARCH_THREADSAFE_BACKGROUND 1)
|
|
|
|
option(ENABLE_SERIAL "Enable USB CDC serial printf output" OFF)
|
|
if (ENABLE_SERIAL)
|
|
set(ENABLE_SERIAL_VALUE 1)
|
|
else ()
|
|
set(ENABLE_SERIAL_VALUE 0)
|
|
endif ()
|
|
option(ENABLE_VERBOSE "Enable Log Verbose" OFF)
|
|
if(ENABLE_VERBOSE)
|
|
set(ENABLE_VERBOSE_VALUE 1)
|
|
else()
|
|
set(ENABLE_VERBOSE_VALUE 0)
|
|
endif ()
|
|
option(ENABLE_BATT_LED "Blink Pico LED when DualSense battery is low (<=10%)" ON)
|
|
if (ENABLE_BATT_LED)
|
|
set(ENABLE_BATT_LED_VALUE 1)
|
|
else ()
|
|
set(ENABLE_BATT_LED_VALUE 0)
|
|
endif ()
|
|
option(DISABLE_SPEAKER_PROC "Disable Speaker in controller" OFF)
|
|
if (DISABLE_SPEAKER_PROC)
|
|
set(DISABLE_SPEAKER_PROC_VALUE 1)
|
|
else ()
|
|
set(DISABLE_SPEAKER_PROC_VALUE 0)
|
|
endif ()
|
|
option(PICO_W_BUILD "Build for Rasberry Pi Pico W, audio is missing" OFF)
|
|
if (PICO_W_BUILD)
|
|
set(CYW43_PIO_CLOCK_DIV_VALUE 3)
|
|
set(SYS_CLOCK_KHZ_VALUE 200000)
|
|
set(DISABLE_SPEAKER_PROC_VALUE 1)
|
|
else ()
|
|
set(CYW43_PIO_CLOCK_DIV_VALUE 5)
|
|
set(SYS_CLOCK_KHZ_VALUE 320000)
|
|
endif ()
|
|
|
|
|
|
|
|
# Pull in Raspberry Pi Pico SDK (must be before project)
|
|
include(pico_sdk_import.cmake)
|
|
|
|
project(ds5-bridge C CXX ASM)
|
|
|
|
# Initialise the Raspberry Pi Pico SDK
|
|
pico_sdk_init()
|
|
|
|
# Add executable. Default name is the project name, version 0.1
|
|
|
|
add_executable(ds5-bridge
|
|
src/usb_descriptors.cpp
|
|
src/main.cpp
|
|
src/usb.cpp
|
|
src/audio.cpp
|
|
src/bt.cpp
|
|
src/config.cpp
|
|
src/cmd.cpp
|
|
src/state_mgr.cpp
|
|
src/oled.cpp
|
|
src/slots.cpp
|
|
)
|
|
|
|
if (ENABLE_BATT_LED)
|
|
target_sources(ds5-bridge PRIVATE src/battery_led.cpp)
|
|
endif ()
|
|
|
|
# Cockos WDLResampler
|
|
add_library(wdl_resampler STATIC
|
|
lib/WDL/WDL/resample.cpp
|
|
)
|
|
target_include_directories(wdl_resampler PUBLIC
|
|
lib/WDL/WDL
|
|
)
|
|
|
|
# Opus
|
|
#set(OPUS_FIXED_POINT ON)
|
|
add_subdirectory(lib/opus)
|
|
|
|
target_compile_options(wdl_resampler PRIVATE -fsigned-char)
|
|
target_compile_options(ds5-bridge PRIVATE -fsigned-char)
|
|
target_compile_definitions(wdl_resampler PRIVATE
|
|
WDL_RESAMPLE_TYPE=float
|
|
)
|
|
target_compile_definitions(ds5-bridge PRIVATE
|
|
CYW43_LWIP=0
|
|
ENABLE_SERIAL=${ENABLE_SERIAL_VALUE}
|
|
PICO_FLASH_ASSUME_CORE1_SAFE=1
|
|
WDL_RESAMPLE_TYPE=float
|
|
CYW43_PIO_CLOCK_DIV_INT=${CYW43_PIO_CLOCK_DIV_VALUE}
|
|
PICO_STDIO_USB_USE_DEFAULT_DESCRIPTORS=0
|
|
PICO_STDIO_USB_ENABLE_RESET_VIA_BAUD_RATE=0
|
|
PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE=0
|
|
ENABLE_VERBOSE=${ENABLE_VERBOSE_VALUE}
|
|
ENABLE_BATT_LED=${ENABLE_BATT_LED_VALUE}
|
|
SYS_CLOCK_KHZ=${SYS_CLOCK_KHZ_VALUE}
|
|
DISABLE_SPEAKER_PROC=${DISABLE_SPEAKER_PROC_VALUE}
|
|
)
|
|
|
|
option(ENABLE_WAKE_HID "Wake the Windows host on PS-button press" OFF)
|
|
if(ENABLE_WAKE_HID)
|
|
target_compile_definitions(ds5-bridge PRIVATE
|
|
ENABLE_WAKE_HID
|
|
)
|
|
target_sources(ds5-bridge PRIVATE
|
|
src/wake.cpp
|
|
)
|
|
endif()
|
|
|
|
option(WAKE_DEBUG "Print wake-FSM transitions to UART (developer use)" OFF)
|
|
if(WAKE_DEBUG)
|
|
target_compile_definitions(ds5-bridge PRIVATE
|
|
WAKE_DEBUG
|
|
)
|
|
endif()
|
|
set(VERSION "dev" CACHE STRING "Program version string")
|
|
|
|
set_target_properties(ds5-bridge PROPERTIES OUTPUT_NAME "ds5-bridge-oled")
|
|
pico_set_program_name(ds5-bridge "ds5-bridge-oled")
|
|
pico_set_program_version(ds5-bridge "${VERSION}")
|
|
|
|
# Modify the below lines to enable/disable output over UART/USB
|
|
pico_enable_stdio_uart(ds5-bridge 1)
|
|
pico_enable_stdio_usb(ds5-bridge ${ENABLE_SERIAL_VALUE})
|
|
|
|
# Add the standard include files to the build
|
|
#target_include_directories(ds5-bridge PRIVATE
|
|
# ${CMAKE_CURRENT_LIST_DIR}
|
|
#)
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
)
|
|
|
|
# Add any user requested libraries
|
|
target_link_libraries(ds5-bridge
|
|
pico_stdlib
|
|
pico_multicore
|
|
hardware_watchdog
|
|
hardware_timer
|
|
hardware_flash
|
|
hardware_spi
|
|
hardware_adc
|
|
pico_btstack_classic
|
|
# pico_cyw43_arch_threadsafe_background
|
|
pico_cyw43_arch_poll
|
|
pico_btstack_cyw43
|
|
tinyusb_device
|
|
tinyusb_board
|
|
wdl_resampler
|
|
opus
|
|
)
|
|
|
|
pico_add_extra_outputs(ds5-bridge)
|
|
|