# 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 src/remap.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") # Expose VERSION to firmware C++ as FIRMWARE_VERSION so src/oled.cpp's # Status header always reflects the release tag (set by release.yml via # -DVERSION="$FIRMWARE_VERSION"). Local builds without -DVERSION show # "dev" — visible signal that you're not on a tagged release. target_compile_definitions(ds5-bridge PRIVATE FIRMWARE_VERSION="${VERSION}" ) 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)