Add Pico 2 W Bluepad32 AIO backend
This commit is contained in:
parent
287ef24fef
commit
f451e27f8c
17 changed files with 1263 additions and 24 deletions
|
|
@ -24,7 +24,20 @@ if (EXISTS ${picoVscode})
|
|||
endif()
|
||||
# ====================================================================================
|
||||
option(SWITCH_PICO_LOG "Enable UART debug logging" OFF)
|
||||
set(SWITCH_PICO_INPUT_BACKEND "UART" CACHE STRING "Controller input backend")
|
||||
set_property(CACHE SWITCH_PICO_INPUT_BACKEND PROPERTY STRINGS UART BLUEPAD32)
|
||||
if(NOT SWITCH_PICO_INPUT_BACKEND STREQUAL "UART"
|
||||
AND NOT SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32")
|
||||
message(FATAL_ERROR
|
||||
"Unknown SWITCH_PICO_INPUT_BACKEND='${SWITCH_PICO_INPUT_BACKEND}'. "
|
||||
"Expected UART or BLUEPAD32.")
|
||||
endif()
|
||||
set(PICO_BOARD pico CACHE STRING "Board type")
|
||||
if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32"
|
||||
AND NOT PICO_BOARD STREQUAL "pico2_w")
|
||||
message(FATAL_ERROR
|
||||
"SWITCH_PICO_INPUT_BACKEND=BLUEPAD32 requires PICO_BOARD=pico2_w")
|
||||
endif()
|
||||
|
||||
# Pull in Raspberry Pi Pico SDK (must be before project)
|
||||
include(pico_sdk_import.cmake)
|
||||
|
|
@ -34,12 +47,51 @@ project(switch-pico C CXX ASM)
|
|||
# Initialise the Raspberry Pi Pico SDK
|
||||
pico_sdk_init()
|
||||
|
||||
# Configure BLUEPAD32 input backend if selected
|
||||
if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32")
|
||||
# Ensure Python3 is available and execute patch preparation
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
set(BLUEPAD32_PREP_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/tools/prepare_bluepad32.py)
|
||||
execute_process(
|
||||
COMMAND ${Python3_EXECUTABLE} ${BLUEPAD32_PREP_SCRIPT}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
RESULT_VARIABLE BLUEPAD32_PREP_RESULT
|
||||
OUTPUT_VARIABLE BLUEPAD32_PREP_OUTPUT
|
||||
ERROR_VARIABLE BLUEPAD32_PREP_ERROR
|
||||
)
|
||||
|
||||
if(NOT BLUEPAD32_PREP_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"Failed to prepare Bluepad32: Patch application or validation failed. "
|
||||
"Details: ${BLUEPAD32_PREP_ERROR}")
|
||||
endif()
|
||||
|
||||
# Configure Bluepad32 include paths and subdirectory
|
||||
set(BLUEPAD32_ROOT ${CMAKE_CURRENT_LIST_DIR}/external/bluepad32)
|
||||
set(BTSTACK_ROOT ${PICO_SDK_PATH}/lib/btstack)
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_LIST_DIR}/bluepad32_config
|
||||
${BTSTACK_ROOT}/3rd-party/bluedroid/encoder/include
|
||||
${BTSTACK_ROOT}/3rd-party/bluedroid/decoder/include
|
||||
${BTSTACK_ROOT}/src
|
||||
)
|
||||
add_subdirectory(
|
||||
${BLUEPAD32_ROOT}/src/components/bluepad32
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libbluepad32
|
||||
)
|
||||
endif()
|
||||
|
||||
# Add executable. Default name is the project name, version 0.1
|
||||
|
||||
add_executable(switch-pico
|
||||
switch-pico.cpp
|
||||
switch_pro_driver.cpp
|
||||
)
|
||||
if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32")
|
||||
target_sources(switch-pico PRIVATE bluepad32_input_backend.cpp)
|
||||
target_compile_definitions(switch-pico PRIVATE SWITCH_PICO_BLUEPAD32=1)
|
||||
endif()
|
||||
|
||||
pico_set_program_name(switch-pico "switch-pico")
|
||||
pico_set_program_version(switch-pico "0.1")
|
||||
|
|
@ -57,6 +109,16 @@ target_link_libraries(switch-pico
|
|||
hardware_uart
|
||||
pico_rand
|
||||
)
|
||||
if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32")
|
||||
target_link_libraries(switch-pico
|
||||
bluepad32
|
||||
pico_cyw43_arch_none
|
||||
pico_btstack_ble
|
||||
pico_btstack_classic
|
||||
pico_btstack_cyw43
|
||||
pico_multicore
|
||||
)
|
||||
endif()
|
||||
|
||||
if (SWITCH_PICO_LOG)
|
||||
target_compile_definitions(switch-pico PRIVATE SWITCH_PICO_LOG=1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue