diff --git a/ADAPTER_PARITY_PLAN.md b/ADAPTER_PARITY_PLAN.md index 18e4f06..5bcc361 100644 --- a/ADAPTER_PARITY_PLAN.md +++ b/ADAPTER_PARITY_PLAN.md @@ -427,7 +427,7 @@ with the current identity. #### 4A — Output-driver boundary and production XInput -- replace `SWITCH_PICO_ADAPTER_FEASIBILITY` branches in `switch-pico.cpp` with +- replace `SWITCH_PICO_ADAPTER_FEASIBILITY` branches in `src/firmware/main.cpp` with one fixed static driver interface: descriptors, init/reset, input, task, readiness/capabilities, and host output - keep the Phase 3 profile/runtime transform exactly once before serialization diff --git a/CMakeLists.txt b/CMakeLists.txt index 61e4f38..3f5d563 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,36 +89,37 @@ if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32") ) endif() -# Add executable. Default name is the project name, version 0.1 +# Firmware sources live under one include root and are grouped by responsibility. +set(SWITCH_PICO_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/src/firmware) add_executable(switch-pico - switch-pico.cpp - switch_pro_driver.cpp - usb_output_driver.cpp - switch_haptics.cpp + ${SWITCH_PICO_SOURCE_DIR}/main.cpp + ${SWITCH_PICO_SOURCE_DIR}/usb/usb_output_driver.cpp + ${SWITCH_PICO_SOURCE_DIR}/usb/switch/switch_pro_driver.cpp + ${SWITCH_PICO_SOURCE_DIR}/usb/switch/switch_haptics.cpp ) if(SWITCH_PICO_INPUT_BACKEND STREQUAL "BLUEPAD32") target_sources(switch-pico PRIVATE - bluepad32_input_backend.cpp - adapter_host_probe.cpp - adapter_mode_controller.cpp - controller_identity.cpp - controller_profile.cpp - controller_profile_transform.cpp - controller_synthetic_input.cpp - controller_profile_runtime.cpp - profile_storage.cpp - profile_service.cpp - pico_profile_storage.cpp - bootsel_pairing_button.cpp - adapter_configuration.cpp - configuration_storage.cpp - configuration_transaction.cpp - configuration_service.cpp - pico_configuration_storage.cpp - usb_configuration_management.cpp - xinput_driver.cpp - generic_hid_driver.cpp + ${SWITCH_PICO_SOURCE_DIR}/adapter/adapter_host_probe.cpp + ${SWITCH_PICO_SOURCE_DIR}/adapter/adapter_mode_controller.cpp + ${SWITCH_PICO_SOURCE_DIR}/configuration/adapter_configuration.cpp + ${SWITCH_PICO_SOURCE_DIR}/configuration/configuration_service.cpp + ${SWITCH_PICO_SOURCE_DIR}/configuration/configuration_storage.cpp + ${SWITCH_PICO_SOURCE_DIR}/configuration/configuration_transaction.cpp + ${SWITCH_PICO_SOURCE_DIR}/core/controller_identity.cpp + ${SWITCH_PICO_SOURCE_DIR}/input/bluepad32_input_backend.cpp + ${SWITCH_PICO_SOURCE_DIR}/platform/pico/bootsel_pairing_button.cpp + ${SWITCH_PICO_SOURCE_DIR}/platform/pico/pico_configuration_storage.cpp + ${SWITCH_PICO_SOURCE_DIR}/platform/pico/pico_profile_storage.cpp + ${SWITCH_PICO_SOURCE_DIR}/profile/controller_profile.cpp + ${SWITCH_PICO_SOURCE_DIR}/profile/controller_profile_runtime.cpp + ${SWITCH_PICO_SOURCE_DIR}/profile/controller_profile_transform.cpp + ${SWITCH_PICO_SOURCE_DIR}/profile/controller_synthetic_input.cpp + ${SWITCH_PICO_SOURCE_DIR}/profile/profile_service.cpp + ${SWITCH_PICO_SOURCE_DIR}/profile/profile_storage.cpp + ${SWITCH_PICO_SOURCE_DIR}/usb/generic_hid/generic_hid_driver.cpp + ${SWITCH_PICO_SOURCE_DIR}/usb/usb_configuration_management.cpp + ${SWITCH_PICO_SOURCE_DIR}/usb/xinput/xinput_driver.cpp ) target_compile_definitions(switch-pico PRIVATE SWITCH_PICO_BLUEPAD32=1 @@ -166,9 +167,11 @@ if (SWITCH_PICO_LOG) target_compile_definitions(switch-pico PRIVATE SWITCH_PICO_LOG=1) endif() -# Add the standard include files to the build +# Internal includes are rooted at src/firmware. TinyUSB discovers tusb_config.h +# through the Pico platform directory. target_include_directories(switch-pico PRIVATE - ${CMAKE_CURRENT_LIST_DIR} + ${SWITCH_PICO_SOURCE_DIR} + ${SWITCH_PICO_SOURCE_DIR}/platform/pico ) pico_add_extra_outputs(switch-pico) diff --git a/README.md b/README.md index 6215526..11c03ce 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,31 @@ Raspberry Pi Pico firmware that emulates one or more Switch Pro controllers over USB. Input can come from the SDL3-to-UART computer bridge or, on Pico 2 W, directly from Bluetooth controllers through Bluepad32. ## What you get -- **Firmware** (`switch-pico.cpp` + `switch_pro_driver.*`): acts as a Switch Pro controller (one on standard Pico, four on Pico 2 W AIO), accepting either UART bridge reports or the optional Pico 2 W Bluepad32 backend. +- **Firmware** (`src/firmware/`): acts as a Switch Pro controller (one on standard Pico, four on Pico 2 W AIO), accepting either UART bridge reports or the optional Pico 2 W Bluepad32 backend. - **Python bridge** (`switch_pico_bridge.controller_uart_bridge` / CLI `controller-uart-bridge`): reads SDL3 controllers on the host, sends reports over UART, and applies rumble locally. Hot‑plug friendly and cross‑platform (macOS/Windows/Linux). -- **Color configuration** (`controller_color_config.h`): compile-time RGB colors for emulated controller grips and supported Bluetooth controller LEDs. +- **Color configuration** (`src/firmware/platform/pico/controller_color_config.h`): compile-time RGB colors for emulated controller grips and supported Bluetooth controller LEDs. - **Pico 2 W AIO firmware** (`firmware/switch-pico-aio.uf2`): hosts four concurrent Bluetooth controllers and sends their controls, calibrated motion, rumble, and slot identity through four separate Switch Pro USB interfaces without a computer. +## Source layout + +Firmware code has one include root, `src/firmware`, with responsibility-based +modules: + +| Path | Responsibility | +|---|---| +| `src/firmware/main.cpp` | Firmware entry point and backend orchestration | +| `src/firmware/adapter/` | USB mode selection, host probing, and managed reboot | +| `src/firmware/configuration/` | Persistent adapter configuration and transactions | +| `src/firmware/core/` | Shared controller identity, color, and input-state types | +| `src/firmware/input/` | Bluepad32 controller input backend and hotkeys | +| `src/firmware/platform/pico/` | Pico flash/BOOTSEL integrations and compile-time board configuration | +| `src/firmware/profile/` | Controller profiles, transforms, storage, and runtime | +| `src/firmware/usb/` | USB output boundary, management protocol, and per-protocol drivers | + +Internal includes are rooted at `src/firmware`, for example +`#include "profile/controller_profile.h"`. Host-side Python remains in +`src/switch_pico_bridge/`; native firmware tests remain in `tests/`. + ## Quick start 1. Flash the Pico with `firmware/switch-pico.uf2` (or build your own) using BOOTSEL drag-and-drop (see “Manual UF2 flashing” below). 2. Wire Pico UART1 to a USB↔UART adapter (GPIO4 TX, GPIO5 RX, GND) and plug that adapter into your host PC. @@ -162,7 +182,7 @@ Each AIO slot has one color shared by its emulated Switch Pro grips and its phys 3. Yellow `#F6C945` 4. Green `#2ECC71` -When a controller becomes ready, RGB-capable devices such as DualSense and DualShock 4 receive a darker, more saturated RGB value derived automatically from the slot's Switch grip color. Controllers without an RGB light use player indicator 1, 2, 3, or 4 when Bluepad32 exposes player-LED control. Devices without either capability are left unchanged. Edit only the four grip colors in `controller_color_config.h`; rebuilding automatically recalibrates their lightbar colors. +When a controller becomes ready, RGB-capable devices such as DualSense and DualShock 4 receive a darker, more saturated RGB value derived automatically from the slot's Switch grip color. Controllers without an RGB light use player indicator 1, 2, 3, or 4 when Bluepad32 exposes player-LED control. Devices without either capability are left unchanged. Edit only the four grip colors in `src/firmware/platform/pico/controller_color_config.h`; rebuilding automatically recalibrates their lightbar colors. ### Controller capabilities @@ -352,7 +372,7 @@ python3 build.py --grip-color FF00AA ``` Both options update all four slot definitions in -`controller_color_config.h` before building. With no color option, the +`src/firmware/platform/pico/controller_color_config.h` before building. With no color option, the per-slot blue/red/yellow/green palette is left unchanged. Run `python3 build.py --help` to see the available command-line options. @@ -547,7 +567,7 @@ Keep `SwitchImuMode` as a three-state value. Never acknowledge mode 2 and then e #### Mode-2 implementation -`switch_pro_driver.cpp` implements this in `integrate_motion_sample()` and `fill_quaternion_imu_report_data()`: +`src/firmware/usb/switch/switch_pro_driver.cpp` implements this in `integrate_motion_sample()` and `fill_quaternion_imu_report_data()`: 1. Reset quaternion state to `(0, 0, 0, 1)` when transitioning into mode 2. 2. Integrate each report's three gyro samples at 5 ms per sample. The Nintendo quaternion axes use sensor `Y, X, Z`, not `X, Y, Z`. diff --git a/build.py b/build.py index e1360f1..7fc2ca0 100644 --- a/build.py +++ b/build.py @@ -10,7 +10,8 @@ import sys from pathlib import Path SCRIPT_DIR = Path(__file__).resolve().parent -CONFIG_FILE = SCRIPT_DIR / "controller_color_config.h" +FIRMWARE_SOURCE_DIR = SCRIPT_DIR / "src" / "firmware" +CONFIG_FILE = FIRMWARE_SOURCE_DIR / "platform" / "pico" / "controller_color_config.h" BUILD_DIR = SCRIPT_DIR / "build" AIO_BUILD_DIR = SCRIPT_DIR / "build-aio" FEASIBILITY_BUILD_DIR = SCRIPT_DIR / "build-feasibility" @@ -265,7 +266,7 @@ def parse_args(): parser = argparse.ArgumentParser( description="Build and flash the project, optionally setting grip colors.", formatter_class=argparse.RawDescriptionHelpFormatter, - epilog="Default behavior leaves controller_color_config.h unchanged.", + epilog=f"Default behavior leaves {CONFIG_FILE.relative_to(SCRIPT_DIR)} unchanged.", ) mode_group = parser.add_mutually_exclusive_group() mode_group.add_argument( diff --git a/adapter_host_probe.cpp b/src/firmware/adapter/adapter_host_probe.cpp similarity index 96% rename from adapter_host_probe.cpp rename to src/firmware/adapter/adapter_host_probe.cpp index 9f5c09d..e4ecf0a 100644 --- a/adapter_host_probe.cpp +++ b/src/firmware/adapter/adapter_host_probe.cpp @@ -1,5 +1,4 @@ -#include "adapter_host_probe.h" - +#include "adapter/adapter_host_probe.h" #include #ifdef SWITCH_PICO_LOG #include @@ -8,12 +7,12 @@ #define PROBE_LOG(...) ((void)0) #endif -#include "adapter_host_probe_state.h" -#include "controller_profile_runtime.h" +#include "adapter/adapter_host_probe_state.h" +#include "profile/controller_profile_runtime.h" #include "hardware/structs/watchdog.h" #include "hardware/watchdog.h" #include "pico/time.h" -#include "xinput_descriptors.h" +#include "usb/xinput/xinput_descriptors.h" namespace { diff --git a/adapter_host_probe.h b/src/firmware/adapter/adapter_host_probe.h similarity index 92% rename from adapter_host_probe.h rename to src/firmware/adapter/adapter_host_probe.h index 8ea8ed2..1a08d15 100644 --- a/adapter_host_probe.h +++ b/src/firmware/adapter/adapter_host_probe.h @@ -2,7 +2,7 @@ #include -#include "adapter_usb_mode.h" +#include "adapter/adapter_usb_mode.h" #include "tusb.h" // Consume watchdog scratch and freeze the active mode. Call exactly once diff --git a/adapter_host_probe_state.h b/src/firmware/adapter/adapter_host_probe_state.h similarity index 100% rename from adapter_host_probe_state.h rename to src/firmware/adapter/adapter_host_probe_state.h diff --git a/adapter_mode_controller.cpp b/src/firmware/adapter/adapter_mode_controller.cpp similarity index 97% rename from adapter_mode_controller.cpp rename to src/firmware/adapter/adapter_mode_controller.cpp index 2c5c6c6..df93387 100644 --- a/adapter_mode_controller.cpp +++ b/src/firmware/adapter/adapter_mode_controller.cpp @@ -1,16 +1,15 @@ -#include "adapter_mode_controller.h" -#include "adapter_reboot.h" - -#include "adapter_configuration.h" -#include "adapter_host_probe.h" -#include "bluepad32_input_backend.h" -#include "configuration_service.h" -#include "controller_profile.h" -#include "controller_profile_runtime.h" +#include "adapter/adapter_mode_controller.h" +#include "adapter/adapter_reboot.h" +#include "configuration/adapter_configuration.h" +#include "adapter/adapter_host_probe.h" +#include "input/bluepad32_input_backend.h" +#include "configuration/configuration_service.h" +#include "profile/controller_profile.h" +#include "profile/controller_profile_runtime.h" #include "hardware/watchdog.h" #include "pico/bootrom.h" #include "tusb.h" -#include "usb_output_driver.h" +#include "usb/usb_output_driver.h" namespace { diff --git a/adapter_mode_controller.h b/src/firmware/adapter/adapter_mode_controller.h similarity index 95% rename from adapter_mode_controller.h rename to src/firmware/adapter/adapter_mode_controller.h index 1908572..3677156 100644 --- a/adapter_mode_controller.h +++ b/src/firmware/adapter/adapter_mode_controller.h @@ -2,8 +2,8 @@ #include -#include "adapter_usb_mode.h" -#include "controller_state.h" +#include "adapter/adapter_usb_mode.h" +#include "core/controller_state.h" constexpr uint8_t ADAPTER_MODE_CONTROLLER_SLOT_COUNT = 4; constexpr uint32_t ADAPTER_MODE_CHORD_HOLD_MS = 3000; diff --git a/adapter_reboot.h b/src/firmware/adapter/adapter_reboot.h similarity index 100% rename from adapter_reboot.h rename to src/firmware/adapter/adapter_reboot.h diff --git a/adapter_usb_mode.h b/src/firmware/adapter/adapter_usb_mode.h similarity index 100% rename from adapter_usb_mode.h rename to src/firmware/adapter/adapter_usb_mode.h diff --git a/adapter_configuration.cpp b/src/firmware/configuration/adapter_configuration.cpp similarity index 98% rename from adapter_configuration.cpp rename to src/firmware/configuration/adapter_configuration.cpp index f0aa7c2..c8d3623 100644 --- a/adapter_configuration.cpp +++ b/src/firmware/configuration/adapter_configuration.cpp @@ -1,4 +1,4 @@ -#include "adapter_configuration.h" +#include "configuration/adapter_configuration.h" namespace { diff --git a/adapter_configuration.h b/src/firmware/configuration/adapter_configuration.h similarity index 97% rename from adapter_configuration.h rename to src/firmware/configuration/adapter_configuration.h index 9026731..dd49212 100644 --- a/adapter_configuration.h +++ b/src/firmware/configuration/adapter_configuration.h @@ -3,7 +3,7 @@ #include #include -#include "adapter_usb_mode.h" +#include "adapter/adapter_usb_mode.h" constexpr uint16_t ADAPTER_CONFIGURATION_LEGACY_SCHEMA_VERSION = 1; constexpr uint16_t ADAPTER_CONFIGURATION_SCHEMA_VERSION = 2; diff --git a/configuration_service.cpp b/src/firmware/configuration/configuration_service.cpp similarity index 99% rename from configuration_service.cpp rename to src/firmware/configuration/configuration_service.cpp index b450ad7..6a0b239 100644 --- a/configuration_service.cpp +++ b/src/firmware/configuration/configuration_service.cpp @@ -1,9 +1,8 @@ -#include "configuration_service.h" - +#include "configuration/configuration_service.h" #include #include "pico/critical_section.h" -#include "pico_configuration_storage.h" +#include "platform/pico/pico_configuration_storage.h" namespace { diff --git a/configuration_service.h b/src/firmware/configuration/configuration_service.h similarity index 96% rename from configuration_service.h rename to src/firmware/configuration/configuration_service.h index ab453be..6b2ca67 100644 --- a/configuration_service.h +++ b/src/firmware/configuration/configuration_service.h @@ -3,8 +3,8 @@ #include #include -#include "adapter_configuration.h" -#include "configuration_transaction.h" +#include "configuration/adapter_configuration.h" +#include "configuration/configuration_transaction.h" constexpr uint32_t CONFIGURATION_SERVICE_INTERNAL_TRANSACTION_ID_MASK = 0x80000000u; diff --git a/configuration_storage.cpp b/src/firmware/configuration/configuration_storage.cpp similarity index 99% rename from configuration_storage.cpp rename to src/firmware/configuration/configuration_storage.cpp index 80b3269..85ab605 100644 --- a/configuration_storage.cpp +++ b/src/firmware/configuration/configuration_storage.cpp @@ -1,5 +1,4 @@ -#include "configuration_storage.h" - +#include "configuration/configuration_storage.h" #include namespace { diff --git a/configuration_storage.h b/src/firmware/configuration/configuration_storage.h similarity index 100% rename from configuration_storage.h rename to src/firmware/configuration/configuration_storage.h diff --git a/configuration_transaction.cpp b/src/firmware/configuration/configuration_transaction.cpp similarity index 97% rename from configuration_transaction.cpp rename to src/firmware/configuration/configuration_transaction.cpp index 5e2c1bd..c477202 100644 --- a/configuration_transaction.cpp +++ b/src/firmware/configuration/configuration_transaction.cpp @@ -1,9 +1,7 @@ -#include "configuration_transaction.h" - +#include "configuration/configuration_transaction.h" #include -#include "adapter_configuration.h" - +#include "configuration/adapter_configuration.h" ConfigurationTransactionStatus ConfigurationTransaction::begin( uint32_t transaction_id, uint16_t schema_version, size_t payload_size, uint32_t payload_crc) { diff --git a/configuration_transaction.h b/src/firmware/configuration/configuration_transaction.h similarity index 97% rename from configuration_transaction.h rename to src/firmware/configuration/configuration_transaction.h index 0045c69..1439e41 100644 --- a/configuration_transaction.h +++ b/src/firmware/configuration/configuration_transaction.h @@ -3,7 +3,7 @@ #include #include -#include "configuration_storage.h" +#include "configuration/configuration_storage.h" enum class ConfigurationTransactionStatus : uint8_t { kIdle = 0, diff --git a/controller_color.h b/src/firmware/core/controller_color.h similarity index 100% rename from controller_color.h rename to src/firmware/core/controller_color.h diff --git a/controller_identity.cpp b/src/firmware/core/controller_identity.cpp similarity index 98% rename from controller_identity.cpp rename to src/firmware/core/controller_identity.cpp index bfe32b3..eb8de61 100644 --- a/controller_identity.cpp +++ b/src/firmware/core/controller_identity.cpp @@ -1,5 +1,4 @@ -#include "controller_identity.h" - +#include "core/controller_identity.h" #include namespace { diff --git a/controller_identity.h b/src/firmware/core/controller_identity.h similarity index 100% rename from controller_identity.h rename to src/firmware/core/controller_identity.h diff --git a/controller_state.h b/src/firmware/core/controller_state.h similarity index 100% rename from controller_state.h rename to src/firmware/core/controller_state.h diff --git a/bluepad32_input_backend.cpp b/src/firmware/input/bluepad32_input_backend.cpp similarity index 99% rename from bluepad32_input_backend.cpp rename to src/firmware/input/bluepad32_input_backend.cpp index bfd521e..44a42d2 100644 --- a/bluepad32_input_backend.cpp +++ b/src/firmware/input/bluepad32_input_backend.cpp @@ -1,8 +1,7 @@ -#include "bluepad32_input_backend.h" -#include "controller_hotkey_config.h" -#include "configuration_service.h" -#include "profile_service.h" - +#include "input/bluepad32_input_backend.h" +#include "input/controller_hotkey_config.h" +#include "configuration/configuration_service.h" +#include "profile/profile_service.h" #include #include #include @@ -15,7 +14,7 @@ #include #include #ifdef SWITCH_PICO_USB_OUTPUT_MODES -#include "adapter_usb_mode.h" +#include "adapter/adapter_usb_mode.h" #endif namespace { diff --git a/bluepad32_input_backend.h b/src/firmware/input/bluepad32_input_backend.h similarity index 95% rename from bluepad32_input_backend.h rename to src/firmware/input/bluepad32_input_backend.h index 220ec9d..64f4b83 100644 --- a/bluepad32_input_backend.h +++ b/src/firmware/input/bluepad32_input_backend.h @@ -2,11 +2,11 @@ #include -#include "controller_color.h" -#include "controller_identity.h" -#include "controller_profile.h" -#include "controller_state.h" -#include "switch_haptics.h" +#include "core/controller_color.h" +#include "core/controller_identity.h" +#include "profile/controller_profile.h" +#include "core/controller_state.h" +#include "usb/switch/switch_haptics.h" constexpr uint8_t BLUEPAD32_INPUT_BACKEND_SLOT_COUNT = 4; constexpr uint8_t BLUEPAD32_PAIRING_RECORD_CAPACITY = 16; diff --git a/controller_hotkey_config.h b/src/firmware/input/controller_hotkey_config.h similarity index 100% rename from controller_hotkey_config.h rename to src/firmware/input/controller_hotkey_config.h diff --git a/switch-pico.cpp b/src/firmware/main.cpp similarity index 97% rename from switch-pico.cpp rename to src/firmware/main.cpp index 3dd0fc9..bd3a2af 100644 --- a/switch-pico.cpp +++ b/src/firmware/main.cpp @@ -2,15 +2,15 @@ #include "bsp/board.h" #include "pico/stdlib.h" #include "tusb.h" -#include "switch_pro_driver.h" -#include "usb_output_driver.h" +#include "usb/switch/switch_pro_driver.h" +#include "usb/usb_output_driver.h" #ifndef SWITCH_PICO_BLUEPAD32 #include "hardware/uart.h" #else -#include "adapter_mode_controller.h" -#include "bluepad32_input_backend.h" -#include "bootsel_pairing_button.h" -#include "controller_profile_runtime.h" +#include "adapter/adapter_mode_controller.h" +#include "input/bluepad32_input_backend.h" +#include "platform/pico/bootsel_pairing_button.h" +#include "profile/controller_profile_runtime.h" #endif #ifdef SWITCH_PICO_LOG diff --git a/bootsel_pairing_button.cpp b/src/firmware/platform/pico/bootsel_pairing_button.cpp similarity index 98% rename from bootsel_pairing_button.cpp rename to src/firmware/platform/pico/bootsel_pairing_button.cpp index fc50a46..a358c12 100644 --- a/bootsel_pairing_button.cpp +++ b/src/firmware/platform/pico/bootsel_pairing_button.cpp @@ -1,5 +1,4 @@ -#include "bootsel_pairing_button.h" - +#include "platform/pico/bootsel_pairing_button.h" #include "hardware/gpio.h" #include "hardware/structs/ioqspi.h" #include "hardware/structs/sio.h" diff --git a/bootsel_pairing_button.h b/src/firmware/platform/pico/bootsel_pairing_button.h similarity index 100% rename from bootsel_pairing_button.h rename to src/firmware/platform/pico/bootsel_pairing_button.h diff --git a/controller_color_config.h b/src/firmware/platform/pico/controller_color_config.h similarity index 100% rename from controller_color_config.h rename to src/firmware/platform/pico/controller_color_config.h diff --git a/pico_configuration_storage.cpp b/src/firmware/platform/pico/pico_configuration_storage.cpp similarity index 98% rename from pico_configuration_storage.cpp rename to src/firmware/platform/pico/pico_configuration_storage.cpp index a63a5b6..1a7de87 100644 --- a/pico_configuration_storage.cpp +++ b/src/firmware/platform/pico/pico_configuration_storage.cpp @@ -1,5 +1,4 @@ -#include "pico_configuration_storage.h" - +#include "platform/pico/pico_configuration_storage.h" #include #include "hardware/flash.h" diff --git a/pico_configuration_storage.h b/src/firmware/platform/pico/pico_configuration_storage.h similarity index 59% rename from pico_configuration_storage.h rename to src/firmware/platform/pico/pico_configuration_storage.h index abe9f82..b1cfcda 100644 --- a/pico_configuration_storage.h +++ b/src/firmware/platform/pico/pico_configuration_storage.h @@ -1,5 +1,5 @@ #pragma once -#include "configuration_storage.h" +#include "configuration/configuration_storage.h" ConfigurationStorageIo pico_configuration_storage_io(); diff --git a/pico_profile_storage.cpp b/src/firmware/platform/pico/pico_profile_storage.cpp similarity index 98% rename from pico_profile_storage.cpp rename to src/firmware/platform/pico/pico_profile_storage.cpp index 5b44551..196052e 100644 --- a/pico_profile_storage.cpp +++ b/src/firmware/platform/pico/pico_profile_storage.cpp @@ -1,8 +1,7 @@ -#include "pico_profile_storage.h" - +#include "platform/pico/pico_profile_storage.h" #include -#include "configuration_storage.h" +#include "configuration/configuration_storage.h" #include "hardware/flash.h" #include "pico/btstack_flash_bank.h" #include "pico/flash.h" diff --git a/pico_profile_storage.h b/src/firmware/platform/pico/pico_profile_storage.h similarity index 61% rename from pico_profile_storage.h rename to src/firmware/platform/pico/pico_profile_storage.h index 3fd8b42..94d3be9 100644 --- a/pico_profile_storage.h +++ b/src/firmware/platform/pico/pico_profile_storage.h @@ -1,5 +1,5 @@ #pragma once -#include "profile_storage.h" +#include "profile/profile_storage.h" ProfileStorageIo pico_profile_storage_io(); diff --git a/tusb_config.h b/src/firmware/platform/pico/tusb_config.h similarity index 100% rename from tusb_config.h rename to src/firmware/platform/pico/tusb_config.h diff --git a/controller_profile.cpp b/src/firmware/profile/controller_profile.cpp similarity index 99% rename from controller_profile.cpp rename to src/firmware/profile/controller_profile.cpp index 7209944..304ba84 100644 --- a/controller_profile.cpp +++ b/src/firmware/profile/controller_profile.cpp @@ -1,5 +1,4 @@ -#include "controller_profile.h" - +#include "profile/controller_profile.h" #include namespace { diff --git a/controller_profile.h b/src/firmware/profile/controller_profile.h similarity index 99% rename from controller_profile.h rename to src/firmware/profile/controller_profile.h index d7e7618..84ffea4 100644 --- a/controller_profile.h +++ b/src/firmware/profile/controller_profile.h @@ -3,7 +3,7 @@ #include #include -#include "controller_identity.h" +#include "core/controller_identity.h" constexpr uint16_t CONTROLLER_PROFILE_LEGACY_SCHEMA_VERSION = 1; constexpr uint16_t CONTROLLER_PROFILE_SCHEMA_VERSION = 2; diff --git a/controller_profile_runtime.cpp b/src/firmware/profile/controller_profile_runtime.cpp similarity index 98% rename from controller_profile_runtime.cpp rename to src/firmware/profile/controller_profile_runtime.cpp index ddf6478..c02f97f 100644 --- a/controller_profile_runtime.cpp +++ b/src/firmware/profile/controller_profile_runtime.cpp @@ -1,9 +1,8 @@ -#include "controller_profile_runtime.h" - -#include "configuration_service.h" -#include "controller_identity.h" -#include "controller_synthetic_input.h" -#include "profile_service.h" +#include "profile/controller_profile_runtime.h" +#include "configuration/configuration_service.h" +#include "core/controller_identity.h" +#include "profile/controller_synthetic_input.h" +#include "profile/profile_service.h" namespace { diff --git a/controller_profile_runtime.h b/src/firmware/profile/controller_profile_runtime.h similarity index 95% rename from controller_profile_runtime.h rename to src/firmware/profile/controller_profile_runtime.h index be8d1f1..96783f9 100644 --- a/controller_profile_runtime.h +++ b/src/firmware/profile/controller_profile_runtime.h @@ -2,10 +2,10 @@ #include -#include "adapter_usb_mode.h" +#include "adapter/adapter_usb_mode.h" -#include "bluepad32_input_backend.h" -#include "controller_profile_transform.h" +#include "input/bluepad32_input_backend.h" +#include "profile/controller_profile_transform.h" constexpr uint8_t CONTROLLER_PROFILE_RUNTIME_SLOT_COUNT = 4; constexpr uint16_t CONTROLLER_PROFILE_DEFAULT_SWITCHING_CHORD = diff --git a/controller_profile_transform.cpp b/src/firmware/profile/controller_profile_transform.cpp similarity index 99% rename from controller_profile_transform.cpp rename to src/firmware/profile/controller_profile_transform.cpp index 9039035..883aa07 100644 --- a/controller_profile_transform.cpp +++ b/src/firmware/profile/controller_profile_transform.cpp @@ -1,5 +1,4 @@ -#include "controller_profile_transform.h" - +#include "profile/controller_profile_transform.h" #include namespace { diff --git a/controller_profile_transform.h b/src/firmware/profile/controller_profile_transform.h similarity index 91% rename from controller_profile_transform.h rename to src/firmware/profile/controller_profile_transform.h index 54c4904..7b4a0d8 100644 --- a/controller_profile_transform.h +++ b/src/firmware/profile/controller_profile_transform.h @@ -2,9 +2,9 @@ #include -#include "controller_profile.h" -#include "controller_state.h" -#include "switch_haptics.h" +#include "profile/controller_profile.h" +#include "core/controller_state.h" +#include "usb/switch/switch_haptics.h" struct ControllerProfileTransformResult { ControllerState state{}; diff --git a/controller_synthetic_input.cpp b/src/firmware/profile/controller_synthetic_input.cpp similarity index 99% rename from controller_synthetic_input.cpp rename to src/firmware/profile/controller_synthetic_input.cpp index d777aff..1a57ba6 100644 --- a/controller_synthetic_input.cpp +++ b/src/firmware/profile/controller_synthetic_input.cpp @@ -1,4 +1,4 @@ -#include "controller_synthetic_input.h" +#include "profile/controller_synthetic_input.h" namespace { diff --git a/controller_synthetic_input.h b/src/firmware/profile/controller_synthetic_input.h similarity index 95% rename from controller_synthetic_input.h rename to src/firmware/profile/controller_synthetic_input.h index 507065c..36c0bf9 100644 --- a/controller_synthetic_input.h +++ b/src/firmware/profile/controller_synthetic_input.h @@ -2,7 +2,7 @@ #include -#include "controller_profile_transform.h" +#include "profile/controller_profile_transform.h" struct ControllerSyntheticBindingState { bool active = false; diff --git a/profile_service.cpp b/src/firmware/profile/profile_service.cpp similarity index 99% rename from profile_service.cpp rename to src/firmware/profile/profile_service.cpp index b880900..4a29b2d 100644 --- a/profile_service.cpp +++ b/src/firmware/profile/profile_service.cpp @@ -1,10 +1,9 @@ -#include "profile_service.h" - +#include "profile/profile_service.h" #include #include "pico/critical_section.h" -#include "pico_profile_storage.h" -#include "profile_storage.h" +#include "platform/pico/pico_profile_storage.h" +#include "profile/profile_storage.h" namespace { diff --git a/profile_service.h b/src/firmware/profile/profile_service.h similarity index 97% rename from profile_service.h rename to src/firmware/profile/profile_service.h index c922795..704308d 100644 --- a/profile_service.h +++ b/src/firmware/profile/profile_service.h @@ -3,8 +3,8 @@ #include #include -#include "configuration_transaction.h" -#include "controller_profile.h" +#include "configuration/configuration_transaction.h" +#include "profile/controller_profile.h" constexpr uint8_t PROFILE_SERVICE_LIST_CAPACITY = CONTROLLER_PROFILE_STABLE_IDENTITY_CAPACITY + 1; diff --git a/profile_storage.cpp b/src/firmware/profile/profile_storage.cpp similarity index 99% rename from profile_storage.cpp rename to src/firmware/profile/profile_storage.cpp index 75a7250..068fd77 100644 --- a/profile_storage.cpp +++ b/src/firmware/profile/profile_storage.cpp @@ -1,5 +1,4 @@ -#include "profile_storage.h" - +#include "profile/profile_storage.h" #include namespace { diff --git a/profile_storage.h b/src/firmware/profile/profile_storage.h similarity index 98% rename from profile_storage.h rename to src/firmware/profile/profile_storage.h index 7e2d0bc..b793e6b 100644 --- a/profile_storage.h +++ b/src/firmware/profile/profile_storage.h @@ -3,7 +3,7 @@ #include #include -#include "controller_profile.h" +#include "profile/controller_profile.h" constexpr uint8_t PROFILE_STORAGE_BANK_COUNT = 2; constexpr size_t PROFILE_STORAGE_SECTOR_SIZE = 4096; diff --git a/generic_hid_descriptors.h b/src/firmware/usb/generic_hid/generic_hid_descriptors.h similarity index 99% rename from generic_hid_descriptors.h rename to src/firmware/usb/generic_hid/generic_hid_descriptors.h index ef74467..00791fe 100644 --- a/generic_hid_descriptors.h +++ b/src/firmware/usb/generic_hid/generic_hid_descriptors.h @@ -3,7 +3,7 @@ #include #include -#include "controller_state.h" +#include "core/controller_state.h" #ifndef SWITCH_PICO_HID_INSTANCE_COUNT #define SWITCH_PICO_HID_INSTANCE_COUNT 1 diff --git a/generic_hid_driver.cpp b/src/firmware/usb/generic_hid/generic_hid_driver.cpp similarity index 96% rename from generic_hid_driver.cpp rename to src/firmware/usb/generic_hid/generic_hid_driver.cpp index 6b733a6..eb697b5 100644 --- a/generic_hid_driver.cpp +++ b/src/firmware/usb/generic_hid/generic_hid_driver.cpp @@ -1,8 +1,7 @@ -#include "generic_hid_driver.h" - +#include "usb/generic_hid/generic_hid_driver.h" #include -#include "generic_hid_descriptors.h" +#include "usb/generic_hid/generic_hid_descriptors.h" namespace { diff --git a/generic_hid_driver.h b/src/firmware/usb/generic_hid/generic_hid_driver.h similarity index 95% rename from generic_hid_driver.h rename to src/firmware/usb/generic_hid/generic_hid_driver.h index 1c9d6e5..dcc9ff8 100644 --- a/generic_hid_driver.h +++ b/src/firmware/usb/generic_hid/generic_hid_driver.h @@ -2,8 +2,9 @@ #include -#include "controller_state.h" +#include "core/controller_state.h" #include "tusb.h" + namespace GenericHid { enum class ReportDescriptorVariant : uint8_t { diff --git a/switch_haptics.cpp b/src/firmware/usb/switch/switch_haptics.cpp similarity index 99% rename from switch_haptics.cpp rename to src/firmware/usb/switch/switch_haptics.cpp index 8bade37..e9ac083 100644 --- a/switch_haptics.cpp +++ b/src/firmware/usb/switch/switch_haptics.cpp @@ -1,5 +1,4 @@ -#include "switch_haptics.h" - +#include "usb/switch/switch_haptics.h" #include #include diff --git a/switch_haptics.h b/src/firmware/usb/switch/switch_haptics.h similarity index 100% rename from switch_haptics.h rename to src/firmware/usb/switch/switch_haptics.h diff --git a/switch_pro_descriptors.h b/src/firmware/usb/switch/switch_pro_descriptors.h similarity index 100% rename from switch_pro_descriptors.h rename to src/firmware/usb/switch/switch_pro_descriptors.h diff --git a/switch_pro_driver.cpp b/src/firmware/usb/switch/switch_pro_driver.cpp similarity index 99% rename from switch_pro_driver.cpp rename to src/firmware/usb/switch/switch_pro_driver.cpp index 590e92d..c9fb250 100644 --- a/switch_pro_driver.cpp +++ b/src/firmware/usb/switch/switch_pro_driver.cpp @@ -1,4 +1,4 @@ -#include "switch_pro_driver.h" +#include "usb/switch/switch_pro_driver.h" #include #include @@ -81,8 +81,8 @@ static SwitchProContext* context_for(uint8_t instance) { } // Optional compile-time color palette shared with Bluetooth controller LEDs. -#if __has_include("controller_color_config.h") -#include "controller_color_config.h" +#if __has_include("platform/pico/controller_color_config.h") +#include "platform/pico/controller_color_config.h" #endif #ifndef SWITCH_COLOR_BODY_R #define SWITCH_COLOR_BODY_R 0x1B diff --git a/switch_pro_driver.h b/src/firmware/usb/switch/switch_pro_driver.h similarity index 94% rename from switch_pro_driver.h rename to src/firmware/usb/switch/switch_pro_driver.h index 3c3561a..a6525d5 100644 --- a/switch_pro_driver.h +++ b/src/firmware/usb/switch/switch_pro_driver.h @@ -8,11 +8,11 @@ #include #include -#include "controller_color.h" -#include "controller_state.h" -#include "switch_haptics.h" +#include "core/controller_color.h" +#include "core/controller_state.h" +#include "usb/switch/switch_haptics.h" #include "tusb.h" -#include "switch_pro_descriptors.h" +#include "usb/switch/switch_pro_descriptors.h" // Preserve the pre-neutral-state 35%-of-1023 digital trigger boundary. constexpr uint32_t SWITCH_PRO_LEGACY_TRIGGER_RANGE_MAXIMUM = 1023; constexpr uint32_t SWITCH_PRO_LEGACY_TRIGGER_PRESS_THRESHOLD = 358; diff --git a/usb_configuration_management.cpp b/src/firmware/usb/usb_configuration_management.cpp similarity index 99% rename from usb_configuration_management.cpp rename to src/firmware/usb/usb_configuration_management.cpp index 40c5d72..a4e7628 100644 --- a/usb_configuration_management.cpp +++ b/src/firmware/usb/usb_configuration_management.cpp @@ -1,13 +1,12 @@ -#include "usb_configuration_management.h" - +#include "usb/usb_configuration_management.h" #include -#include "adapter_configuration.h" -#include "adapter_host_probe.h" -#include "adapter_reboot.h" -#include "adapter_usb_mode.h" +#include "configuration/adapter_configuration.h" +#include "adapter/adapter_host_probe.h" +#include "adapter/adapter_reboot.h" +#include "adapter/adapter_usb_mode.h" #include "tusb.h" -#include "usb_output_driver.h" +#include "usb/usb_output_driver.h" namespace UsbConfigurationManagement { namespace { diff --git a/usb_configuration_management.h b/src/firmware/usb/usb_configuration_management.h similarity index 95% rename from usb_configuration_management.h rename to src/firmware/usb/usb_configuration_management.h index 2671ed4..0477795 100644 --- a/usb_configuration_management.h +++ b/src/firmware/usb/usb_configuration_management.h @@ -5,9 +5,9 @@ #include "tusb.h" -#include "bluepad32_input_backend.h" -#include "configuration_service.h" -#include "profile_service.h" +#include "input/bluepad32_input_backend.h" +#include "configuration/configuration_service.h" +#include "profile/profile_service.h" namespace UsbConfigurationManagement { diff --git a/usb_output_driver.cpp b/src/firmware/usb/usb_output_driver.cpp similarity index 96% rename from usb_output_driver.cpp rename to src/firmware/usb/usb_output_driver.cpp index ec51f2f..ab77939 100644 --- a/usb_output_driver.cpp +++ b/src/firmware/usb/usb_output_driver.cpp @@ -1,23 +1,23 @@ -#include "usb_output_driver.h" +#include "usb/usb_output_driver.h" #include #include #include "device/usbd_pvt.h" -#include "switch_pro_driver.h" -#include "switch_pro_descriptors.h" +#include "usb/switch/switch_pro_driver.h" +#include "usb/switch/switch_pro_descriptors.h" #include "tusb.h" #ifdef SWITCH_PICO_BLUEPAD32 -#include "usb_configuration_management.h" +#include "usb/usb_configuration_management.h" #endif #ifdef SWITCH_PICO_USB_OUTPUT_MODES -#include "adapter_host_probe.h" -#include "generic_hid_descriptors.h" -#include "generic_hid_driver.h" -#include "xinput_descriptors.h" -#include "xinput_driver.h" +#include "adapter/adapter_host_probe.h" +#include "usb/generic_hid/generic_hid_descriptors.h" +#include "usb/generic_hid/generic_hid_driver.h" +#include "usb/xinput/xinput_descriptors.h" +#include "usb/xinput/xinput_driver.h" #endif #ifdef SWITCH_PICO_LOG diff --git a/usb_output_driver.h b/src/firmware/usb/usb_output_driver.h similarity index 92% rename from usb_output_driver.h rename to src/firmware/usb/usb_output_driver.h index ec2bad4..ae0bd4b 100644 --- a/usb_output_driver.h +++ b/src/firmware/usb/usb_output_driver.h @@ -2,9 +2,9 @@ #include -#include "adapter_usb_mode.h" -#include "controller_state.h" -#include "switch_haptics.h" +#include "adapter/adapter_usb_mode.h" +#include "core/controller_state.h" +#include "usb/switch/switch_haptics.h" // Mode capability bits published in USB management info. Input is present in // every current mode; rumble/motion describe host-visible USB capabilities. diff --git a/xinput_descriptors.h b/src/firmware/usb/xinput/xinput_descriptors.h similarity index 100% rename from xinput_descriptors.h rename to src/firmware/usb/xinput/xinput_descriptors.h diff --git a/xinput_driver.cpp b/src/firmware/usb/xinput/xinput_driver.cpp similarity index 98% rename from xinput_driver.cpp rename to src/firmware/usb/xinput/xinput_driver.cpp index 8844ad4..6a3a5bd 100644 --- a/xinput_driver.cpp +++ b/src/firmware/usb/xinput/xinput_driver.cpp @@ -1,12 +1,11 @@ -#include "xinput_driver.h" - +#include "usb/xinput/xinput_driver.h" #include #include #include "device/usbd_pvt.h" #include "tusb.h" -#include "xinput_descriptors.h" -#include "xinput_protocol.h" +#include "usb/xinput/xinput_descriptors.h" +#include "usb/xinput/xinput_protocol.h" namespace { diff --git a/xinput_driver.h b/src/firmware/usb/xinput/xinput_driver.h similarity index 84% rename from xinput_driver.h rename to src/firmware/usb/xinput/xinput_driver.h index a6158fb..e4fe683 100644 --- a/xinput_driver.h +++ b/src/firmware/usb/xinput/xinput_driver.h @@ -2,9 +2,9 @@ #include -#include "controller_state.h" +#include "core/controller_state.h" #include "device/usbd_pvt.h" -#include "switch_haptics.h" +#include "usb/switch/switch_haptics.h" void xinput_init(uint8_t instance); void xinput_set_rumble_callback(uint8_t instance, diff --git a/xinput_protocol.h b/src/firmware/usb/xinput/xinput_protocol.h similarity index 97% rename from xinput_protocol.h rename to src/firmware/usb/xinput/xinput_protocol.h index ca49c54..48cfa9c 100644 --- a/xinput_protocol.h +++ b/src/firmware/usb/xinput/xinput_protocol.h @@ -2,8 +2,8 @@ #include -#include "controller_state.h" -#include "switch_haptics.h" +#include "core/controller_state.h" +#include "usb/switch/switch_haptics.h" namespace XInput { diff --git a/tests/adapter_host_probe_test.cpp b/tests/adapter_host_probe_test.cpp index 971251f..e8b79b1 100644 --- a/tests/adapter_host_probe_test.cpp +++ b/tests/adapter_host_probe_test.cpp @@ -1,5 +1,4 @@ -#include "adapter_host_probe.h" - +#include "adapter/adapter_host_probe.h" #include #include #include @@ -7,7 +6,7 @@ #include "hardware/structs/watchdog.h" #include "pico/time.h" -#include "xinput_descriptors.h" +#include "usb/xinput/xinput_descriptors.h" namespace { diff --git a/tests/adapter_mode_controller_test.cpp b/tests/adapter_mode_controller_test.cpp index 99bd61b..931adc5 100644 --- a/tests/adapter_mode_controller_test.cpp +++ b/tests/adapter_mode_controller_test.cpp @@ -1,16 +1,15 @@ -#include "adapter_mode_controller.h" - +#include "adapter/adapter_mode_controller.h" #include #include #include #include #include -#include "adapter_configuration.h" -#include "adapter_reboot.h" -#include "bluepad32_input_backend.h" -#include "configuration_service.h" -#include "controller_profile.h" +#include "configuration/adapter_configuration.h" +#include "adapter/adapter_reboot.h" +#include "input/bluepad32_input_backend.h" +#include "configuration/configuration_service.h" +#include "profile/controller_profile.h" namespace { diff --git a/tests/bluepad32_backend_lifecycle_test.cpp b/tests/bluepad32_backend_lifecycle_test.cpp index 7d8b174..2933d48 100644 --- a/tests/bluepad32_backend_lifecycle_test.cpp +++ b/tests/bluepad32_backend_lifecycle_test.cpp @@ -4,7 +4,7 @@ #include #include -#include "../controller_color_config.h" +#include "platform/pico/controller_color_config.h" namespace { @@ -442,8 +442,9 @@ uint32_t btstack_run_loop_get_time_ms() { } -#include "../controller_identity.cpp" -#include "../bluepad32_input_backend.cpp" +#include "core/controller_identity.cpp" +#include "input/bluepad32_input_backend.cpp" + namespace { void require_clear_completion_pending() { if (expected_pending_clear_token != 0) { diff --git a/tests/bootsel_pairing_button_test.cpp b/tests/bootsel_pairing_button_test.cpp index 1e6ab19..60cd7d3 100644 --- a/tests/bootsel_pairing_button_test.cpp +++ b/tests/bootsel_pairing_button_test.cpp @@ -1,5 +1,4 @@ -#include "bootsel_pairing_button.h" - +#include "platform/pico/bootsel_pairing_button.h" #include #include #include diff --git a/tests/configuration_service_test.cpp b/tests/configuration_service_test.cpp index 557bf55..55db59d 100644 --- a/tests/configuration_service_test.cpp +++ b/tests/configuration_service_test.cpp @@ -1,8 +1,7 @@ -#include "adapter_configuration.h" -#include "configuration_service.h" -#include "configuration_storage.h" -#include "pico_configuration_storage.h" - +#include "configuration/adapter_configuration.h" +#include "configuration/configuration_service.h" +#include "configuration/configuration_storage.h" +#include "platform/pico/pico_configuration_storage.h" #include #include #include diff --git a/tests/configuration_storage_test.cpp b/tests/configuration_storage_test.cpp index 97c6d45..3c0052d 100644 --- a/tests/configuration_storage_test.cpp +++ b/tests/configuration_storage_test.cpp @@ -1,7 +1,6 @@ -#include "adapter_configuration.h" -#include "configuration_storage.h" -#include "configuration_transaction.h" - +#include "configuration/adapter_configuration.h" +#include "configuration/configuration_storage.h" +#include "configuration/configuration_transaction.h" #include #include #include diff --git a/tests/controller_profile_legacy_fixtures.h b/tests/controller_profile_legacy_fixtures.h index eb29b40..98ccfde 100644 --- a/tests/controller_profile_legacy_fixtures.h +++ b/tests/controller_profile_legacy_fixtures.h @@ -2,7 +2,7 @@ #include -#include "controller_profile.h" +#include "profile/controller_profile.h" constexpr uint8_t kLegacyDefaultProfile[CONTROLLER_PROFILE_ENCODED_SIZE] = { 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, diff --git a/tests/controller_profile_runtime_test.cpp b/tests/controller_profile_runtime_test.cpp index a79f8de..a166a24 100644 --- a/tests/controller_profile_runtime_test.cpp +++ b/tests/controller_profile_runtime_test.cpp @@ -1,9 +1,7 @@ -#include "controller_profile_runtime.h" - -#include "controller_identity.h" -#include "controller_profile.h" -#include "profile_service.h" - +#include "profile/controller_profile_runtime.h" +#include "core/controller_identity.h" +#include "profile/controller_profile.h" +#include "profile/profile_service.h" #include #include #include diff --git a/tests/controller_profile_test.cpp b/tests/controller_profile_test.cpp index 91d1bac..b9de8ed 100644 --- a/tests/controller_profile_test.cpp +++ b/tests/controller_profile_test.cpp @@ -1,6 +1,6 @@ -#include "controller_identity.h" -#include "controller_profile.h" -#include "tests/controller_profile_legacy_fixtures.h" +#include "core/controller_identity.h" +#include "profile/controller_profile.h" +#include "controller_profile_legacy_fixtures.h" #include #include diff --git a/tests/controller_profile_transform_test.cpp b/tests/controller_profile_transform_test.cpp index e398638..bd68722 100644 --- a/tests/controller_profile_transform_test.cpp +++ b/tests/controller_profile_transform_test.cpp @@ -1,7 +1,6 @@ -#include "controller_identity.h" -#include "controller_profile.h" -#include "controller_profile_transform.h" - +#include "core/controller_identity.h" +#include "profile/controller_profile.h" +#include "profile/controller_profile_transform.h" #include #include #include diff --git a/tests/controller_synthetic_input_test.cpp b/tests/controller_synthetic_input_test.cpp index 7af5e26..b2af3e6 100644 --- a/tests/controller_synthetic_input_test.cpp +++ b/tests/controller_synthetic_input_test.cpp @@ -1,5 +1,4 @@ -#include "controller_synthetic_input.h" - +#include "profile/controller_synthetic_input.h" #include #include #include diff --git a/tests/generic_hid_descriptors_test.cpp b/tests/generic_hid_descriptors_test.cpp index a69e280..8f08c88 100644 --- a/tests/generic_hid_descriptors_test.cpp +++ b/tests/generic_hid_descriptors_test.cpp @@ -1,5 +1,4 @@ -#include "generic_hid_descriptors.h" - +#include "usb/generic_hid/generic_hid_descriptors.h" #include #include #include diff --git a/tests/generic_hid_driver_test.cpp b/tests/generic_hid_driver_test.cpp index f84d191..9a795ae 100644 --- a/tests/generic_hid_driver_test.cpp +++ b/tests/generic_hid_driver_test.cpp @@ -1,7 +1,5 @@ -#include "generic_hid_driver.h" - -#include "generic_hid_descriptors.h" - +#include "usb/generic_hid/generic_hid_driver.h" +#include "usb/generic_hid/generic_hid_descriptors.h" #include #include #include diff --git a/tests/profile_service_test.cpp b/tests/profile_service_test.cpp index 7296fd6..13b5f9d 100644 --- a/tests/profile_service_test.cpp +++ b/tests/profile_service_test.cpp @@ -1,9 +1,8 @@ -#include "controller_identity.h" -#include "controller_profile.h" -#include "pico_profile_storage.h" -#include "profile_service.h" -#include "profile_storage.h" - +#include "core/controller_identity.h" +#include "profile/controller_profile.h" +#include "platform/pico/pico_profile_storage.h" +#include "profile/profile_service.h" +#include "profile/profile_storage.h" #include #include #include diff --git a/tests/profile_storage_test.cpp b/tests/profile_storage_test.cpp index f0d2ef0..e0fdc9d 100644 --- a/tests/profile_storage_test.cpp +++ b/tests/profile_storage_test.cpp @@ -1,7 +1,7 @@ -#include "controller_identity.h" -#include "controller_profile.h" -#include "profile_storage.h" -#include "tests/controller_profile_legacy_fixtures.h" +#include "core/controller_identity.h" +#include "profile/controller_profile.h" +#include "profile/profile_storage.h" +#include "controller_profile_legacy_fixtures.h" #include #include diff --git a/tests/switch_haptics_test.cpp b/tests/switch_haptics_test.cpp index bec8a15..6db7ec4 100644 --- a/tests/switch_haptics_test.cpp +++ b/tests/switch_haptics_test.cpp @@ -1,5 +1,4 @@ -#include "switch_haptics.h" - +#include "usb/switch/switch_haptics.h" #include #include #include diff --git a/tests/switch_pro_descriptors_test.cpp b/tests/switch_pro_descriptors_test.cpp index edcf392..ef0c4ee 100644 --- a/tests/switch_pro_descriptors_test.cpp +++ b/tests/switch_pro_descriptors_test.cpp @@ -1,6 +1,5 @@ -#include "switch_pro_descriptors.h" -#include "tusb_config.h" - +#include "usb/switch/switch_pro_descriptors.h" +#include "platform/pico/tusb_config.h" #include #include #include diff --git a/tests/switch_pro_driver_context_test.cpp b/tests/switch_pro_driver_context_test.cpp index fb595ed..ecee2d1 100644 --- a/tests/switch_pro_driver_context_test.cpp +++ b/tests/switch_pro_driver_context_test.cpp @@ -1,6 +1,6 @@ -#include "switch_pro_driver.h" -#include "usb_output_driver.h" -#include "controller_color_config.h" +#include "usb/switch/switch_pro_driver.h" +#include "usb/usb_output_driver.h" +#include "platform/pico/controller_color_config.h" #include "tusb.h" #include "pico/time.h" diff --git a/tests/test_adapter_host_probe_native.py b/tests/test_adapter_host_probe_native.py index 24d31e2..638e9fb 100644 --- a/tests/test_adapter_host_probe_native.py +++ b/tests/test_adapter_host_probe_native.py @@ -20,8 +20,8 @@ def test_adapter_host_probe_native(tmp_path: Path) -> None: "-pedantic", "-DSWITCH_PICO_HID_INSTANCE_COUNT=4", f"-I{root / 'tests' / 'mode_native_stubs'}", - f"-I{root}", - str(root / "adapter_host_probe.cpp"), + f"-I{root / 'src' / 'firmware'}", + str(root / "src" / "firmware" / "adapter" / "adapter_host_probe.cpp"), str(root / "tests" / "adapter_host_probe_test.cpp"), "-o", str(executable), diff --git a/tests/test_adapter_mode_controller_native.py b/tests/test_adapter_mode_controller_native.py index 29ea44a..c42a4c7 100644 --- a/tests/test_adapter_mode_controller_native.py +++ b/tests/test_adapter_mode_controller_native.py @@ -20,8 +20,8 @@ def test_adapter_mode_controller_native(tmp_path: Path) -> None: "-pedantic", "-DSWITCH_PICO_HID_INSTANCE_COUNT=4", f"-I{root / 'tests' / 'mode_native_stubs'}", - f"-I{root}", - str(root / "adapter_mode_controller.cpp"), + f"-I{root / 'src' / 'firmware'}", + str(root / "src" / "firmware" / "adapter" / "adapter_mode_controller.cpp"), str(root / "tests" / "adapter_mode_controller_test.cpp"), "-o", str(executable), diff --git a/tests/test_bluepad32_backend_lifecycle_native.py b/tests/test_bluepad32_backend_lifecycle_native.py index 489702c..0bfea37 100644 --- a/tests/test_bluepad32_backend_lifecycle_native.py +++ b/tests/test_bluepad32_backend_lifecycle_native.py @@ -27,7 +27,7 @@ def test_bluepad32_backend_lifecycle_native(tmp_path: Path) -> None: command.extend( [ f"-I{root / 'tests' / 'bluepad32_native_stubs'}", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "bluepad32_backend_lifecycle_test.cpp"), "-o", str(executable), diff --git a/tests/test_bootsel_pairing_button_native.py b/tests/test_bootsel_pairing_button_native.py index b05f1b7..315eded 100644 --- a/tests/test_bootsel_pairing_button_native.py +++ b/tests/test_bootsel_pairing_button_native.py @@ -22,8 +22,8 @@ def test_bootsel_pairing_button_native(tmp_path: Path) -> None: "-pedantic", f"-DPICO_RP2350={rp2350}", f"-I{root / 'tests' / 'bootsel_native_stubs'}", - f"-I{root}", - str(root / "bootsel_pairing_button.cpp"), + f"-I{root / 'src' / 'firmware'}", + str(root / "src" / "firmware" / "platform" / "pico" / "bootsel_pairing_button.cpp"), str(root / "tests" / "bootsel_pairing_button_test.cpp"), "-o", str(executable), diff --git a/tests/test_configuration_service_native.py b/tests/test_configuration_service_native.py index 7707392..914c75a 100644 --- a/tests/test_configuration_service_native.py +++ b/tests/test_configuration_service_native.py @@ -18,12 +18,12 @@ def test_configuration_service_native(tmp_path: Path) -> None: "-Werror", "-pedantic", f"-I{root / 'tests' / 'bluepad32_native_stubs'}", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "configuration_service_test.cpp"), - str(root / "adapter_configuration.cpp"), - str(root / "configuration_service.cpp"), - str(root / "configuration_storage.cpp"), - str(root / "configuration_transaction.cpp"), + str(root / "src" / "firmware" / "configuration" / "adapter_configuration.cpp"), + str(root / "src" / "firmware" / "configuration" / "configuration_service.cpp"), + str(root / "src" / "firmware" / "configuration" / "configuration_storage.cpp"), + str(root / "src" / "firmware" / "configuration" / "configuration_transaction.cpp"), "-o", str(executable), ], diff --git a/tests/test_configuration_storage_native.py b/tests/test_configuration_storage_native.py index 0f0839a..b979171 100644 --- a/tests/test_configuration_storage_native.py +++ b/tests/test_configuration_storage_native.py @@ -17,11 +17,11 @@ def test_configuration_storage_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "configuration_storage_test.cpp"), - str(root / "adapter_configuration.cpp"), - str(root / "configuration_storage.cpp"), - str(root / "configuration_transaction.cpp"), + str(root / "src" / "firmware" / "configuration" / "adapter_configuration.cpp"), + str(root / "src" / "firmware" / "configuration" / "configuration_storage.cpp"), + str(root / "src" / "firmware" / "configuration" / "configuration_transaction.cpp"), "-o", str(executable), ], diff --git a/tests/test_controller_profile_native.py b/tests/test_controller_profile_native.py index 3cf5575..aad656e 100644 --- a/tests/test_controller_profile_native.py +++ b/tests/test_controller_profile_native.py @@ -17,10 +17,10 @@ def test_controller_profile_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "controller_profile_test.cpp"), - str(root / "controller_identity.cpp"), - str(root / "controller_profile.cpp"), + str(root / "src" / "firmware" / "core" / "controller_identity.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile.cpp"), "-o", str(executable), ], diff --git a/tests/test_controller_profile_runtime_native.py b/tests/test_controller_profile_runtime_native.py index 0fa353d..ee81c4d 100644 --- a/tests/test_controller_profile_runtime_native.py +++ b/tests/test_controller_profile_runtime_native.py @@ -17,13 +17,13 @@ def test_controller_profile_runtime_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "controller_profile_runtime_test.cpp"), - str(root / "controller_identity.cpp"), - str(root / "controller_profile.cpp"), - str(root / "controller_profile_transform.cpp"), - str(root / "controller_synthetic_input.cpp"), - str(root / "controller_profile_runtime.cpp"), + str(root / "src" / "firmware" / "core" / "controller_identity.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile_transform.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_synthetic_input.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile_runtime.cpp"), "-o", str(executable), ], diff --git a/tests/test_controller_profile_transform_native.py b/tests/test_controller_profile_transform_native.py index 474cdb6..b8eb399 100644 --- a/tests/test_controller_profile_transform_native.py +++ b/tests/test_controller_profile_transform_native.py @@ -17,11 +17,11 @@ def test_controller_profile_transform_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "controller_profile_transform_test.cpp"), - str(root / "controller_identity.cpp"), - str(root / "controller_profile.cpp"), - str(root / "controller_profile_transform.cpp"), + str(root / "src" / "firmware" / "core" / "controller_identity.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile_transform.cpp"), "-o", str(executable), ], diff --git a/tests/test_controller_synthetic_input_native.py b/tests/test_controller_synthetic_input_native.py index aa347a8..8f75956 100644 --- a/tests/test_controller_synthetic_input_native.py +++ b/tests/test_controller_synthetic_input_native.py @@ -17,12 +17,12 @@ def test_controller_synthetic_input_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "controller_synthetic_input_test.cpp"), - str(root / "controller_identity.cpp"), - str(root / "controller_profile.cpp"), - str(root / "controller_profile_transform.cpp"), - str(root / "controller_synthetic_input.cpp"), + str(root / "src" / "firmware" / "core" / "controller_identity.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile_transform.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_synthetic_input.cpp"), "-o", str(executable), ], diff --git a/tests/test_generic_hid_native.py b/tests/test_generic_hid_native.py index 7c3e500..bd47b7a 100644 --- a/tests/test_generic_hid_native.py +++ b/tests/test_generic_hid_native.py @@ -32,7 +32,7 @@ def compile_cpp( command.append(f"-I{root / 'tests' / 'native_stubs'}") command.extend( [ - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", *[str(source) for source in sources], "-o", str(output), @@ -98,7 +98,7 @@ def test_generic_hid_driver_contexts(tmp_path: Path) -> None: host_compiler(), executable, [ - root / "generic_hid_driver.cpp", + root / "src" / "firmware" / "usb" / "generic_hid" / "generic_hid_driver.cpp", root / "tests" / "generic_hid_driver_test.cpp", ], ["SWITCH_PICO_HID_INSTANCE_COUNT=4"], diff --git a/tests/test_profile_service_native.py b/tests/test_profile_service_native.py index 20fd48b..5bcb524 100644 --- a/tests/test_profile_service_native.py +++ b/tests/test_profile_service_native.py @@ -18,12 +18,12 @@ def test_profile_service_native(tmp_path: Path) -> None: "-Werror", "-pedantic", f"-I{root / 'tests' / 'bluepad32_native_stubs'}", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "profile_service_test.cpp"), - str(root / "controller_identity.cpp"), - str(root / "controller_profile.cpp"), - str(root / "profile_storage.cpp"), - str(root / "profile_service.cpp"), + str(root / "src" / "firmware" / "core" / "controller_identity.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile.cpp"), + str(root / "src" / "firmware" / "profile" / "profile_storage.cpp"), + str(root / "src" / "firmware" / "profile" / "profile_service.cpp"), "-o", str(executable), ], diff --git a/tests/test_profile_storage_native.py b/tests/test_profile_storage_native.py index 80e204f..134b90d 100644 --- a/tests/test_profile_storage_native.py +++ b/tests/test_profile_storage_native.py @@ -17,11 +17,11 @@ def test_profile_storage_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "profile_storage_test.cpp"), - str(root / "controller_identity.cpp"), - str(root / "controller_profile.cpp"), - str(root / "profile_storage.cpp"), + str(root / "src" / "firmware" / "core" / "controller_identity.cpp"), + str(root / "src" / "firmware" / "profile" / "controller_profile.cpp"), + str(root / "src" / "firmware" / "profile" / "profile_storage.cpp"), "-o", str(executable), ], diff --git a/tests/test_switch_haptics_native.py b/tests/test_switch_haptics_native.py index a56e27f..a8e0263 100644 --- a/tests/test_switch_haptics_native.py +++ b/tests/test_switch_haptics_native.py @@ -19,8 +19,8 @@ def test_switch_haptics_native(tmp_path: Path) -> None: "-Wextra", "-Werror", "-pedantic", - f"-I{root}", - str(root / "switch_haptics.cpp"), + f"-I{root / 'src' / 'firmware'}", + str(root / "src" / "firmware" / "usb" / "switch" / "switch_haptics.cpp"), str(root / "tests" / "switch_haptics_test.cpp"), "-o", str(executable), diff --git a/tests/test_switch_pro_descriptors_native.py b/tests/test_switch_pro_descriptors_native.py index a586843..57fa816 100644 --- a/tests/test_switch_pro_descriptors_native.py +++ b/tests/test_switch_pro_descriptors_native.py @@ -25,7 +25,7 @@ def compile_descriptor_test( command.append(f"-DSWITCH_PICO_HID_INSTANCE_COUNT={configured_count}") command.extend( [ - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "switch_pro_descriptors_test.cpp"), "-o", str(output), diff --git a/tests/test_switch_pro_driver_context_native.py b/tests/test_switch_pro_driver_context_native.py index d3c2963..9010f8b 100644 --- a/tests/test_switch_pro_driver_context_native.py +++ b/tests/test_switch_pro_driver_context_native.py @@ -21,10 +21,10 @@ def test_switch_pro_driver_four_contexts_native(tmp_path: Path) -> None: "-pedantic", "-DSWITCH_PICO_HID_INSTANCE_COUNT=4", f"-I{root / 'tests' / 'native_stubs'}", - f"-I{root}", - str(root / "switch_pro_driver.cpp"), - str(root / "usb_output_driver.cpp"), - str(root / "switch_haptics.cpp"), + f"-I{root / 'src' / 'firmware'}", + str(root / "src" / "firmware" / "usb" / "switch" / "switch_pro_driver.cpp"), + str(root / "src" / "firmware" / "usb" / "usb_output_driver.cpp"), + str(root / "src" / "firmware" / "usb" / "switch" / "switch_haptics.cpp"), str(root / "tests" / "switch_pro_driver_context_test.cpp"), "-o", str(executable), diff --git a/tests/test_usb_configuration_management_native.py b/tests/test_usb_configuration_management_native.py index 7eb2d6b..5d279f0 100644 --- a/tests/test_usb_configuration_management_native.py +++ b/tests/test_usb_configuration_management_native.py @@ -19,7 +19,7 @@ def test_usb_configuration_management_native(tmp_path: Path) -> None: "-Werror", "-pedantic", f"-I{root / 'tests' / 'usb_management_native_stubs'}", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "usb_configuration_management_test.cpp"), "-o", str(executable), diff --git a/tests/test_usb_output_driver_native.py b/tests/test_usb_output_driver_native.py index b6f4ff8..cfe956a 100644 --- a/tests/test_usb_output_driver_native.py +++ b/tests/test_usb_output_driver_native.py @@ -36,13 +36,13 @@ def test_usb_output_driver_contracts(tmp_path: Path) -> None: "-DSWITCH_PICO_USB_OUTPUT_MODES=1", *backend_definitions, f"-I{root / 'tests' / 'native_stubs'}", - f"-I{root}", + f"-I{root / 'src' / 'firmware'}", str(root / "tests" / "usb_output_driver_test.cpp"), - str(root / "switch_pro_driver.cpp"), - str(root / "usb_output_driver.cpp"), - str(root / "generic_hid_driver.cpp"), - str(root / "xinput_driver.cpp"), - str(root / "switch_haptics.cpp"), + str(root / "src" / "firmware" / "usb" / "switch" / "switch_pro_driver.cpp"), + str(root / "src" / "firmware" / "usb" / "usb_output_driver.cpp"), + str(root / "src" / "firmware" / "usb" / "generic_hid" / "generic_hid_driver.cpp"), + str(root / "src" / "firmware" / "usb" / "xinput" / "xinput_driver.cpp"), + str(root / "src" / "firmware" / "usb" / "switch" / "switch_haptics.cpp"), "-o", str(executable), ], diff --git a/tests/usb_configuration_management_test.cpp b/tests/usb_configuration_management_test.cpp index 9a6601a..2ea86f9 100644 --- a/tests/usb_configuration_management_test.cpp +++ b/tests/usb_configuration_management_test.cpp @@ -1,12 +1,11 @@ -#include "usb_configuration_management.h" - +#include "usb/usb_configuration_management.h" #include #include #include #include #include -#include "usb_output_driver.h" +#include "usb/usb_output_driver.h" namespace { @@ -788,10 +787,10 @@ bool tud_control_status(uint8_t, const tusb_control_request_t*) { return true; } -#include "../adapter_configuration.cpp" -#include "../controller_identity.cpp" -#include "../controller_profile.cpp" -#include "../usb_configuration_management.cpp" +#include "configuration/adapter_configuration.cpp" +#include "core/controller_identity.cpp" +#include "profile/controller_profile.cpp" +#include "usb/usb_configuration_management.cpp" int main() { current_configuration.state = ConfigurationServiceState::kReady; diff --git a/tests/usb_output_driver_test.cpp b/tests/usb_output_driver_test.cpp index 7ffdb78..edf1f2d 100644 --- a/tests/usb_output_driver_test.cpp +++ b/tests/usb_output_driver_test.cpp @@ -4,17 +4,17 @@ #include #include -#include "adapter_host_probe_state.h" -#include "generic_hid_descriptors.h" -#include "generic_hid_driver.h" -#include "xinput_descriptors.h" -#include "xinput_protocol.h" +#include "adapter/adapter_host_probe_state.h" +#include "usb/generic_hid/generic_hid_descriptors.h" +#include "usb/generic_hid/generic_hid_driver.h" +#include "usb/xinput/xinput_descriptors.h" +#include "usb/xinput/xinput_protocol.h" #include "device/usbd_pvt.h" #include "pico/time.h" -#include "switch_pro_driver.h" +#include "usb/switch/switch_pro_driver.h" #include "tusb.h" -#include "usb_output_driver.h" -#include "xinput_driver.h" +#include "usb/usb_output_driver.h" +#include "usb/xinput/xinput_driver.h" namespace {