Merge pull request #68 from Summeli/master

Support for Rasberry Pi Pico W
This commit is contained in:
awalol
2026-05-13 18:18:19 +08:00
committed by GitHub
2 changed files with 50 additions and 3 deletions
+46 -2
View File
@@ -23,8 +23,13 @@ if (EXISTS ${picoVscode})
include(${picoVscode})
endif ()
# ====================================================================================
set(PICO_BOARD pico2_w CACHE STRING "Board type")
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)
@@ -46,6 +51,25 @@ if (ENABLE_BATT_LED)
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(PICO_W_BUILD_VALUE 1)
set(CYW43_PIO_CLOCK_DIV_VALUE 3)
set(SYS_CLOCK_KHZ_VALUE 200000)
set(DISABLE_SPEAKER_PROC_VALUE 1)
else ()
set(PICO_W_BUILD_VALUE 0)
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)
@@ -93,14 +117,34 @@ target_compile_definitions(ds5-bridge PRIVATE
ENABLE_SERIAL=${ENABLE_SERIAL_VALUE}
PICO_FLASH_ASSUME_CORE1_SAFE=1
WDL_RESAMPLE_TYPE=float
CYW43_PIO_CLOCK_DIV_INT=5
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}
PICO_W_BUILD=${PICO_W_BUILD_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()
pico_set_program_name(ds5-bridge "ds5-bridge")
pico_set_program_version(ds5-bridge "0.5.3")
+4 -1
View File
@@ -118,6 +118,7 @@ void audio_loop() {
pkt[11] = 0x12 | 0 << 6 | 1 << 7;
pkt[12] = SAMPLE_SIZE;
memcpy(pkt + 13, haptic_buf, SAMPLE_SIZE);
#if !DISABLE_SPEAKER_PROC
pkt[77] = (plug_headset ? 0x16 : 0x13) | 0 << 6 | 1 << 7; // Speaker: 0x13
// L Headset Mono: 0x14
// L Headset R Speaker: 0x15
@@ -126,7 +127,7 @@ void audio_loop() {
critical_section_enter_blocking(&opus_cs);
memcpy(pkt + 79, opus_buf, 200);
critical_section_exit(&opus_cs);
#endif
bt_write(pkt, sizeof(pkt), true);
haptic_buf_pos = 0;
}
@@ -137,9 +138,11 @@ void audio_init() {
resampler.SetRates(48000, 3000);
resampler.SetFeedMode(true);
resampler.Prealloc(2, 24, 6);
#if !DISABLE_SPEAKER_PROC
queue_init(&audio_fifo, sizeof(audio_raw_element), 2);
critical_section_init(&opus_cs);
multicore_launch_core1_with_stack(core1_entry, audio_core1_stack, sizeof(audio_core1_stack));
#endif
}
static OpusEncoder *encoder;