From f303fc4d07665e26e5e3fd433390a376fc3848dd Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Thu, 3 Oct 2024 21:12:57 +0200 Subject: [PATCH 01/33] cmake: define NDEBUG when DEBUG Kconfig is not enabled, to remove assert()s --- device/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/device/CMakeLists.txt b/device/CMakeLists.txt index 7168199a..ba0f2241 100644 --- a/device/CMakeLists.txt +++ b/device/CMakeLists.txt @@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(uhk) +if(NOT CONFIG_DEBUG) + add_definitions(-DNDEBUG) +endif() + target_include_directories(app PUBLIC src src/legacy From dc2502357439e953126a1046295d76ac288bc868 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Fri, 25 Oct 2024 22:30:52 +0200 Subject: [PATCH 02/33] update board.cmake to current reference --- boards/arm/uhk-80-left/board.cmake | 7 +++++-- boards/arm/uhk-80-right/board.cmake | 7 +++++-- boards/arm/uhk-dongle/board.cmake | 7 +++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/boards/arm/uhk-80-left/board.cmake b/boards/arm/uhk-80-left/board.cmake index da4efd18..5c6b5319 100644 --- a/boards/arm/uhk-80-left/board.cmake +++ b/boards/arm/uhk-80-left/board.cmake @@ -1,9 +1,12 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA +# Copyright (c) 2021 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 board_runner_args(jlink "--device=nrf52" "--speed=4000") board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") -board_runner_args(nrfjprog "--softreset") + +set(OPENOCD_NRF5_SUBFAMILY "nrf52") + include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) diff --git a/boards/arm/uhk-80-right/board.cmake b/boards/arm/uhk-80-right/board.cmake index da4efd18..5c6b5319 100644 --- a/boards/arm/uhk-80-right/board.cmake +++ b/boards/arm/uhk-80-right/board.cmake @@ -1,9 +1,12 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA +# Copyright (c) 2021 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 board_runner_args(jlink "--device=nrf52" "--speed=4000") board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") -board_runner_args(nrfjprog "--softreset") + +set(OPENOCD_NRF5_SUBFAMILY "nrf52") + include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) diff --git a/boards/arm/uhk-dongle/board.cmake b/boards/arm/uhk-dongle/board.cmake index da4efd18..5c6b5319 100644 --- a/boards/arm/uhk-dongle/board.cmake +++ b/boards/arm/uhk-dongle/board.cmake @@ -1,9 +1,12 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA +# Copyright (c) 2021 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 board_runner_args(jlink "--device=nrf52" "--speed=4000") board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") -board_runner_args(nrfjprog "--softreset") + +set(OPENOCD_NRF5_SUBFAMILY "nrf52") + include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) From 6a2586521a8280c712085a83a4333b5dbe760275 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sat, 26 Oct 2024 00:18:02 +0200 Subject: [PATCH 03/33] kconfig: restructuring step 1 * define all USB product parameters independently * derive BT DIS parameters from USB parameters * start phasing out board-specific overlays --- boards/arm/uhk-80-left/Kconfig.defconfig | 26 +++++++- boards/arm/uhk-80-left/uhk-80-left_defconfig | 3 +- boards/arm/uhk-80-right/Kconfig.defconfig | 28 ++++++-- .../arm/uhk-80-right/uhk-80-right_defconfig | 3 +- boards/arm/uhk-dongle/Kconfig.defconfig | 26 +++++++- boards/arm/uhk-dongle/uhk-dongle_defconfig | 3 +- device/Kconfig | 64 +++++++++++++++++-- device/prj.conf | 6 -- device/prj.conf.overlays/uhk-80-left.prj.conf | 7 -- .../prj.conf.overlays/uhk-80-right.prj.conf | 7 -- device/prj.conf.overlays/uhk-dongle.prj.conf | 7 -- device/src/usb/usb.cpp | 10 ++- 12 files changed, 135 insertions(+), 55 deletions(-) diff --git a/boards/arm/uhk-80-left/Kconfig.defconfig b/boards/arm/uhk-80-left/Kconfig.defconfig index 95c641e0..ccf4002a 100644 --- a/boards/arm/uhk-80-left/Kconfig.defconfig +++ b/boards/arm/uhk-80-left/Kconfig.defconfig @@ -1,12 +1,32 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 - +# used for both zephyr and mcuboot -> no custom kconfig symbols here if BOARD_UHK_80_LEFT config BOARD default "uhk-80-left" +if SHELL_BACKEND_RTT +config SHELL_PROMPT_RTT + default "uhk80:left$ " +endif # SHELL_BACKEND_RTT + +if SHELL_BACKEND_SERIAL +config SHELL_PROMPT_UART + default "uhk80:left$ " +endif # SHELL_BACKEND_SERIAL + +if BT_DIS && BT_DIS_PNP +config BT_DIS_PNP_PID + default 0x8007 +endif # BT_DIS && BT_DIS_PNP + +config USB_DEVICE_PRODUCT + default "UHK 80 left half" + +config USB_DEVICE_PID + default 0x0007 + config BT_CTLR default BT -endif +endif # BOARD_UHK_80_LEFT diff --git a/boards/arm/uhk-80-left/uhk-80-left_defconfig b/boards/arm/uhk-80-left/uhk-80-left_defconfig index 3170f72a..3ff77a65 100644 --- a/boards/arm/uhk-80-left/uhk-80-left_defconfig +++ b/boards/arm/uhk-80-left/uhk-80-left_defconfig @@ -1,6 +1,5 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 - +# used for both zephyr and mcuboot -> only shared kconfig symbols here CONFIG_SOC_SERIES_NRF52X=y CONFIG_SOC_NRF52840_QIAA=y CONFIG_BOARD_UHK_80_LEFT=y diff --git a/boards/arm/uhk-80-right/Kconfig.defconfig b/boards/arm/uhk-80-right/Kconfig.defconfig index 4868033f..615a975d 100644 --- a/boards/arm/uhk-80-right/Kconfig.defconfig +++ b/boards/arm/uhk-80-right/Kconfig.defconfig @@ -1,12 +1,32 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 - +# used for both zephyr and mcuboot -> no custom kconfig symbols here if BOARD_UHK_80_RIGHT config BOARD default "uhk-80-right" +if SHELL_BACKEND_RTT +config SHELL_PROMPT_RTT + default "uhk80:right$ " +endif # SHELL_BACKEND_RTT + +if SHELL_BACKEND_SERIAL +config SHELL_PROMPT_UART + default "uhk80:right$ " +endif # SHELL_BACKEND_SERIAL + +if BT_DIS && BT_DIS_PNP +config BT_DIS_PNP_PID + default 0x8009 +endif # BT_DIS && BT_DIS_PNP + +config USB_DEVICE_PRODUCT + default "UHK 80 right half" + +config USB_DEVICE_PID + default 0x0009 + config BT_CTLR - default BT + default BT -endif +endif # BOARD_UHK_80_RIGHT diff --git a/boards/arm/uhk-80-right/uhk-80-right_defconfig b/boards/arm/uhk-80-right/uhk-80-right_defconfig index 63d485bf..6f7bd9e0 100644 --- a/boards/arm/uhk-80-right/uhk-80-right_defconfig +++ b/boards/arm/uhk-80-right/uhk-80-right_defconfig @@ -1,6 +1,5 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 - +# used for both zephyr and mcuboot -> only shared kconfig symbols here CONFIG_SOC_SERIES_NRF52X=y CONFIG_SOC_NRF52840_QIAA=y CONFIG_BOARD_UHK_80_RIGHT=y diff --git a/boards/arm/uhk-dongle/Kconfig.defconfig b/boards/arm/uhk-dongle/Kconfig.defconfig index 2bf872a3..a8652e98 100644 --- a/boards/arm/uhk-dongle/Kconfig.defconfig +++ b/boards/arm/uhk-dongle/Kconfig.defconfig @@ -1,12 +1,32 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 - +# used for both zephyr and mcuboot -> no custom kconfig symbols here if BOARD_UHK_DONGLE config BOARD default "uhk-dongle" +if SHELL_BACKEND_RTT +config SHELL_PROMPT_RTT + default "uhk-dongle$ " +endif # SHELL_BACKEND_RTT + +if SHELL_BACKEND_SERIAL +config SHELL_PROMPT_UART + default "uhk-dongle$ " +endif # SHELL_BACKEND_SERIAL + +if BT_DIS && BT_DIS_PNP +config BT_DIS_PNP_PID + default 0x8005 +endif # BT_DIS && BT_DIS_PNP + +config USB_DEVICE_PRODUCT + default "UHK dongle" + +config USB_DEVICE_PID + default 0x0005 + config BT_CTLR default BT -endif +endif # BOARD_UHK_DONGLE diff --git a/boards/arm/uhk-dongle/uhk-dongle_defconfig b/boards/arm/uhk-dongle/uhk-dongle_defconfig index 4d9381c9..65b948b1 100644 --- a/boards/arm/uhk-dongle/uhk-dongle_defconfig +++ b/boards/arm/uhk-dongle/uhk-dongle_defconfig @@ -1,6 +1,5 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 - +# used for both zephyr and mcuboot -> only shared kconfig symbols here CONFIG_SOC_SERIES_NRF52X=y CONFIG_SOC_NRF52840_QIAA=y CONFIG_BOARD_UHK_DONGLE=y diff --git a/device/Kconfig b/device/Kconfig index d4238352..7f75c93c 100644 --- a/device/Kconfig +++ b/device/Kconfig @@ -1,10 +1,10 @@ -source "Kconfig.zephyr" - -rsource "c2usb/c2usb/port/zephyr/Kconfig" - +# custom Kconfig defaults are set per board here, +# as the board-specific Kconfig files are used for mcuboot build as well config DEVICE_ID int "UHK device id" - default 0 + default 5 if BOARD_UHK_DONGLE + default 3 if BOARD_UHK_80_LEFT + default 4 if BOARD_UHK_80_RIGHT help The device id that identifies the specific UHK half or dongle. @@ -18,8 +18,60 @@ config KEYBOARD_MAX_SCANCODE still receive the "NKRO" report layout. If a higher scancode is used, the report size will exceed this size, causing a fallback to 6KRO report layout on Android. -config USB_PID +# by using the same Kconfig symbol names as mcuboot, the board Kconfig files can contain the values +config USB_DEVICE_VID + hex "USB vendor ID" + range 0x0000 0xFFFF + default 0x37A8 + help + The USB vendor ID is used to identify the specific UHK device. + +config USB_DEVICE_MANUFACTURER + string "USB vendor name" + default "Ultimate Gadget Laboratories" + help + The USB vendor name is used to describe the specific UHK device to the host OS user. + +config USB_DEVICE_PID hex "USB product ID" range 0x0000 0xFFFF help The USB product ID is used to identify the specific UHK device. + +config USB_DEVICE_PRODUCT + string "USB product name" + help + The USB product name is used to describe the specific UHK device to the host OS user. + +config USB_DEVICE_PRODUCT_VERSION + hex "USB product version" + range 0x0000 0xFFFF + default 0x0001 + help + The USB product version is used to identify the UHK device operating mode. + +# copy over the USB properties to BT +configdefault BT_DIS_MANUF + default USB_DEVICE_MANUFACTURER +configdefault BT_DIS_MODEL + default USB_DEVICE_PRODUCT +configdefault BT_DIS_PNP + default y +configdefault BT_DIS_PNP_VID_SRC + default 2 +configdefault BT_DIS_PNP_VID + default USB_DEVICE_VID +configdefault BT_DIS_PNP_VER + default USB_DEVICE_PRODUCT_VERSION + +configdefault BT_DEVICE_NAME + default "UHK 80" if BOARD_UHK_80_LEFT || BOARD_UHK_80_RIGHT +configdefault BT_DEVICE_APPEARANCE + default 961 + +# configdefaults must come before sourcing "Kconfig.zephyr" in order to give precedence +# to these application-specific defaults instead of the unconditional default in the Zephyr Kconfig tree. +# https://github.com/nrfconnect/sdk-nrf/blob/4b9841a28e97e9d61b93f8981375d644b9d04ea0/samples/bluetooth/mesh/light/Kconfig#L11C1-L13C30 +source "Kconfig.zephyr" + +rsource "c2usb/c2usb/port/zephyr/Kconfig" diff --git a/device/prj.conf b/device/prj.conf index cfc45635..8733effb 100644 --- a/device/prj.conf +++ b/device/prj.conf @@ -22,16 +22,10 @@ CONFIG_BT_MAX_PAIRED=20 CONFIG_BT_SMP=y CONFIG_BT_L2CAP_TX_BUF_COUNT=5 CONFIG_BT_PERIPHERAL=y -CONFIG_BT_DEVICE_NAME="UHK 80" -CONFIG_BT_DEVICE_APPEARANCE=961 CONFIG_BT_BAS=y CONFIG_BT_DIS=y -CONFIG_BT_DIS_PNP=y -CONFIG_BT_DIS_PNP_VID_SRC=2 -CONFIG_BT_DIS_PNP_VID=0x37A8 -CONFIG_BT_DIS_MANUF="Ultimate Gadget Laboratories" CONFIG_BT_SETTINGS=y CONFIG_FLASH=y diff --git a/device/prj.conf.overlays/uhk-80-left.prj.conf b/device/prj.conf.overlays/uhk-80-left.prj.conf index 3fd36bc2..7e85827b 100644 --- a/device/prj.conf.overlays/uhk-80-left.prj.conf +++ b/device/prj.conf.overlays/uhk-80-left.prj.conf @@ -6,10 +6,3 @@ CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1 CONFIG_ADC=y CONFIG_UDC_NRF=y CONFIG_BOOTLOADER_MCUBOOT=y -CONFIG_DEVICE_ID=3 -CONFIG_SHELL_PROMPT_UART="uhk80:left$ " -CONFIG_SHELL_PROMPT_RTT="uhk80:left$ " - -CONFIG_BT_DIS_MODEL="UHK 80 left half" -CONFIG_BT_DIS_PNP_PID=0x8007 -CONFIG_USB_PID=0x0007 diff --git a/device/prj.conf.overlays/uhk-80-right.prj.conf b/device/prj.conf.overlays/uhk-80-right.prj.conf index e848bdd5..0b5cdaee 100644 --- a/device/prj.conf.overlays/uhk-80-right.prj.conf +++ b/device/prj.conf.overlays/uhk-80-right.prj.conf @@ -10,10 +10,3 @@ CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1 CONFIG_ADC=y CONFIG_UDC_NRF=y CONFIG_BOOTLOADER_MCUBOOT=y -CONFIG_DEVICE_ID=4 -CONFIG_SHELL_PROMPT_UART="uhk80:right$ " -CONFIG_SHELL_PROMPT_RTT="uhk80:right$ " - -CONFIG_BT_DIS_MODEL="UHK 80 right half" -CONFIG_BT_DIS_PNP_PID=0x8009 -CONFIG_USB_PID=0x0009 diff --git a/device/prj.conf.overlays/uhk-dongle.prj.conf b/device/prj.conf.overlays/uhk-dongle.prj.conf index 264ac82d..f81a0b0e 100644 --- a/device/prj.conf.overlays/uhk-dongle.prj.conf +++ b/device/prj.conf.overlays/uhk-dongle.prj.conf @@ -3,10 +3,3 @@ CONFIG_ADC=n CONFIG_PWM=y CONFIG_UDC_NRF=y CONFIG_BOOTLOADER_MCUBOOT=y -CONFIG_DEVICE_ID=5 -CONFIG_SHELL_PROMPT_UART="uhk-dongle$ " -CONFIG_SHELL_PROMPT_RTT="uhk-dongle$ " - -CONFIG_BT_DIS_MODEL="UHK dongle" -CONFIG_BT_DIS_PNP_PID=0x8005 -CONFIG_USB_PID=0x0005 diff --git a/device/src/usb/usb.cpp b/device/src/usb/usb.cpp index 58172d77..7564425f 100644 --- a/device/src/usb/usb.cpp +++ b/device/src/usb/usb.cpp @@ -34,14 +34,12 @@ extern "C" { using namespace magic_enum::bitwise_operators; #endif -// make sure that the USB IDs are used in BT -static_assert(CONFIG_BT_DIS_PNP_VID_SRC == 2); - uint8_t UsbSerialNumber[5]; -constexpr usb::product_info product_info{CONFIG_BT_DIS_PNP_VID, CONFIG_BT_DIS_MANUF, - CONFIG_USB_PID, CONFIG_BT_DIS_MODEL, - usb::version(CONFIG_BT_DIS_PNP_VER >> 8, CONFIG_BT_DIS_PNP_VER), UsbSerialNumber}; +constexpr usb::product_info product_info{CONFIG_USB_DEVICE_VID, CONFIG_USB_DEVICE_MANUFACTURER, + CONFIG_USB_DEVICE_PID, CONFIG_USB_DEVICE_PRODUCT, + usb::version(CONFIG_USB_DEVICE_PRODUCT_VERSION >> 8, CONFIG_USB_DEVICE_PRODUCT_VERSION), + UsbSerialNumber}; template class multi_hid : public hid::multi_application { From bede208542b5a7b4edef237980d4a1012490b6ec Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sat, 26 Oct 2024 02:08:12 +0200 Subject: [PATCH 04/33] kconfig: move build type independent options out of prj.conf prj.conf is for Kconfig options that can be altered per build type. In order to support development vs release build targets, prj.conf is cleared out, and prj_release.conf is added. Moving forward we should better split the development vs release options, see e.g. Kconfig hardening. Extra conf files are used to achieve what prj.conf did so far, for now the content is the same, but in the future they should be better organized per functionality. The make-release script is updated to parse the CMakePresets, so the changes are automatically applied on the CI build, without extra maintenance. --- boards/arm/uhk-60-right/uhk-60-right.yaml | 2 + boards/arm/uhk-dongle/uhk-dongle_defconfig | 2 + device/CMakePresets.json | 6 +- device/prj.conf | 95 ++----------------- device/prj.conf.overlays/ble-hid.conf | 5 + device/prj.conf.overlays/c2usb.conf | 14 +++ device/prj.conf.overlays/nrf_shared.conf | 75 +++++++++++++++ .../prj.conf.overlays/uhk-80-right.prj.conf | 12 --- .../{uhk-80-left.prj.conf => uhk-80.conf} | 3 - device/prj.conf.overlays/uhk-dongle.prj.conf | 5 - device/prj_release.conf | 5 + scripts/make-release.mjs | 24 ++++- 12 files changed, 137 insertions(+), 111 deletions(-) create mode 100644 device/prj.conf.overlays/ble-hid.conf create mode 100644 device/prj.conf.overlays/c2usb.conf create mode 100644 device/prj.conf.overlays/nrf_shared.conf delete mode 100644 device/prj.conf.overlays/uhk-80-right.prj.conf rename device/prj.conf.overlays/{uhk-80-left.prj.conf => uhk-80.conf} (62%) delete mode 100644 device/prj.conf.overlays/uhk-dongle.prj.conf create mode 100644 device/prj_release.conf diff --git a/boards/arm/uhk-60-right/uhk-60-right.yaml b/boards/arm/uhk-60-right/uhk-60-right.yaml index 0417e11e..63f3d97f 100644 --- a/boards/arm/uhk-60-right/uhk-60-right.yaml +++ b/boards/arm/uhk-60-right/uhk-60-right.yaml @@ -19,3 +19,5 @@ supported: - spi - usb_device - watchdog + +# TODO: use board revisions: https://docs.zephyrproject.org/latest/hardware/porting/board_porting.html#multiple-board-revisions \ No newline at end of file diff --git a/boards/arm/uhk-dongle/uhk-dongle_defconfig b/boards/arm/uhk-dongle/uhk-dongle_defconfig index 65b948b1..9b11be8e 100644 --- a/boards/arm/uhk-dongle/uhk-dongle_defconfig +++ b/boards/arm/uhk-dongle/uhk-dongle_defconfig @@ -9,3 +9,5 @@ CONFIG_ARM_MPU=y # Enable hardware stack protection CONFIG_HW_STACK_PROTECTION=y + +CONFIG_PWM=y diff --git a/device/CMakePresets.json b/device/CMakePresets.json index 517bd40c..004924cc 100644 --- a/device/CMakePresets.json +++ b/device/CMakePresets.json @@ -47,7 +47,7 @@ "BOARD": "uhk-80-right", "BOARD_ROOT": "${sourceParentDir}/", "mcuboot_OVERLAY_CONFIG": "${sourceDir}/child_image/mcuboot.conf;${sourceDir}/child_image/uhk-80-right.mcuboot.conf", - "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/uhk-80-right.prj.conf" + "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/uhk-80.conf;${sourceDir}/prj.conf.overlays/ble-hid.conf" }, "warnings": { "dev": false @@ -63,7 +63,7 @@ "BOARD": "uhk-80-left", "BOARD_ROOT": "${sourceParentDir}/", "mcuboot_OVERLAY_CONFIG": "${sourceDir}/child_image/mcuboot.conf;${sourceDir}/child_image/uhk-80-left.mcuboot.conf", - "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/uhk-80-left.prj.conf" + "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/uhk-80.conf" }, "warnings": { "dev": false @@ -79,7 +79,7 @@ "BOARD": "uhk-dongle", "BOARD_ROOT": "${sourceParentDir}/", "mcuboot_OVERLAY_CONFIG": "${sourceDir}/child_image/mcuboot.conf;${sourceDir}/child_image/uhk-dongle.mcuboot.conf", - "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/uhk-dongle.prj.conf" + "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf" }, "warnings": { "dev": false diff --git a/device/prj.conf b/device/prj.conf index 8733effb..a5f2ab43 100644 --- a/device/prj.conf +++ b/device/prj.conf @@ -1,91 +1,16 @@ -CONFIG_PINCTRL=y -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y - -CONFIG_EXTRA_EXCEPTION_INFO=y -CONFIG_INIT_STACKS=y - -CONFIG_CPP=y -CONFIG_STD_CPP20=y -CONFIG_NEWLIB_LIBC=y -CONFIG_GLIBCXX_LIBCPP=y - -CONFIG_UDC_DRIVER=y - -CONFIG_NCS_SAMPLES_DEFAULTS=y - -CONFIG_BT=y -# CONFIG_BT_DEBUG_LOG=y -CONFIG_BT_MAX_CONN=4 -CONFIG_BT_MAX_PAIRED=20 -CONFIG_BT_SMP=y -CONFIG_BT_L2CAP_TX_BUF_COUNT=5 -CONFIG_BT_PERIPHERAL=y - -CONFIG_BT_BAS=y - -CONFIG_BT_DIS=y - -CONFIG_BT_SETTINGS=y -CONFIG_FLASH=y -CONFIG_FLASH_PAGE_LAYOUT=y -CONFIG_FLASH_MAP=y -CONFIG_NVS=y -CONFIG_SETTINGS=y - -CONFIG_SERIAL=y - -CONFIG_CONSOLE=y -CONFIG_UART_CONSOLE=y -CONFIG_UART_LINE_CTRL=y -CONFIG_UART_ASYNC_API=y - -CONFIG_SHELL=y -CONFIG_SHELL_VT100_COMMANDS=y -CONFIG_SHELL_VT100_COLORS=y -CONFIG_BT_SHELL=y -CONFIG_SHELL_BT_NUS=y -CONFIG_HWINFO=y -CONFIG_HWINFO_SHELL=y -CONFIG_I2C=y -CONFIG_I2C_SHELL=y -CONFIG_STREAM_FLASH=y -CONFIG_SETTINGS_SHELL=y -CONFIG_SHELL_BACKENDS=y - +# settings only for debug build +# for build independent settings use extra-conf/.conf +# for board-specific settings use ../boards///_defconfig +# for board AND build type specific settings use boards//_.conf CONFIG_USE_SEGGER_RTT=y CONFIG_RTT_CONSOLE=y -CONFIG_SHELL_BACKEND_SERIAL=y CONFIG_SHELL_BACKEND_RTT=y # CONFIG_LOG_BACKEND_RTT=y -CONFIG_BUILD_OUTPUT_HEX=y - -CONFIG_BT_CENTRAL=y -CONFIG_BT_GATT_CLIENT=y -CONFIG_BT_OBSERVER=y -CONFIG_BT_NUS=y -CONFIG_BT_NUS_CLIENT=y -CONFIG_BT_SCAN=y -CONFIG_BT_SCAN_FILTER_ENABLE=y -CONFIG_BT_SCAN_UUID_CNT=1 -CONFIG_BT_GATT_DM=y -CONFIG_HEAP_MEM_POOL_SIZE=2048 -CONFIG_BT_SCAN_ADDRESS_CNT=2 -CONFIG_WARN_EXPERIMENTAL=n - -CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n - -CONFIG_BT_USER_DATA_LEN_UPDATE=y -CONFIG_BT_BUF_ACL_RX_SIZE=251 -CONFIG_BT_BUF_ACL_TX_SIZE=251 -CONFIG_BT_L2CAP_TX_MTU=247 - -CONFIG_BT_ATT_PREPARE_COUNT=4 - -CONFIG_UDC_DRIVER_LOG_LEVEL_WRN=y -# Apply config requires deep stack, and since Agent expects response code, -# we can't just do it from the main thread -CONFIG_C2USB_UDC_MAC_THREAD_STACK_SIZE=2048 +CONFIG_DEBUG_THREAD_INFO=y +CONFIG_DEBUG=y +# re-enable these behaviors that change their default in debug builds? +CONFIG_REBOOT=y +CONFIG_KERNEL_SHELL_REBOOT_DELAY=0 +CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/device/prj.conf.overlays/ble-hid.conf b/device/prj.conf.overlays/ble-hid.conf new file mode 100644 index 00000000..04a6a119 --- /dev/null +++ b/device/prj.conf.overlays/ble-hid.conf @@ -0,0 +1,5 @@ +CONFIG_C2USB_BLUETOOTH=y +CONFIG_BT_KEYS_OVERWRITE_OLDEST=y +CONFIG_BT_KEYS_SAVE_AGING_COUNTER_ON_PAIRING=y +CONFIG_BT_MAX_CONN=4 +CONFIG_BT_MAX_PAIRED=20 diff --git a/device/prj.conf.overlays/c2usb.conf b/device/prj.conf.overlays/c2usb.conf new file mode 100644 index 00000000..1729714b --- /dev/null +++ b/device/prj.conf.overlays/c2usb.conf @@ -0,0 +1,14 @@ +CONFIG_CPP=y +CONFIG_STD_CPP20=y +CONFIG_NEWLIB_LIBC=y +CONFIG_GLIBCXX_LIBCPP=y + +# CONFIG_UDC_DRIVER=y +CONFIG_UDC_DRIVER_LOG_LEVEL_WRN=y +CONFIG_WARN_EXPERIMENTAL=n + +CONFIG_C2USB_UDC_MAC=y + +# Apply config requires deep stack, and since Agent expects response code, +# we can't just do it from the main thread +CONFIG_C2USB_UDC_MAC_THREAD_STACK_SIZE=2048 diff --git a/device/prj.conf.overlays/nrf_shared.conf b/device/prj.conf.overlays/nrf_shared.conf new file mode 100644 index 00000000..716744b8 --- /dev/null +++ b/device/prj.conf.overlays/nrf_shared.conf @@ -0,0 +1,75 @@ +# Kconfig options to be shared across nRF52-based UHK devices +CONFIG_PINCTRL=y +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y + +CONFIG_EXTRA_EXCEPTION_INFO=y +CONFIG_INIT_STACKS=y + +CONFIG_NCS_SAMPLES_DEFAULTS=y + +CONFIG_BT=y +# CONFIG_BT_DEBUG_LOG=y +CONFIG_BT_MAX_CONN=2 +CONFIG_BT_MAX_PAIRED=2 +CONFIG_BT_SMP=y +CONFIG_BT_L2CAP_TX_BUF_COUNT=5 +CONFIG_BT_PERIPHERAL=y + +CONFIG_BT_BAS=y + +CONFIG_BT_DIS=y + +CONFIG_BT_SETTINGS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y +CONFIG_NVS=y +CONFIG_SETTINGS=y + +CONFIG_SERIAL=y + +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_UART_LINE_CTRL=y +CONFIG_UART_ASYNC_API=y + +CONFIG_SHELL=y +CONFIG_SHELL_VT100_COMMANDS=y +CONFIG_SHELL_VT100_COLORS=y +CONFIG_BT_SHELL=y +CONFIG_SHELL_BT_NUS=y +CONFIG_HWINFO=y +CONFIG_HWINFO_SHELL=y +CONFIG_I2C=y +CONFIG_I2C_SHELL=y +CONFIG_STREAM_FLASH=y +CONFIG_SETTINGS_SHELL=y +CONFIG_SHELL_BACKENDS=y + +CONFIG_SHELL_BACKEND_SERIAL=y +CONFIG_BUILD_OUTPUT_HEX=y + +CONFIG_BT_CENTRAL=y +CONFIG_BT_GATT_CLIENT=y +CONFIG_BT_OBSERVER=y +CONFIG_BT_NUS=y +CONFIG_BT_NUS_CLIENT=y +CONFIG_BT_SCAN=y +CONFIG_BT_SCAN_FILTER_ENABLE=y +CONFIG_BT_SCAN_UUID_CNT=1 +CONFIG_BT_GATT_DM=y +CONFIG_HEAP_MEM_POOL_SIZE=2048 +CONFIG_BT_SCAN_ADDRESS_CNT=2 + +CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n + +CONFIG_BT_USER_DATA_LEN_UPDATE=y +CONFIG_BT_BUF_ACL_RX_SIZE=251 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_L2CAP_TX_MTU=247 + +CONFIG_BT_ATT_PREPARE_COUNT=4 + +CONFIG_BOOTLOADER_MCUBOOT=y diff --git a/device/prj.conf.overlays/uhk-80-right.prj.conf b/device/prj.conf.overlays/uhk-80-right.prj.conf deleted file mode 100644 index 0b5cdaee..00000000 --- a/device/prj.conf.overlays/uhk-80-right.prj.conf +++ /dev/null @@ -1,12 +0,0 @@ -# DEVICE_ID_UHK80_RIGHT -CONFIG_C2USB_BLUETOOTH=y -CONFIG_BT_KEYS_OVERWRITE_OLDEST=y -CONFIG_BT_KEYS_SAVE_AGING_COUNTER_ON_PAIRING=y - -CONFIG_SPI=y -CONFIG_UART_1_ASYNC=y -CONFIG_UART_1_NRF_HW_ASYNC=y -CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1 -CONFIG_ADC=y -CONFIG_UDC_NRF=y -CONFIG_BOOTLOADER_MCUBOOT=y diff --git a/device/prj.conf.overlays/uhk-80-left.prj.conf b/device/prj.conf.overlays/uhk-80.conf similarity index 62% rename from device/prj.conf.overlays/uhk-80-left.prj.conf rename to device/prj.conf.overlays/uhk-80.conf index 7e85827b..1e8fbef1 100644 --- a/device/prj.conf.overlays/uhk-80-left.prj.conf +++ b/device/prj.conf.overlays/uhk-80.conf @@ -1,8 +1,5 @@ -# DEVICE_ID_UHK80_LEFT CONFIG_SPI=y CONFIG_UART_1_ASYNC=y CONFIG_UART_1_NRF_HW_ASYNC=y CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1 CONFIG_ADC=y -CONFIG_UDC_NRF=y -CONFIG_BOOTLOADER_MCUBOOT=y diff --git a/device/prj.conf.overlays/uhk-dongle.prj.conf b/device/prj.conf.overlays/uhk-dongle.prj.conf deleted file mode 100644 index f81a0b0e..00000000 --- a/device/prj.conf.overlays/uhk-dongle.prj.conf +++ /dev/null @@ -1,5 +0,0 @@ -# DEVICE_ID_UHK_DONGLE -CONFIG_ADC=n -CONFIG_PWM=y -CONFIG_UDC_NRF=y -CONFIG_BOOTLOADER_MCUBOOT=y diff --git a/device/prj_release.conf b/device/prj_release.conf new file mode 100644 index 00000000..65fbfc68 --- /dev/null +++ b/device/prj_release.conf @@ -0,0 +1,5 @@ +# settings only for release build +CONFIG_USE_SEGGER_RTT=y +CONFIG_RTT_CONSOLE=y +CONFIG_SHELL_BACKEND_RTT=y +# CONFIG_LOG_BACKEND_RTT=y diff --git a/scripts/make-release.mjs b/scripts/make-release.mjs index a6e6d176..04c31a72 100755 --- a/scripts/make-release.mjs +++ b/scripts/make-release.mjs @@ -15,6 +15,21 @@ shell.config.verbose = true; const gitInfo = getGitInfo(); const packageJson = readPackageJson(); +function getZephyrBuildParameters(buildTarget) { + let cmakePresetsFile = fs.readFileSync(`${gitInfo.root}/device/CMakePresets.json`, 'utf8'); + cmakePresetsFile = cmakePresetsFile.replace(/\$\{sourceDir\}/g, `${gitInfo.root}/device`); + const cmakePresets = JSON.parse(cmakePresetsFile); + const configurePresets = cmakePresets.configurePresets; + + for (const preset of configurePresets) { + if (preset.cacheVariables.BOARD === buildTarget.name) { + return preset.cacheVariables; + } + } + console.error(`Unknown Zephyr build target: ${buildTarget.name}`); + process.exit(1); +} + function build(buildTarget, step) { const buildDir = path.dirname(`${__dirname}/../${buildTarget.source}`); if (step === 1) { @@ -29,6 +44,8 @@ function build(buildTarget, step) { shell.exec(`cd ${buildDir}/..; make -j8`); } } else if (buildTarget.platform === 'nordic') { + const cacheVariables = getZephyrBuildParameters(buildTarget); + shell.exec(`ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build \ --build-dir ${gitInfo.root}/device/build/${buildTarget.name} \ ${gitInfo.root}/device \ @@ -36,10 +53,11 @@ function build(buildTarget, step) { --board ${buildTarget.name} \ --no-sysbuild \ -- \ - -DNCS_TOOLCHAIN_VERSION=NONE \ - -DEXTRA_CONF_FILE=prj.conf.overlays/${buildTarget.name}.prj.conf \ + -DNCS_TOOLCHAIN_VERSION=${cacheVariables.NCS_TOOLCHAIN_VERSION} \ + -DCONF_FILE=${gitInfo.root}/device/prj_release.conf \ + -DEXTRA_CONF_FILE="${cacheVariables.EXTRA_CONF_FILE}" \ -DBOARD_ROOT=${gitInfo.root} \ - -Dmcuboot_OVERLAY_CONFIG="${gitInfo.root}/device/child_image/mcuboot.conf;${gitInfo.root}/device/child_image/${buildTarget.name}.mcuboot.conf"` + -Dmcuboot_OVERLAY_CONFIG="${cacheVariables.mcuboot_OVERLAY_CONFIG}"` ); } } From d59dc8fb2396e48ce4da41359eb1509c06defd74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Thu, 25 Jul 2024 00:09:32 +0200 Subject: [PATCH 05/33] Bump to NCS 2.7.0 --- .vscode/settings.json | 4 ++-- README.md | 2 +- west.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 311ccca9..f510a7a7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { - "nrf-connect.toolchain.path": "${nrf-connect.toolchain:2.6.1}", - "nrf-connect.topdir": "${nrf-connect.sdk:2.4.1}", + "nrf-connect.toolchain.path": "${nrf-connect.toolchain:2.7.0}", + "nrf-connect.topdir": "${nrf-connect.sdk:2.7.0}", "nrf-connect.applications": [ "${workspaceFolder}/device" ], diff --git a/README.md b/README.md index 0403e1d3..d8daa793 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Then, depending whether you want a full IDE experience or just minimal tools for - If the `build.sh` doesn't suit you, then launch the nrfutil shell: ``` - nrfutil toolchain-manager launch --shell --ncs-version v2.6.1 + nrfutil toolchain-manager launch --shell --ncs-version v2.7.0 ``` - In the shell, you can build (e.g.) uhk-80-left as follows: diff --git a/west.yml b/west.yml index 29462da0..acca67ff 100644 --- a/west.yml +++ b/west.yml @@ -12,7 +12,7 @@ manifest: - name: sdk-nrf remote: sdk path: nrf - revision: v2.6.1 + revision: v2.7.0 import: path-prefix: nrfconnect clone-depth: 1 From ad9689c73a001f741057982ddeab09eaab1e7daa Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sat, 26 Oct 2024 23:36:06 +0200 Subject: [PATCH 06/33] boards: update to hardware model 2 Step 1: use python script to update each board python3 ../zephyr/scripts/utils/board_v1_to_v2.py -b uhk-dongle -g arm -v ugl -s nrf52840 --board-root . Step 2: replace dashes to underscores in Kconfig. --- boards/arm/uhk-80-left/Kconfig.defconfig | 3 --- boards/arm/uhk-80-left/Kconfig.uhk-80-left | 5 +++++ boards/arm/uhk-80-left/board.yml | 5 +++++ boards/arm/uhk-80-left/uhk-80-left.yaml | 1 + boards/arm/uhk-80-left/uhk-80-left_defconfig | 4 ---- boards/arm/uhk-80-right/Kconfig.defconfig | 3 --- boards/arm/uhk-80-right/Kconfig.uhk-80-right | 5 +++++ boards/arm/uhk-80-right/board.yml | 5 +++++ boards/arm/uhk-80-right/uhk-80-right.yaml | 1 + boards/arm/uhk-80-right/uhk-80-right_defconfig | 4 ---- boards/arm/uhk-dongle/Kconfig.defconfig | 3 --- boards/arm/uhk-dongle/Kconfig.uhk-dongle | 5 +++++ boards/arm/uhk-dongle/board.yml | 5 +++++ boards/arm/uhk-dongle/uhk-dongle.yaml | 1 + boards/arm/uhk-dongle/uhk-dongle_defconfig | 4 ---- 15 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 boards/arm/uhk-80-left/Kconfig.uhk-80-left create mode 100644 boards/arm/uhk-80-left/board.yml create mode 100644 boards/arm/uhk-80-right/Kconfig.uhk-80-right create mode 100644 boards/arm/uhk-80-right/board.yml create mode 100644 boards/arm/uhk-dongle/Kconfig.uhk-dongle create mode 100644 boards/arm/uhk-dongle/board.yml diff --git a/boards/arm/uhk-80-left/Kconfig.defconfig b/boards/arm/uhk-80-left/Kconfig.defconfig index ccf4002a..402accf4 100644 --- a/boards/arm/uhk-80-left/Kconfig.defconfig +++ b/boards/arm/uhk-80-left/Kconfig.defconfig @@ -2,9 +2,6 @@ # used for both zephyr and mcuboot -> no custom kconfig symbols here if BOARD_UHK_80_LEFT -config BOARD - default "uhk-80-left" - if SHELL_BACKEND_RTT config SHELL_PROMPT_RTT default "uhk80:left$ " diff --git a/boards/arm/uhk-80-left/Kconfig.uhk-80-left b/boards/arm/uhk-80-left/Kconfig.uhk-80-left new file mode 100644 index 00000000..2ba45af0 --- /dev/null +++ b/boards/arm/uhk-80-left/Kconfig.uhk-80-left @@ -0,0 +1,5 @@ +# Copyright (c) 2023 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_UHK_80_LEFT + select SOC_NRF52840_QIAA diff --git a/boards/arm/uhk-80-left/board.yml b/boards/arm/uhk-80-left/board.yml new file mode 100644 index 00000000..3280b562 --- /dev/null +++ b/boards/arm/uhk-80-left/board.yml @@ -0,0 +1,5 @@ +board: + name: uhk-80-left + vendor: ugl + socs: + - name: nrf52840 diff --git a/boards/arm/uhk-80-left/uhk-80-left.yaml b/boards/arm/uhk-80-left/uhk-80-left.yaml index b7cb42d4..537bf09f 100644 --- a/boards/arm/uhk-80-left/uhk-80-left.yaml +++ b/boards/arm/uhk-80-left/uhk-80-left.yaml @@ -3,6 +3,7 @@ identifier: uhk-80-left name: UHK 80 left +vendor: ugl type: mcu arch: arm ram: 256 diff --git a/boards/arm/uhk-80-left/uhk-80-left_defconfig b/boards/arm/uhk-80-left/uhk-80-left_defconfig index 3ff77a65..4a831111 100644 --- a/boards/arm/uhk-80-left/uhk-80-left_defconfig +++ b/boards/arm/uhk-80-left/uhk-80-left_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 # used for both zephyr and mcuboot -> only shared kconfig symbols here -CONFIG_SOC_SERIES_NRF52X=y -CONFIG_SOC_NRF52840_QIAA=y -CONFIG_BOARD_UHK_80_LEFT=y - # Enable MPU CONFIG_ARM_MPU=y diff --git a/boards/arm/uhk-80-right/Kconfig.defconfig b/boards/arm/uhk-80-right/Kconfig.defconfig index 615a975d..cdd77c30 100644 --- a/boards/arm/uhk-80-right/Kconfig.defconfig +++ b/boards/arm/uhk-80-right/Kconfig.defconfig @@ -2,9 +2,6 @@ # used for both zephyr and mcuboot -> no custom kconfig symbols here if BOARD_UHK_80_RIGHT -config BOARD - default "uhk-80-right" - if SHELL_BACKEND_RTT config SHELL_PROMPT_RTT default "uhk80:right$ " diff --git a/boards/arm/uhk-80-right/Kconfig.uhk-80-right b/boards/arm/uhk-80-right/Kconfig.uhk-80-right new file mode 100644 index 00000000..639e4f6c --- /dev/null +++ b/boards/arm/uhk-80-right/Kconfig.uhk-80-right @@ -0,0 +1,5 @@ +# Copyright (c) 2023 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_UHK_80_RIGHT + select SOC_NRF52840_QIAA diff --git a/boards/arm/uhk-80-right/board.yml b/boards/arm/uhk-80-right/board.yml new file mode 100644 index 00000000..c7335f7e --- /dev/null +++ b/boards/arm/uhk-80-right/board.yml @@ -0,0 +1,5 @@ +board: + name: uhk-80-right + vendor: ugl + socs: + - name: nrf52840 diff --git a/boards/arm/uhk-80-right/uhk-80-right.yaml b/boards/arm/uhk-80-right/uhk-80-right.yaml index 82a54f1e..6c1ced07 100644 --- a/boards/arm/uhk-80-right/uhk-80-right.yaml +++ b/boards/arm/uhk-80-right/uhk-80-right.yaml @@ -3,6 +3,7 @@ identifier: uhk-80-right name: UHK 80 right +vendor: ugl type: mcu arch: arm ram: 256 diff --git a/boards/arm/uhk-80-right/uhk-80-right_defconfig b/boards/arm/uhk-80-right/uhk-80-right_defconfig index 6f7bd9e0..4a831111 100644 --- a/boards/arm/uhk-80-right/uhk-80-right_defconfig +++ b/boards/arm/uhk-80-right/uhk-80-right_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 # used for both zephyr and mcuboot -> only shared kconfig symbols here -CONFIG_SOC_SERIES_NRF52X=y -CONFIG_SOC_NRF52840_QIAA=y -CONFIG_BOARD_UHK_80_RIGHT=y - # Enable MPU CONFIG_ARM_MPU=y diff --git a/boards/arm/uhk-dongle/Kconfig.defconfig b/boards/arm/uhk-dongle/Kconfig.defconfig index a8652e98..ff53103c 100644 --- a/boards/arm/uhk-dongle/Kconfig.defconfig +++ b/boards/arm/uhk-dongle/Kconfig.defconfig @@ -2,9 +2,6 @@ # used for both zephyr and mcuboot -> no custom kconfig symbols here if BOARD_UHK_DONGLE -config BOARD - default "uhk-dongle" - if SHELL_BACKEND_RTT config SHELL_PROMPT_RTT default "uhk-dongle$ " diff --git a/boards/arm/uhk-dongle/Kconfig.uhk-dongle b/boards/arm/uhk-dongle/Kconfig.uhk-dongle new file mode 100644 index 00000000..fe9bc1ab --- /dev/null +++ b/boards/arm/uhk-dongle/Kconfig.uhk-dongle @@ -0,0 +1,5 @@ +# Copyright (c) 2023 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_UHK_DONGLE + select SOC_NRF52840_QIAA diff --git a/boards/arm/uhk-dongle/board.yml b/boards/arm/uhk-dongle/board.yml new file mode 100644 index 00000000..bcb42ea4 --- /dev/null +++ b/boards/arm/uhk-dongle/board.yml @@ -0,0 +1,5 @@ +board: + name: uhk-dongle + vendor: ugl + socs: + - name: nrf52840 diff --git a/boards/arm/uhk-dongle/uhk-dongle.yaml b/boards/arm/uhk-dongle/uhk-dongle.yaml index a9470e93..a3bced58 100644 --- a/boards/arm/uhk-dongle/uhk-dongle.yaml +++ b/boards/arm/uhk-dongle/uhk-dongle.yaml @@ -3,6 +3,7 @@ identifier: uhk-dongle name: UHK dongle +vendor: ugl type: mcu arch: arm ram: 256 diff --git a/boards/arm/uhk-dongle/uhk-dongle_defconfig b/boards/arm/uhk-dongle/uhk-dongle_defconfig index 9b11be8e..167ab177 100644 --- a/boards/arm/uhk-dongle/uhk-dongle_defconfig +++ b/boards/arm/uhk-dongle/uhk-dongle_defconfig @@ -1,9 +1,5 @@ # SPDX-License-Identifier: Apache-2.0 # used for both zephyr and mcuboot -> only shared kconfig symbols here -CONFIG_SOC_SERIES_NRF52X=y -CONFIG_SOC_NRF52840_QIAA=y -CONFIG_BOARD_UHK_DONGLE=y - # Enable MPU CONFIG_ARM_MPU=y From a0e61c5ac3bda96b56800a4db2a48dc63f58fb01 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sun, 27 Oct 2024 00:34:52 +0200 Subject: [PATCH 07/33] zephyr/ncs: fix hardware model 2 with out-of-tree boards --- zephyr/module.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 zephyr/module.yml diff --git a/zephyr/module.yml b/zephyr/module.yml new file mode 100644 index 00000000..f205a997 --- /dev/null +++ b/zephyr/module.yml @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: Apache-2.0 + +build: + settings: + # hardware model 2 doesn't work with out-of-tree board roots without this: + board_root: . From e7205b0f965fb4a2217c7fc0a2e1e2d42536ebfa Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sun, 27 Oct 2024 00:50:49 +0200 Subject: [PATCH 08/33] bugfixing to compile for new NCS --- device/prj.conf.overlays/uhk-80.conf | 1 + .../0001-Remove-mcuboot-build-warnings.patch | 28 ++----------------- 2 files changed, 3 insertions(+), 26 deletions(-) diff --git a/device/prj.conf.overlays/uhk-80.conf b/device/prj.conf.overlays/uhk-80.conf index 1e8fbef1..9476b19b 100644 --- a/device/prj.conf.overlays/uhk-80.conf +++ b/device/prj.conf.overlays/uhk-80.conf @@ -2,4 +2,5 @@ CONFIG_SPI=y CONFIG_UART_1_ASYNC=y CONFIG_UART_1_NRF_HW_ASYNC=y CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1 +CONFIG_UART_1_INTERRUPT_DRIVEN=n CONFIG_ADC=y diff --git a/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch b/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch index c3e57486..89f69034 100644 --- a/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch +++ b/patches/sdk-nrf/0001-Remove-mcuboot-build-warnings.patch @@ -1,36 +1,12 @@ From 9f6342a09c416553381e4d478c894903ead17566 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 9 Jul 2024 22:38:48 +0200 -Subject: [PATCH] Remove mcuboot build warnings +Subject: [PATCH] Remove mcuboot default key build warning --- - cmake/partition_manager.cmake | 12 ------------ modules/mcuboot/CMakeLists.txt | 7 ------- - 2 files changed, 19 deletions(-) + 1 files changed, 7 deletions(-) -diff --git a/cmake/partition_manager.cmake b/cmake/partition_manager.cmake -index a45650a2d..292dd9c3f 100644 ---- a/cmake/partition_manager.cmake -+++ b/cmake/partition_manager.cmake -@@ -76,18 +76,6 @@ endif() - - if (NOT static_configuration AND - (CONFIG_BOOTLOADER_MCUBOOT OR CONFIG_SECURE_BOOT)) -- message(WARNING " -- --------------------------------------------------------------------- -- --- WARNING: Using a bootloader without pm_static.yml. --- -- --- There are cases where a deployed product can consist of --- -- --- multiple images, and only a subset of these images can be --- -- --- upgraded through a firmware update mechanism. In such cases, --- -- --- the upgradable images must have partitions that are static --- -- --- and are matching the partition map used by the bootloader --- -- --- programmed onto the device. --- -- --------------------------------------------------------------------- -- \n" -- ) - endif() - - diff --git a/modules/mcuboot/CMakeLists.txt b/modules/mcuboot/CMakeLists.txt index 5ec2643d7..70c706d52 100644 --- a/modules/mcuboot/CMakeLists.txt From f181a5d64d0d4d2748225edc79939f121a707582 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sun, 27 Oct 2024 20:59:11 +0100 Subject: [PATCH 09/33] boards: rename directory from arm arch to vendor --- boards/{arm => ugl}/shared.dtsi | 0 boards/{arm => ugl}/uhk-60-right/Kconfig.board | 0 boards/{arm => ugl}/uhk-60-right/Kconfig.defconfig | 0 boards/{arm => ugl}/uhk-60-right/board.cmake | 0 boards/{arm => ugl}/uhk-60-right/uhk-60-right.dts | 0 boards/{arm => ugl}/uhk-60-right/uhk-60-right.yaml | 0 boards/{arm => ugl}/uhk-60-right/uhk-60-right_defconfig | 0 boards/{arm => ugl}/uhk-80-left/Kconfig.board | 0 boards/{arm => ugl}/uhk-80-left/Kconfig.defconfig | 0 boards/{arm => ugl}/uhk-80-left/Kconfig.uhk-80-left | 0 boards/{arm => ugl}/uhk-80-left/board.cmake | 0 boards/{arm => ugl}/uhk-80-left/board.yml | 0 boards/{arm => ugl}/uhk-80-left/pre_dt_board.cmake | 0 boards/{arm => ugl}/uhk-80-left/uhk-80-left.dts | 0 boards/{arm => ugl}/uhk-80-left/uhk-80-left.yaml | 0 boards/{arm => ugl}/uhk-80-left/uhk-80-left_defconfig | 0 boards/{arm => ugl}/uhk-80-right/Kconfig.board | 0 boards/{arm => ugl}/uhk-80-right/Kconfig.defconfig | 0 boards/{arm => ugl}/uhk-80-right/Kconfig.uhk-80-right | 0 boards/{arm => ugl}/uhk-80-right/board.cmake | 0 boards/{arm => ugl}/uhk-80-right/board.yml | 0 boards/{arm => ugl}/uhk-80-right/pre_dt_board.cmake | 0 boards/{arm => ugl}/uhk-80-right/uhk-80-right.dts | 0 boards/{arm => ugl}/uhk-80-right/uhk-80-right.yaml | 0 boards/{arm => ugl}/uhk-80-right/uhk-80-right_defconfig | 0 boards/{arm => ugl}/uhk-dongle/Kconfig.board | 0 boards/{arm => ugl}/uhk-dongle/Kconfig.defconfig | 0 boards/{arm => ugl}/uhk-dongle/Kconfig.uhk-dongle | 0 boards/{arm => ugl}/uhk-dongle/board.cmake | 0 boards/{arm => ugl}/uhk-dongle/board.yml | 0 boards/{arm => ugl}/uhk-dongle/pre_dt_board.cmake | 0 boards/{arm => ugl}/uhk-dongle/uhk-dongle.dts | 0 boards/{arm => ugl}/uhk-dongle/uhk-dongle.yaml | 0 boards/{arm => ugl}/uhk-dongle/uhk-dongle_defconfig | 0 34 files changed, 0 insertions(+), 0 deletions(-) rename boards/{arm => ugl}/shared.dtsi (100%) rename boards/{arm => ugl}/uhk-60-right/Kconfig.board (100%) rename boards/{arm => ugl}/uhk-60-right/Kconfig.defconfig (100%) rename boards/{arm => ugl}/uhk-60-right/board.cmake (100%) rename boards/{arm => ugl}/uhk-60-right/uhk-60-right.dts (100%) rename boards/{arm => ugl}/uhk-60-right/uhk-60-right.yaml (100%) rename boards/{arm => ugl}/uhk-60-right/uhk-60-right_defconfig (100%) rename boards/{arm => ugl}/uhk-80-left/Kconfig.board (100%) rename boards/{arm => ugl}/uhk-80-left/Kconfig.defconfig (100%) rename boards/{arm => ugl}/uhk-80-left/Kconfig.uhk-80-left (100%) rename boards/{arm => ugl}/uhk-80-left/board.cmake (100%) rename boards/{arm => ugl}/uhk-80-left/board.yml (100%) rename boards/{arm => ugl}/uhk-80-left/pre_dt_board.cmake (100%) rename boards/{arm => ugl}/uhk-80-left/uhk-80-left.dts (100%) rename boards/{arm => ugl}/uhk-80-left/uhk-80-left.yaml (100%) rename boards/{arm => ugl}/uhk-80-left/uhk-80-left_defconfig (100%) rename boards/{arm => ugl}/uhk-80-right/Kconfig.board (100%) rename boards/{arm => ugl}/uhk-80-right/Kconfig.defconfig (100%) rename boards/{arm => ugl}/uhk-80-right/Kconfig.uhk-80-right (100%) rename boards/{arm => ugl}/uhk-80-right/board.cmake (100%) rename boards/{arm => ugl}/uhk-80-right/board.yml (100%) rename boards/{arm => ugl}/uhk-80-right/pre_dt_board.cmake (100%) rename boards/{arm => ugl}/uhk-80-right/uhk-80-right.dts (100%) rename boards/{arm => ugl}/uhk-80-right/uhk-80-right.yaml (100%) rename boards/{arm => ugl}/uhk-80-right/uhk-80-right_defconfig (100%) rename boards/{arm => ugl}/uhk-dongle/Kconfig.board (100%) rename boards/{arm => ugl}/uhk-dongle/Kconfig.defconfig (100%) rename boards/{arm => ugl}/uhk-dongle/Kconfig.uhk-dongle (100%) rename boards/{arm => ugl}/uhk-dongle/board.cmake (100%) rename boards/{arm => ugl}/uhk-dongle/board.yml (100%) rename boards/{arm => ugl}/uhk-dongle/pre_dt_board.cmake (100%) rename boards/{arm => ugl}/uhk-dongle/uhk-dongle.dts (100%) rename boards/{arm => ugl}/uhk-dongle/uhk-dongle.yaml (100%) rename boards/{arm => ugl}/uhk-dongle/uhk-dongle_defconfig (100%) diff --git a/boards/arm/shared.dtsi b/boards/ugl/shared.dtsi similarity index 100% rename from boards/arm/shared.dtsi rename to boards/ugl/shared.dtsi diff --git a/boards/arm/uhk-60-right/Kconfig.board b/boards/ugl/uhk-60-right/Kconfig.board similarity index 100% rename from boards/arm/uhk-60-right/Kconfig.board rename to boards/ugl/uhk-60-right/Kconfig.board diff --git a/boards/arm/uhk-60-right/Kconfig.defconfig b/boards/ugl/uhk-60-right/Kconfig.defconfig similarity index 100% rename from boards/arm/uhk-60-right/Kconfig.defconfig rename to boards/ugl/uhk-60-right/Kconfig.defconfig diff --git a/boards/arm/uhk-60-right/board.cmake b/boards/ugl/uhk-60-right/board.cmake similarity index 100% rename from boards/arm/uhk-60-right/board.cmake rename to boards/ugl/uhk-60-right/board.cmake diff --git a/boards/arm/uhk-60-right/uhk-60-right.dts b/boards/ugl/uhk-60-right/uhk-60-right.dts similarity index 100% rename from boards/arm/uhk-60-right/uhk-60-right.dts rename to boards/ugl/uhk-60-right/uhk-60-right.dts diff --git a/boards/arm/uhk-60-right/uhk-60-right.yaml b/boards/ugl/uhk-60-right/uhk-60-right.yaml similarity index 100% rename from boards/arm/uhk-60-right/uhk-60-right.yaml rename to boards/ugl/uhk-60-right/uhk-60-right.yaml diff --git a/boards/arm/uhk-60-right/uhk-60-right_defconfig b/boards/ugl/uhk-60-right/uhk-60-right_defconfig similarity index 100% rename from boards/arm/uhk-60-right/uhk-60-right_defconfig rename to boards/ugl/uhk-60-right/uhk-60-right_defconfig diff --git a/boards/arm/uhk-80-left/Kconfig.board b/boards/ugl/uhk-80-left/Kconfig.board similarity index 100% rename from boards/arm/uhk-80-left/Kconfig.board rename to boards/ugl/uhk-80-left/Kconfig.board diff --git a/boards/arm/uhk-80-left/Kconfig.defconfig b/boards/ugl/uhk-80-left/Kconfig.defconfig similarity index 100% rename from boards/arm/uhk-80-left/Kconfig.defconfig rename to boards/ugl/uhk-80-left/Kconfig.defconfig diff --git a/boards/arm/uhk-80-left/Kconfig.uhk-80-left b/boards/ugl/uhk-80-left/Kconfig.uhk-80-left similarity index 100% rename from boards/arm/uhk-80-left/Kconfig.uhk-80-left rename to boards/ugl/uhk-80-left/Kconfig.uhk-80-left diff --git a/boards/arm/uhk-80-left/board.cmake b/boards/ugl/uhk-80-left/board.cmake similarity index 100% rename from boards/arm/uhk-80-left/board.cmake rename to boards/ugl/uhk-80-left/board.cmake diff --git a/boards/arm/uhk-80-left/board.yml b/boards/ugl/uhk-80-left/board.yml similarity index 100% rename from boards/arm/uhk-80-left/board.yml rename to boards/ugl/uhk-80-left/board.yml diff --git a/boards/arm/uhk-80-left/pre_dt_board.cmake b/boards/ugl/uhk-80-left/pre_dt_board.cmake similarity index 100% rename from boards/arm/uhk-80-left/pre_dt_board.cmake rename to boards/ugl/uhk-80-left/pre_dt_board.cmake diff --git a/boards/arm/uhk-80-left/uhk-80-left.dts b/boards/ugl/uhk-80-left/uhk-80-left.dts similarity index 100% rename from boards/arm/uhk-80-left/uhk-80-left.dts rename to boards/ugl/uhk-80-left/uhk-80-left.dts diff --git a/boards/arm/uhk-80-left/uhk-80-left.yaml b/boards/ugl/uhk-80-left/uhk-80-left.yaml similarity index 100% rename from boards/arm/uhk-80-left/uhk-80-left.yaml rename to boards/ugl/uhk-80-left/uhk-80-left.yaml diff --git a/boards/arm/uhk-80-left/uhk-80-left_defconfig b/boards/ugl/uhk-80-left/uhk-80-left_defconfig similarity index 100% rename from boards/arm/uhk-80-left/uhk-80-left_defconfig rename to boards/ugl/uhk-80-left/uhk-80-left_defconfig diff --git a/boards/arm/uhk-80-right/Kconfig.board b/boards/ugl/uhk-80-right/Kconfig.board similarity index 100% rename from boards/arm/uhk-80-right/Kconfig.board rename to boards/ugl/uhk-80-right/Kconfig.board diff --git a/boards/arm/uhk-80-right/Kconfig.defconfig b/boards/ugl/uhk-80-right/Kconfig.defconfig similarity index 100% rename from boards/arm/uhk-80-right/Kconfig.defconfig rename to boards/ugl/uhk-80-right/Kconfig.defconfig diff --git a/boards/arm/uhk-80-right/Kconfig.uhk-80-right b/boards/ugl/uhk-80-right/Kconfig.uhk-80-right similarity index 100% rename from boards/arm/uhk-80-right/Kconfig.uhk-80-right rename to boards/ugl/uhk-80-right/Kconfig.uhk-80-right diff --git a/boards/arm/uhk-80-right/board.cmake b/boards/ugl/uhk-80-right/board.cmake similarity index 100% rename from boards/arm/uhk-80-right/board.cmake rename to boards/ugl/uhk-80-right/board.cmake diff --git a/boards/arm/uhk-80-right/board.yml b/boards/ugl/uhk-80-right/board.yml similarity index 100% rename from boards/arm/uhk-80-right/board.yml rename to boards/ugl/uhk-80-right/board.yml diff --git a/boards/arm/uhk-80-right/pre_dt_board.cmake b/boards/ugl/uhk-80-right/pre_dt_board.cmake similarity index 100% rename from boards/arm/uhk-80-right/pre_dt_board.cmake rename to boards/ugl/uhk-80-right/pre_dt_board.cmake diff --git a/boards/arm/uhk-80-right/uhk-80-right.dts b/boards/ugl/uhk-80-right/uhk-80-right.dts similarity index 100% rename from boards/arm/uhk-80-right/uhk-80-right.dts rename to boards/ugl/uhk-80-right/uhk-80-right.dts diff --git a/boards/arm/uhk-80-right/uhk-80-right.yaml b/boards/ugl/uhk-80-right/uhk-80-right.yaml similarity index 100% rename from boards/arm/uhk-80-right/uhk-80-right.yaml rename to boards/ugl/uhk-80-right/uhk-80-right.yaml diff --git a/boards/arm/uhk-80-right/uhk-80-right_defconfig b/boards/ugl/uhk-80-right/uhk-80-right_defconfig similarity index 100% rename from boards/arm/uhk-80-right/uhk-80-right_defconfig rename to boards/ugl/uhk-80-right/uhk-80-right_defconfig diff --git a/boards/arm/uhk-dongle/Kconfig.board b/boards/ugl/uhk-dongle/Kconfig.board similarity index 100% rename from boards/arm/uhk-dongle/Kconfig.board rename to boards/ugl/uhk-dongle/Kconfig.board diff --git a/boards/arm/uhk-dongle/Kconfig.defconfig b/boards/ugl/uhk-dongle/Kconfig.defconfig similarity index 100% rename from boards/arm/uhk-dongle/Kconfig.defconfig rename to boards/ugl/uhk-dongle/Kconfig.defconfig diff --git a/boards/arm/uhk-dongle/Kconfig.uhk-dongle b/boards/ugl/uhk-dongle/Kconfig.uhk-dongle similarity index 100% rename from boards/arm/uhk-dongle/Kconfig.uhk-dongle rename to boards/ugl/uhk-dongle/Kconfig.uhk-dongle diff --git a/boards/arm/uhk-dongle/board.cmake b/boards/ugl/uhk-dongle/board.cmake similarity index 100% rename from boards/arm/uhk-dongle/board.cmake rename to boards/ugl/uhk-dongle/board.cmake diff --git a/boards/arm/uhk-dongle/board.yml b/boards/ugl/uhk-dongle/board.yml similarity index 100% rename from boards/arm/uhk-dongle/board.yml rename to boards/ugl/uhk-dongle/board.yml diff --git a/boards/arm/uhk-dongle/pre_dt_board.cmake b/boards/ugl/uhk-dongle/pre_dt_board.cmake similarity index 100% rename from boards/arm/uhk-dongle/pre_dt_board.cmake rename to boards/ugl/uhk-dongle/pre_dt_board.cmake diff --git a/boards/arm/uhk-dongle/uhk-dongle.dts b/boards/ugl/uhk-dongle/uhk-dongle.dts similarity index 100% rename from boards/arm/uhk-dongle/uhk-dongle.dts rename to boards/ugl/uhk-dongle/uhk-dongle.dts diff --git a/boards/arm/uhk-dongle/uhk-dongle.yaml b/boards/ugl/uhk-dongle/uhk-dongle.yaml similarity index 100% rename from boards/arm/uhk-dongle/uhk-dongle.yaml rename to boards/ugl/uhk-dongle/uhk-dongle.yaml diff --git a/boards/arm/uhk-dongle/uhk-dongle_defconfig b/boards/ugl/uhk-dongle/uhk-dongle_defconfig similarity index 100% rename from boards/arm/uhk-dongle/uhk-dongle_defconfig rename to boards/ugl/uhk-dongle/uhk-dongle_defconfig From 0427d8a7fa9bc7640436e9e67491ada14a479e0a Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Mon, 28 Oct 2024 22:00:24 +0100 Subject: [PATCH 10/33] zephyr: patch UGL boards into the tree --- ...-link-ugl-board-directory-as-in-tree.patch | 21 +++++++++++++++++++ zephyr/module.yml | 6 ------ 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch delete mode 100644 zephyr/module.yml diff --git a/patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch b/patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch new file mode 100644 index 00000000..d1136cb2 --- /dev/null +++ b/patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch @@ -0,0 +1,21 @@ +From 9216faab94006e1f77fb64a3a4b1d73d711a41e6 Mon Sep 17 00:00:00 2001 +From: Benedek Kupper +Date: Mon, 28 Oct 2024 21:58:36 +0100 +Subject: [PATCH] boards: link ugl board directory as in-tree + +--- + boards/ugl | 1 + + 1 file changed, 1 insertion(+) + create mode 120000 boards/ugl + +diff --git a/boards/ugl b/boards/ugl +new file mode 120000 +index 00000000000..a497eea33b5 +--- /dev/null ++++ b/boards/ugl +@@ -0,0 +1 @@ ++../../firmware-uhk80/boards/ugl +\ No newline at end of file +-- +2.44.0 + diff --git a/zephyr/module.yml b/zephyr/module.yml deleted file mode 100644 index f205a997..00000000 --- a/zephyr/module.yml +++ /dev/null @@ -1,6 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -build: - settings: - # hardware model 2 doesn't work with out-of-tree board roots without this: - board_root: . From b43bb2897ab4878cf398bda008f623a7d9ad16f0 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sat, 9 Nov 2024 22:17:17 +0100 Subject: [PATCH 11/33] add tasks for building UHK 80 firmwares --- .vscode/tasks.json | 178 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 2 files changed, 176 insertions(+), 3 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 473e9a06..400ee865 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -5,15 +5,187 @@ "label": "Build UHK 60 v2 firmware", "type": "shell", "command": "make", - "args": ["${command:cpptools.activeConfigName}"], + "args": [ + "${command:cpptools.activeConfigName}" + ], "options": { "cwd": "${workspaceFolder}/right/uhk60v2" }, - "problemMatcher": ["$gcc"], + "problemMatcher": [ + "$gcc" + ], "group": { "kind": "build", "isDefault": true } }, + { + "label": "Generate UHK versions", + "type": "shell", + "command": "node", + "args": [ + "scripts/generate-versions.mjs" + ], + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": [], + "group": { + "kind": "none", + "isDefault": true + } + }, + { + "label": "West update", + "group": { + "kind": "none", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}" + }, + "type": "process", + "command": "nrfutil", + "args": [ + "toolchain-manager", + "launch", + "--shell", + "--", + "west", + "update" + ] + }, + { + "label": "West patch", + "group": { + "kind": "none", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}" + }, + "type": "process", + "command": "nrfutil", + "args": [ + "toolchain-manager", + "launch", + "--shell", + "--", + "west", + "patch" + ], + "dependsOrder": "sequence", + "dependsOn": [ + "West update" + ] + }, + { + "label": "Build UHK 80 left firmware", + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}" + }, + "type": "process", + "command": "nrfutil", + "args": [ + "toolchain-manager", + "launch", + "--shell", + "--", + "west", + "build", + "--build-dir", + "${cwd}/device/build/uhk-80-left", + "${cwd}/device", + "--pristine", + "--board", + "uhk-80-left", + "--no-sysbuild", + "--", + "-DNCS_TOOLCHAIN_VERSION=NONE", + "-DCONF_FILE=${cwd}/device/prj.conf", + "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/uhk-80.conf", + "-DBOARD_ROOT=${cwd}", + "-Dmcuboot_OVERLAY_CONFIG=${cwd}/device/child_image/mcuboot.conf;${cwd}/device/child_image/uhk-80-left.mcuboot.conf" + ], + "problemMatcher": [ + "$gcc" + ] + }, + { + "label": "Build UHK 80 right firmware", + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}" + }, + "type": "process", + "command": "nrfutil", + "args": [ + "toolchain-manager", + "launch", + "--shell", + "--", + "west", + "build", + "--build-dir", + "${cwd}/device/build/uhk-80-right", + "${cwd}/device", + "--pristine", + "--board", + "uhk-80-right", + "--no-sysbuild", + "--", + "-DNCS_TOOLCHAIN_VERSION=NONE", + "-DCONF_FILE=${cwd}/device/prj.conf", + "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/uhk-80.conf;${cwd}/device/prj.conf.overlays/ble-hid.conf", + "-DBOARD_ROOT=${cwd}", + "-Dmcuboot_OVERLAY_CONFIG=${cwd}/device/child_image/mcuboot.conf;${cwd}/device/child_image/uhk-80-right.mcuboot.conf" + ], + "problemMatcher": [ + "$gcc" + ] + }, + { + "label": "Build UHK dongle firmware", + "group": { + "kind": "build", + "isDefault": true + }, + "options": { + "cwd": "${workspaceFolder}" + }, + "type": "process", + "command": "nrfutil", + "args": [ + "toolchain-manager", + "launch", + "--shell", + "--", + "west", + "build", + "--build-dir", + "${cwd}/device/build/uhk-dongle", + "${cwd}/device", + "--pristine", + "--board", + "uhk-dongle", + "--no-sysbuild", + "--", + "-DNCS_TOOLCHAIN_VERSION=NONE", + "-DCONF_FILE=${cwd}/device/prj.conf", + "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf", + "-DBOARD_ROOT=${cwd}", + "-Dmcuboot_OVERLAY_CONFIG=${cwd}/device/child_image/mcuboot.conf;${cwd}/device/child_image/uhk-dongle.mcuboot.conf" + ], + "problemMatcher": [ + "$gcc" + ] + } ] -} +} \ No newline at end of file diff --git a/package.json b/package.json index c342888a..dbaf225f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "md5": "^2.3.0", "npm": "^10.0.0" } } From 2256c13d8a6efb6e90cc0798274713c4fda62dda Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sat, 9 Nov 2024 22:26:28 +0100 Subject: [PATCH 12/33] Revert "zephyr: patch UGL boards into the tree" This reverts commit d83382007e99a6ba64b4271d07528893ffce96f7. --- ...-link-ugl-board-directory-as-in-tree.patch | 21 ------------------- zephyr/module.yml | 6 ++++++ 2 files changed, 6 insertions(+), 21 deletions(-) delete mode 100644 patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch create mode 100644 zephyr/module.yml diff --git a/patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch b/patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch deleted file mode 100644 index d1136cb2..00000000 --- a/patches/zephyr/0001-boards-link-ugl-board-directory-as-in-tree.patch +++ /dev/null @@ -1,21 +0,0 @@ -From 9216faab94006e1f77fb64a3a4b1d73d711a41e6 Mon Sep 17 00:00:00 2001 -From: Benedek Kupper -Date: Mon, 28 Oct 2024 21:58:36 +0100 -Subject: [PATCH] boards: link ugl board directory as in-tree - ---- - boards/ugl | 1 + - 1 file changed, 1 insertion(+) - create mode 120000 boards/ugl - -diff --git a/boards/ugl b/boards/ugl -new file mode 120000 -index 00000000000..a497eea33b5 ---- /dev/null -+++ b/boards/ugl -@@ -0,0 +1 @@ -+../../firmware-uhk80/boards/ugl -\ No newline at end of file --- -2.44.0 - diff --git a/zephyr/module.yml b/zephyr/module.yml new file mode 100644 index 00000000..f205a997 --- /dev/null +++ b/zephyr/module.yml @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: Apache-2.0 + +build: + settings: + # hardware model 2 doesn't work with out-of-tree board roots without this: + board_root: . From be6b60eee298f5210894ffab6376a084eda80b89 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sun, 13 Oct 2024 12:38:00 +0200 Subject: [PATCH 13/33] add HID interface for battery charging (#202) also update battery level on BLE --- device/src/keyboard/charger.c | 10 ++++ device/src/usb/hid_battery_app.cpp | 57 +++++++++++++++++++++++ device/src/usb/hid_battery_app.hpp | 74 ++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 device/src/usb/hid_battery_app.cpp create mode 100644 device/src/usb/hid_battery_app.hpp diff --git a/device/src/keyboard/charger.c b/device/src/keyboard/charger.c index 6bc87c64..a7f1a1da 100644 --- a/device/src/keyboard/charger.c +++ b/device/src/keyboard/charger.c @@ -9,6 +9,8 @@ #include "legacy/event_scheduler.h" #include "state_sync.h" #include +#include "device.h" +#include const struct gpio_dt_spec chargerEnDt = GPIO_DT_SPEC_GET(DT_ALIAS(charger_en), gpios); const struct gpio_dt_spec chargerStatDt = GPIO_DT_SPEC_GET(DT_ALIAS(charger_stat), gpios); @@ -121,6 +123,14 @@ void Charger_UpdateBatteryState() { if (stateChanged) { StateSync_UpdateProperty(StateSyncPropertyId_Battery, &batteryState); + +#ifdef CONFIG_BT_BAS + bt_bas_set_battery_level(batteryState.batteryPercentage); +#endif +#if DEVICE_HAS_BATTERY + extern void HID_SetBatteryStatus(uint8_t remaining_capacity, bool charging); + HID_SetBatteryStatus(batteryState.batteryPercentage, batteryState.batteryCharging); +#endif } } diff --git a/device/src/usb/hid_battery_app.cpp b/device/src/usb/hid_battery_app.cpp new file mode 100644 index 00000000..d28460ae --- /dev/null +++ b/device/src/usb/hid_battery_app.cpp @@ -0,0 +1,57 @@ +extern "C" { +#include "device.h" +} +#if DEVICE_HAS_BATTERY + #include "hid_battery_app.hpp" + +extern "C" void HID_SetBatteryStatus(uint8_t remaining_capacity, bool charging) +{ + return hid_battery_app::handle().send(remaining_capacity, charging); +} + +hid_battery_app &hid_battery_app::handle() +{ + static hid_battery_app app{}; + return app; +} + +void hid_battery_app::send(uint8_t remaining_capacity, bool charging) +{ + auto buf_idx = report_buffer_.active_side(); + auto &r = report_buffer_[buf_idx]; + r.remaining_capacity = remaining_capacity; + r.charging = charging; + send_buffer(buf_idx); +} + +void hid_battery_app::send_buffer(uint8_t buf_idx) +{ + if (!report_buffer_.differs()) { + return; + } + if (send_report(&report_buffer_[buf_idx]) == hid::result::OK) { + report_buffer_.compare_swap_copy(buf_idx); + } +} + +void hid_battery_app::in_report_sent(const std::span &data) +{ + auto buf_idx = report_buffer_.indexof(data.data()); + if (!report_buffer_.compare_swap_copy(buf_idx)) { + send_buffer(1 - buf_idx); + } +} + +void hid_battery_app::get_report(hid::report::selector select, const std::span &buffer) +{ + if (select != report::selector()) { + return; + } + // copy to buffer to avoid overwriting data in transit + auto &report = report_buffer_[report_buffer_.inactive_side()]; + assert(buffer.size() >= sizeof(report)); + memcpy(buffer.data(), report.data(), sizeof(report)); + send_report(buffer.subspan(0, sizeof(report))); +} + +#endif // DEVICE_HAS_BATTERY diff --git a/device/src/usb/hid_battery_app.hpp b/device/src/usb/hid_battery_app.hpp new file mode 100644 index 00000000..42c266a6 --- /dev/null +++ b/device/src/usb/hid_battery_app.hpp @@ -0,0 +1,74 @@ +#ifndef __HID_BATTERY_APP_HEADER__ +#define __HID_BATTERY_APP_HEADER__ + +#include "double_buffer.hpp" +#include "hid/application.hpp" +#include "hid/page/battery_system.hpp" +#include "hid/page/generic_desktop.hpp" +#include "hid/page/generic_device.hpp" +#include "hid/page/power.hpp" +#include "hid/rdf/descriptor.hpp" +#include "hid/report_protocol.hpp" + +class hid_battery_app : public hid::application { + hid_battery_app() : application(report_protocol()) {} + + public: + static constexpr auto report_desc() + { + using namespace hid::page; + using namespace hid::rdf; + + // clang-format off + return descriptor( + usage_page(), + usage(power::BATTERY_SYSTEM), + collection::application( + usage(power::BATTERY), + collection::physical( + usage_page(), + usage(battery_system::ABSOLUTE_STATE_OF_CHARGE), + logical_limits<1, 1>(0, 100), + report_size(7), + report_count(1), + input::absolute_variable(), + usage(battery_system::CHARGING), + logical_limits<1, 1>(0, 1), + report_size(1), + input::absolute_variable() + ) + ) + ); + // clang-format off + } + + struct report : public hid::report::base + { + uint8_t remaining_capacity : 7; + bool charging : 1; + }; + + static hid_battery_app& handle(); + + void send(uint8_t remaining_capacity, bool charging); + + void set_report(hid::report::type type, const std::span &data) override + { + // no FEATURE or OUTPUT reports + } + void get_report(hid::report::selector select, const std::span& buffer) override; + void in_report_sent(const std::span& data) override; + + private: + void send_buffer(uint8_t buf_idx); + static hid::report_protocol report_protocol() + { + static constexpr const auto rd{report_desc()}; + constexpr hid::report_protocol rp{rd}; + return rp; + } + + double_buffer report_buffer_{}; +}; + +#endif // __HID_BATTERY_APP_HEADER__ From 393258562b3c618c0890568d60651660cc06347a Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Fri, 18 Oct 2024 14:40:54 +0200 Subject: [PATCH 14/33] usb: use different usage for battery application to avoid macOS warnings (#336) --- device/src/usb/hid_battery_app.hpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/device/src/usb/hid_battery_app.hpp b/device/src/usb/hid_battery_app.hpp index 42c266a6..8762be15 100644 --- a/device/src/usb/hid_battery_app.hpp +++ b/device/src/usb/hid_battery_app.hpp @@ -21,22 +21,19 @@ class hid_battery_app : public hid::application { // clang-format off return descriptor( - usage_page(), - usage(power::BATTERY_SYSTEM), + usage_page(), + usage(generic_desktop::SYSTEM_CONTROL), collection::application( - usage(power::BATTERY), - collection::physical( - usage_page(), - usage(battery_system::ABSOLUTE_STATE_OF_CHARGE), - logical_limits<1, 1>(0, 100), - report_size(7), - report_count(1), - input::absolute_variable(), - usage(battery_system::CHARGING), - logical_limits<1, 1>(0, 1), - report_size(1), - input::absolute_variable() - ) + usage_page(), + usage(battery_system::ABSOLUTE_STATE_OF_CHARGE), + logical_limits<1, 1>(0, 100), + report_size(7), + report_count(1), + input::absolute_variable(), + usage(battery_system::CHARGING), + logical_limits<1, 1>(0, 1), + report_size(1), + input::absolute_variable() ) ); // clang-format off From 2620d497522076fbb6fee8ea93b0726c0ffb7d43 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sun, 13 Oct 2024 12:45:10 +0200 Subject: [PATCH 15/33] usb: add HID battery IF, apply changes in c2usb thread (#202) --- device/prj.conf.overlays/c2usb.conf | 3 + device/src/usb/usb.cpp | 111 +++++++++++++++++++--------- lib/c2usb | 2 +- 3 files changed, 82 insertions(+), 34 deletions(-) diff --git a/device/prj.conf.overlays/c2usb.conf b/device/prj.conf.overlays/c2usb.conf index 1729714b..1c6f34e8 100644 --- a/device/prj.conf.overlays/c2usb.conf +++ b/device/prj.conf.overlays/c2usb.conf @@ -12,3 +12,6 @@ CONFIG_C2USB_UDC_MAC=y # Apply config requires deep stack, and since Agent expects response code, # we can't just do it from the main thread CONFIG_C2USB_UDC_MAC_THREAD_STACK_SIZE=2048 + +# needed as at suspend the msgq is flooded otherwise +CONFIG_C2USB_UDC_MAC_MSGQ_SIZE=32 diff --git a/device/src/usb/usb.cpp b/device/src/usb/usb.cpp index 7564425f..563716c3 100644 --- a/device/src/usb/usb.cpp +++ b/device/src/usb/usb.cpp @@ -4,12 +4,12 @@ extern "C" { #include "key_states.h" #include "keyboard/charger.h" #include "keyboard/key_scanner.h" +#include "legacy/power_mode.h" #include "legacy/timer.h" #include "legacy/user_logic.h" +#include "logger.h" #include #include -#include "logger.h" -#include "legacy/power_mode.h" } #include "command_app.hpp" #include "controls_app.hpp" @@ -27,7 +27,9 @@ extern "C" { #include "device_state.h" #include "usb_report_updater.h" } - +#if DEVICE_HAS_BATTERY + #include "hid_battery_app.hpp" +#endif #if DEVICE_IS_UHK80_RIGHT #include "port/zephyr/bluetooth/hid.hpp" @@ -63,11 +65,49 @@ class multi_hid : public hid::multi_application { }; struct usb_manager { - static usb::df::zephyr::udc_mac &mac() { return instance().mac_; } + static usb::zephyr::udc_mac &mac() { return instance().mac_; } static usb::df::device &device() { return instance().device_; } static bool active() { return device().is_open(); } + static usb_manager &instance() + { + static usb_manager um; + return um; + } + void select_config(hid_config_t conf) + { + if (conf == next_config_.load()) { + return; + } + auto config = next_config_.exchange(conf | launch_flag | change_flag); + if (config & launch_flag) { + return; + } + [[maybe_unused]] auto result = mac().queue_task([]() { instance().change_config(); }); + assert(result == usb::result::OK); + } + + private: + void change_config() + { + next_config_.fetch_and(~launch_flag); + // pretend that the device is disconnected + if (device().is_open()) { + device().close(); + k_msleep(80); + } + // attempt to avoid unnecessary races + int new_conf = next_config_.fetch_and(~(launch_flag | change_flag)); + for (; new_conf & (launch_flag | change_flag); + new_conf = next_config_.fetch_and(~(launch_flag | change_flag))) { + k_msleep(50); // TODO: this is guesswork so far + } + + open_config((hid_config_t)new_conf); + } + + void open_config(hid_config_t conf) { static constexpr auto speed = usb::speed::FULL; static usb::df::hid::function usb_kb{ @@ -77,14 +117,28 @@ struct usb_manager { static usb::df::hid::function usb_controls{controls_app::handle()}; static usb::df::hid::function usb_gamepad{gamepad_app::handle()}; static usb::df::microsoft::xfunction usb_xpad{gamepad_app::handle()}; +#if DEVICE_HAS_BATTERY + static usb::df::hid::function usb_battery{hid_battery_app::handle()}; +#endif constexpr auto config_header = usb::df::config::header(usb::df::config::power::bus(500, true)); const auto shared_config_elems = usb::df::config::join_elements( usb::df::hid::config(usb_kb, speed, usb::endpoint::address(0x81), 1), usb::df::hid::config(usb_mouse, speed, usb::endpoint::address(0x82), 1), - usb::df::hid::config(usb_command, speed, usb::endpoint::address(0x83), 20), - usb::df::hid::config(usb_controls, speed, usb::endpoint::address(0x84), 1)); + usb::df::hid::config(usb_command, speed, usb::endpoint::address(0x83), 10), + usb::df::hid::config(usb_controls, speed, usb::endpoint::address(0x84), 1) +#if !DEVICE_HAS_BATTERY + ); +#else + , + usb::df::hid::config(usb_battery, speed, usb::endpoint::address(0x86), 1) + // not very useful at the moment + ); + + static const auto battery_config = usb::df::config::make_config(config_header, + usb::df::hid::config(usb_battery, speed, usb::endpoint::address(0x86), 1)); +#endif static const auto base_config = usb::df::config::make_config(config_header, shared_config_elems); @@ -98,16 +152,15 @@ struct usb_manager { usb::df::microsoft::xconfig( usb_xpad, usb::endpoint::address(0x85), 1, usb::endpoint::address(0x05), 255)); - if (device_.is_open()) { - device_.close(); - if (conf == Hid_Empty) { - return; - } - k_msleep(100); - } + printk("USB config changing to %s\n", magic_enum::enum_name(conf).data()); switch (conf) { case Hid_Empty: - assert(false); // returned already +#if DEVICE_HAS_BATTERY + ms_enum_.set_config({}); + device_.set_config(battery_config); +#else + assert(false); +#endif break; case Hid_NoGamepad: ms_enum_.set_config({}); @@ -121,13 +174,6 @@ struct usb_manager { device_.open(); } - static usb_manager &instance() - { - static usb_manager um; - return um; - } - - private: usb_manager() { device_.set_power_event_delegate([](usb::df::device &dev, usb::df::device::event ev) { @@ -163,9 +209,12 @@ struct usb_manager { }); } - usb::df::zephyr::udc_mac mac_{DEVICE_DT_GET(DT_NODELABEL(zephyr_udc0))}; + usb::zephyr::udc_mac mac_{DEVICE_DT_GET(DT_NODELABEL(zephyr_udc0))}; usb::df::microsoft::alternate_enumeration ms_enum_{}; usb::df::device_instance device_{mac_, product_info, ms_enum_}; + static constexpr int change_flag = 0x100; + static constexpr int launch_flag = 0x200; + std::atomic next_config_{0xff}; }; extern "C" void USB_EnableHid() @@ -180,7 +229,8 @@ extern "C" void USB_DisableHid() extern "C" void USB_RemoteWakeup() { - usb_manager::instance().device().remote_wakeup(); + usb_manager::instance().mac().queue_task( + []() { usb_manager::instance().device().remote_wakeup(); }); } #if DEVICE_IS_UHK80_RIGHT @@ -195,10 +245,7 @@ struct hogp_manager { return hm; } - static bool active() - { - return instance().hogp_nopad_.active(); - } + static bool active() { return instance().hogp_nopad_.active(); } void select_config(hid_config_t conf) { @@ -217,10 +264,7 @@ struct hogp_manager { } } - const bluetooth::zephyr::hid::service& main_service() - { - return hogp_nopad_; - } + const bluetooth::zephyr::hid::service &main_service() { return hogp_nopad_; } private: hogp_manager() {} @@ -246,7 +290,7 @@ extern "C" void HOGP_Disable() } #endif -void hidmgr_set_transport(const hid::transport* tp) +void hidmgr_set_transport(const hid::transport *tp) { // tp is the transport of the keyboard app if (tp == nullptr) { @@ -295,7 +339,8 @@ extern "C" void HID_SetKeyboardRollover(rollover_t mode) keyboard_app::handle().set_rollover((keyboard_app::rollover)mode); } -extern "C" void USB_SetSerialNumber(uint32_t serialNumber) { +extern "C" void USB_SetSerialNumber(uint32_t serialNumber) +{ // Ensure UsbSerialNumber has enough space if (sizeof(UsbSerialNumber) < 5) { return; diff --git a/lib/c2usb b/lib/c2usb index bc5e5ae0..db88eb05 160000 --- a/lib/c2usb +++ b/lib/c2usb @@ -1 +1 @@ -Subproject commit bc5e5ae068594f99d8152b0c237231220ca02737 +Subproject commit db88eb051cb0792f0296ce58357180029f3da5e2 From 6414db85ffdf5bc43d9eb40b9871499eef3f5819 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Mon, 14 Oct 2024 01:18:36 +0200 Subject: [PATCH 16/33] HID: remove double buffering from inputs, move common behavior to base app --- device/src/usb/app_base.cpp | 40 +++++++ device/src/usb/app_base.hpp | 42 ++++++++ device/src/usb/command_app.cpp | 12 +-- device/src/usb/controls_app.cpp | 60 +---------- device/src/usb/controls_app.hpp | 26 +---- device/src/usb/double_buffer.hpp | 22 ++-- device/src/usb/gamepad_app.cpp | 13 +-- device/src/usb/hid_battery_app.hpp | 2 + device/src/usb/keyboard_app.cpp | 149 ++++++++++----------------- device/src/usb/keyboard_app.hpp | 22 ++-- device/src/usb/mouse_app.cpp | 103 +----------------- device/src/usb/mouse_app.hpp | 26 +---- device/src/usb/usb.cpp | 13 +++ device/src/usb/usb.h | 4 - device/src/usb/usb_compatibility.cpp | 98 +++++++++--------- 15 files changed, 240 insertions(+), 392 deletions(-) create mode 100644 device/src/usb/app_base.cpp create mode 100644 device/src/usb/app_base.hpp diff --git a/device/src/usb/app_base.cpp b/device/src/usb/app_base.cpp new file mode 100644 index 00000000..a2ca4336 --- /dev/null +++ b/device/src/usb/app_base.cpp @@ -0,0 +1,40 @@ +#include "app_base.hpp" + +void app_base::stop() +{ + sending_sem_.release(); +} + +void app_base::send(const std::span &buffer) +{ + if (!active()) { + return; + } + if (!sending_sem_.try_acquire_for(SEMAPHORE_RESET_TIMEOUT)) { + return; + } + std::copy(buffer.begin(), buffer.end(), in_buffer_.data() + sizeof(in_id_)); + auto result = send_report(in_buffer_); + if (result != hid::result::OK) { + sending_sem_.release(); + } +} + +void app_base::in_report_sent(const std::span &data) +{ + if (data.front() != in_id_) { + return; + } + sending_sem_.release(); +} + +void app_base::get_report(hid::report::selector select, const std::span &buffer) +{ + if (select != hid::report::selector(hid::report::type::INPUT, in_id_)) { + return; + } + assert(buffer.size() >= in_buffer_.size()); + + memcpy(buffer.data(), in_buffer_.data(), in_buffer_.size()); + send_report(buffer.subspan(0, in_buffer_.size())); +} diff --git a/device/src/usb/app_base.hpp b/device/src/usb/app_base.hpp new file mode 100644 index 00000000..c57b3449 --- /dev/null +++ b/device/src/usb/app_base.hpp @@ -0,0 +1,42 @@ +#ifndef __APP_BASE_HEADER__ +#define __APP_BASE_HEADER__ + +#include "hid/application.hpp" +#include "hid/rdf/descriptor.hpp" +#include "hid/report_protocol.hpp" +#include "port/zephyr/semaphore.hpp" +#include + +class app_base : public hid::application { + public: + bool active() const; + + protected: + static constexpr std::chrono::milliseconds SEMAPHORE_RESET_TIMEOUT{100}; + + template + static hid::report_protocol rp() + { + static constexpr const auto rd{T::report_desc()}; + constexpr hid::report_protocol rp{rd}; + return rp; + } + template + constexpr app_base([[maybe_unused]] T *t, TReport &in_report_buffer) + : application(rp()), + in_id_(in_report_buffer.ID), + in_buffer_(in_report_buffer.data(), sizeof(TReport)) + {} + + void stop() override; + void set_report(hid::report::type type, const std::span &data) override {} + void get_report(hid::report::selector select, const std::span &buffer) override; + void in_report_sent(const std::span &data) override; + void send(const std::span &buffer); + + const hid::report::id in_id_; + const std::span in_buffer_; + os::zephyr::binary_semaphore sending_sem_{1}; +}; + +#endif // __APP_BASE_HEADER__ diff --git a/device/src/usb/command_app.cpp b/device/src/usb/command_app.cpp index 74bd3bb6..f286f1f9 100644 --- a/device/src/usb/command_app.cpp +++ b/device/src/usb/command_app.cpp @@ -10,12 +10,6 @@ extern "C" bool CommandProtocolTx(const uint8_t *data, size_t size) extern "C" void CommandProtocolRxHandler(const uint8_t *data, size_t size); -void __attribute__((weak)) CommandProtocolRxHandler(const uint8_t *data, size_t size) -{ - printk("CommandProtocolRxHandler: data[0]:%u size:%d\n", data[0], size); - CommandProtocolTx(data, size); -} - command_app &command_app::handle() { static command_app app{}; @@ -33,12 +27,12 @@ void command_app::set_report(hid::report::type type, const std::span(data.data()); - CommandProtocolRxHandler(out.payload.data(), data.size() - (report_out::has_id() ? 1 : 0)); - // always keep receiving new reports out_buffer_.swap_sides(); receive_report(&out_buffer_[out_buffer_.active_side()]); + + auto &out = *reinterpret_cast(data.data()); + CommandProtocolRxHandler(out.payload.data(), data.size() - (report_out::has_id() ? 1 : 0)); } void command_app::get_report(hid::report::selector select, const std::span &buffer) diff --git a/device/src/usb/controls_app.cpp b/device/src/usb/controls_app.cpp index 17452c08..7696705e 100644 --- a/device/src/usb/controls_app.cpp +++ b/device/src/usb/controls_app.cpp @@ -1,14 +1,6 @@ #include "controls_app.hpp" -extern "C" -{ -#include "usb/usb.h" -#include -} - -static K_SEM_DEFINE(reportSending, 1, 1); - -controls_app& controls_app::handle() +controls_app &controls_app::handle() { static controls_app app{}; return app; @@ -17,56 +9,10 @@ controls_app& controls_app::handle() void controls_app::start(hid::protocol prot) { // TODO start handling controls events - report_buffer_.reset(); -} - -void controls_app::stop() -{ - // TODO stop handling controls events + report_buffer_ = {}; } void controls_app::set_report_state(const controls_report_base<0> &data) { - k_sem_take(&reportSending, K_MSEC(SEMAPHORE_RESET_TIMEOUT)); - auto buf_idx = report_buffer_.active_side(); - auto &report = report_buffer_[buf_idx]; - report.consumer_codes = data.consumer_codes; - report.system_codes = data.system_codes; - report.telephony_codes = data.telephony_codes; - send_buffer(buf_idx); -} - -void controls_app::send_buffer(uint8_t buf_idx) -{ - if (!report_buffer_.differs()) { - k_sem_give(&reportSending); - return; - } - if (send_report(&report_buffer_[buf_idx]) == hid::result::OK) { - report_buffer_.compare_swap_copy(buf_idx); - k_sem_give(&reportSending); - } -} - -void controls_app::in_report_sent(const std::span &data) -{ - if (data.front() != report_ids::IN_CONTROLS) { - return; - } - auto buf_idx = report_buffer_.indexof(data.data()); - if (!report_buffer_.compare_swap_copy(buf_idx)) { - send_buffer(1 - buf_idx); - } -} - -void controls_app::get_report(hid::report::selector select, const std::span &buffer) -{ - if (select != controls_report::selector()) { - return; - } - // copy to buffer to avoid overwriting data in transit - auto &report = report_buffer_[report_buffer_.inactive_side()]; - assert(buffer.size() >= sizeof(report)); - memcpy(buffer.data(), report.data(), sizeof(report)); - send_report(buffer.subspan(0, sizeof(report))); + send({data.data(), sizeof(data)}); } diff --git a/device/src/usb/controls_app.hpp b/device/src/usb/controls_app.hpp index f9f2d4e6..ef1b93e0 100644 --- a/device/src/usb/controls_app.hpp +++ b/device/src/usb/controls_app.hpp @@ -1,27 +1,22 @@ #ifndef __CONTROLS_APP_HEADER__ #define __CONTROLS_APP_HEADER__ -#include "double_buffer.hpp" -#include "hid/application.hpp" +#include "app_base.hpp" #include "hid/page/consumer.hpp" #include "hid/page/generic_desktop.hpp" #include "hid/page/telephony.hpp" -#include "hid/rdf/descriptor.hpp" #include "hid/report_array.hpp" -#include "hid/report_protocol.hpp" #include "report_ids.h" using system_code = hid::page::generic_desktop; using consumer_code = hid::page::consumer; using telephony_code = hid::page::telephony; -class controls_app : public hid::application { +class controls_app : public app_base { static constexpr size_t CONSUMER_CODE_COUNT = 2; static constexpr size_t SYSTEM_CODE_COUNT = 2; static constexpr size_t TELEPHONY_CODE_COUNT = 2; - controls_app() : application(report_protocol()) {} - public: template struct controls_report_base : public hid::report::base { @@ -82,25 +77,12 @@ class controls_app : public hid::application { void set_report_state(const controls_report_base<0> &data); private: - static hid::report_protocol report_protocol() - { - static constexpr const auto rd{report_desc()}; - constexpr hid::report_protocol rp{rd}; - return rp; - } + controls_app() : app_base(this, report_buffer_) {} void start(hid::protocol prot) override; - void stop() override; - void set_report(hid::report::type type, const std::span &data) override - { - // no FEATURE or OUTPUT reports - } - void in_report_sent(const std::span &data) override; - void get_report(hid::report::selector select, const std::span &buffer) override; - void send_buffer(uint8_t buf_idx); using controls_report = controls_report_base; - double_buffer report_buffer_{}; + C2USB_USB_TRANSFER_ALIGN(controls_report, report_buffer_){}; }; using controls_buffer = controls_app::controls_report_base<0>; diff --git a/device/src/usb/double_buffer.hpp b/device/src/usb/double_buffer.hpp index d13ae646..f0a45c12 100644 --- a/device/src/usb/double_buffer.hpp +++ b/device/src/usb/double_buffer.hpp @@ -3,23 +3,23 @@ #include #include -#include #include +#include template -class double_buffer -{ - struct aligned_storage - { +class double_buffer { + struct aligned_storage { C2USB_USB_TRANSFER_ALIGN(T, m_){}; + constexpr bool operator==(const aligned_storage &other) const = default; + constexpr bool operator!=(const aligned_storage &other) const = default; }; public: constexpr double_buffer() {} - T& operator[](uint8_t i) { return buffers_[i].m_; } + T &operator[](uint8_t i) { return buffers_[i].m_; } - const T& operator[](uint8_t i) const { return buffers_[i].m_; } + const T &operator[](uint8_t i) const { return buffers_[i].m_; } uint8_t active_side(std::memory_order mo = std::memory_order::seq_cst) const { @@ -32,7 +32,7 @@ class double_buffer } template - uint8_t indexof(TArg* ptr) const + uint8_t indexof(TArg *ptr) const { auto oneptr = reinterpret_cast(&buffers_[1]); auto dataptr = reinterpret_cast(ptr); @@ -48,8 +48,7 @@ class double_buffer bool compare_swap_copy(uint8_t i, std::memory_order mo = std::memory_order::seq_cst) { - if (compare_swap(i, mo)) - { + if (compare_swap(i, mo)) { buffers_[1 - i] = buffers_[i]; return true; } @@ -58,7 +57,8 @@ class double_buffer void reset() { buffers_ = {}; } - bool differs() const { return std::memcmp(&buffers_[0], &buffers_[1], sizeof(T)) != 0; } + // bool differs() const { return std::memcmp(&buffers_[0] != &buffers_[1], sizeof(T)) != 0; } + bool differs() const { return buffers_[0] != buffers_[1]; } private: std::array buffers_{}; diff --git a/device/src/usb/gamepad_app.cpp b/device/src/usb/gamepad_app.cpp index b76ebf23..faee5c8b 100644 --- a/device/src/usb/gamepad_app.cpp +++ b/device/src/usb/gamepad_app.cpp @@ -1,14 +1,6 @@ #include "gamepad_app.hpp" -extern "C" -{ -#include "usb/usb.h" -#include -} - -static K_SEM_DEFINE(reportSending, 1, 1); - -gamepad_app& gamepad_app::handle() +gamepad_app &gamepad_app::handle() { static gamepad_app app{}; return app; @@ -31,7 +23,6 @@ void gamepad_app::stop() void gamepad_app::set_report_state(const gamepad_report &data) { - k_sem_take(&reportSending, K_MSEC(SEMAPHORE_RESET_TIMEOUT)); auto buf_idx = report_buffer_.active_side(); auto &report = report_buffer_[buf_idx]; report.buttons = data.buttons; @@ -45,12 +36,10 @@ void gamepad_app::set_report_state(const gamepad_report &data) void gamepad_app::send_buffer(uint8_t buf_idx) { if (!report_buffer_.differs()) { - k_sem_give(&reportSending); return; } if (send_report(&report_buffer_[buf_idx]) == hid::result::OK) { report_buffer_.compare_swap_copy(buf_idx); - k_sem_give(&reportSending); } } diff --git a/device/src/usb/hid_battery_app.hpp b/device/src/usb/hid_battery_app.hpp index 8762be15..ef92c777 100644 --- a/device/src/usb/hid_battery_app.hpp +++ b/device/src/usb/hid_battery_app.hpp @@ -43,6 +43,8 @@ class hid_battery_app : public hid::application { { uint8_t remaining_capacity : 7; bool charging : 1; + + bool operator==(const report &other) const = default; }; static hid_battery_app& handle(); diff --git a/device/src/usb/keyboard_app.cpp b/device/src/usb/keyboard_app.cpp index e613fee7..298ec78b 100644 --- a/device/src/usb/keyboard_app.cpp +++ b/device/src/usb/keyboard_app.cpp @@ -1,16 +1,11 @@ #include "keyboard_app.hpp" #include "zephyr/sys/printk.h" -extern "C" -{ -#include "usb/usb.h" +extern "C" { #include "usb/usb_compatibility.h" -#include } -static K_SEM_DEFINE(reportSending, 1, 1); - -keyboard_app& keyboard_app::handle() +keyboard_app &keyboard_app::handle() { static keyboard_app app{}; return app; @@ -26,20 +21,24 @@ void keyboard_app::set_rollover(rollover mode) if (prot_ == hid::protocol::BOOT) { return; } + reset_keys(); +} - keys_.reset(); +void keyboard_app::reset_keys() +{ + keys_ = {}; // TODO: make sure that no keys are pressed when this happens // or send an empty report on the virtual keyboard that is deactivated by this switch? if ((rollover_ == rollover::N_KEY) && (rollover_override_ == rollover::N_KEY)) { - keys_[0].nkro = {}; - keys_[1].nkro = {}; + keys_.nkro = {}; + keys_.nkro = {}; } else { - keys_[0].sixkro = {}; - keys_[1].sixkro = {}; + keys_.sixkro = {}; + keys_.sixkro = {}; } } -extern void hidmgr_set_transport(const hid::transport* tp); +extern void hidmgr_set_transport(const hid::transport *tp); void keyboard_app::start(hid::protocol prot) { @@ -50,23 +49,14 @@ void keyboard_app::start(hid::protocol prot) receive_report(&leds_buffer_); // TODO start handling keyboard events - keys_.reset(); - if (prot == hid::protocol::BOOT) { - keys_[0].boot = {}; - keys_[1].boot = {}; - } else if ((rollover_ == rollover::N_KEY) && (rollover_override_ == rollover::N_KEY)) { - keys_[0].nkro = {}; - keys_[1].nkro = {}; - } else { - keys_[0].sixkro = {}; - keys_[1].sixkro = {}; - } + reset_keys(); hidmgr_set_transport(get_transport()); } void keyboard_app::stop() { + sending_sem_.release(); // TODO stop handling keyboard events hidmgr_set_transport(get_transport()); } @@ -79,13 +69,16 @@ bool keyboard_app::using_nkro() const void keyboard_app::set_report_state(const keys_nkro_report_base<> &data) { - // DOCS: For report sending logic, see comments in mouse_app.cpp - k_sem_take(&reportSending, K_MSEC(SEMAPHORE_RESET_TIMEOUT)); - - auto buf_idx = keys_.active_side(); + if (!active()) { + return; + } + if (!sending_sem_.try_acquire_for(SEMAPHORE_RESET_TIMEOUT)) { + return; + } + auto result = hid::result::INVALID; if (!using_nkro()) { if (prot_ == hid::protocol::BOOT) { - auto &keys_6kro = keys_[buf_idx].boot; + auto &keys_6kro = keys_.boot; keys_6kro.modifiers = data.modifiers; keys_6kro.scancodes.reset(); for (auto code = LOWEST_SCANCODE; code <= HIGHEST_SCANCODE; @@ -93,7 +86,7 @@ void keyboard_app::set_report_state(const keys_nkro_report_base<> &data) keys_6kro.scancodes.set(code, data.test(code)); } } else { - auto &keys_6kro = keys_[buf_idx].sixkro; + auto &keys_6kro = keys_.sixkro; keys_6kro.modifiers = data.modifiers; keys_6kro.scancodes.reset(); for (auto code = LOWEST_SCANCODE; code <= HIGHEST_SCANCODE; @@ -101,64 +94,43 @@ void keyboard_app::set_report_state(const keys_nkro_report_base<> &data) keys_6kro.scancodes.set(code, data.test(code)); } } - send_6kro_buffer(buf_idx); + + if (prot_ == hid::protocol::BOOT) { + result = send_report(&keys_.boot); + } else { + result = send_report(&keys_.sixkro); + } } else { - auto &keys_nkro = keys_[buf_idx].nkro; + auto &keys_nkro = keys_.nkro; // fill up the report keys_nkro.modifiers = data.modifiers; keys_nkro.scancodes = data.scancodes; - send_nkro_buffer(buf_idx); - } -} + result = send_report(&keys_.nkro); + if (result == hid::result::NO_MEMORY) { + printk("keyboard NKRO mode fails, falling back to 6KRO\n"); -void keyboard_app::send_6kro_buffer(uint8_t buf_idx) -{ - if (!keys_.differs() || !has_transport()) { - k_sem_give(&reportSending); - return; - } - auto result = hid::result::INVALID; - auto &report = keys_[buf_idx]; - if (prot_ == hid::protocol::BOOT) { - result = send_report(&report.boot); - } else { - result = send_report(&report.sixkro); - } + // save key state + keys_nkro_report_base<> data{ + .modifiers = keys_.nkro.modifiers, .scancodes = keys_.nkro.scancodes}; - // swap sides only if the callback hasn't done yet - if (result == hid::result::OK) { - keys_.compare_swap_copy(buf_idx); - k_sem_give(&reportSending); - } -} + // switch report layout + rollover_override_ = rollover::SIX_KEY; + keys_ = {}; + keys_.sixkro = {}; -void keyboard_app::send_nkro_buffer(uint8_t buf_idx) -{ - if (!keys_.differs() || !has_transport()) { - k_sem_give(&reportSending); - return; + keys_.sixkro.modifiers = data.modifiers; + keys_.sixkro.scancodes.reset(); + for (auto code = LOWEST_SCANCODE; code <= HIGHEST_SCANCODE; + code = static_cast(static_cast(code) + 1)) { + keys_.sixkro.scancodes.set(code, data.test(code)); + } + + result = send_report(&keys_.sixkro); + } } - auto result = send_report(&keys_[buf_idx].nkro); - if (result == hid::result::NO_MEMORY) { - printk("keyboard NKRO mode fails, falling back to 6KRO\n"); - - // save key state - keys_nkro_report_base<> data{ - .modifiers = keys_[buf_idx].nkro.modifiers, .scancodes = keys_[buf_idx].nkro.scancodes}; - - // switch report layout - rollover_override_ = rollover::SIX_KEY; - keys_.reset(); - keys_[0].sixkro = {}; - keys_[1].sixkro = {}; - - // apply current state - set_report_state(data); - - } else if (result == hid::result::OK) { - keys_.compare_swap_copy(buf_idx); - k_sem_give(&reportSending); + if (result != hid::result::OK) { + sending_sem_.release(); } } @@ -176,7 +148,8 @@ void keyboard_app::set_report(hid::report::type type, const std::span &data) (data.front() != KEYS_6KRO_REPORT_ID)) { return; } - auto buf_idx = keys_.indexof(data.data()); - if (!keys_.compare_swap_copy(buf_idx)) { - if (using_nkro()) { - send_nkro_buffer(1 - buf_idx); - } else { - send_6kro_buffer(1 - buf_idx); - } - } + sending_sem_.release(); } void keyboard_app::get_report(hid::report::selector select, const std::span &buffer) @@ -212,14 +178,13 @@ void keyboard_app::get_report(hid::report::selector select, const std::span(buffer.data()); if (using_nkro()) { *report = {}; } else { - *report = keys.sixkro; + *report = keys_.sixkro; } send_report(report); break; @@ -227,7 +192,7 @@ void keyboard_app::get_report(hid::report::selector select, const std::span(buffer.data()); if (using_nkro()) { - *report = keys.nkro; + *report = keys_.nkro; } else { *report = {}; } @@ -236,7 +201,7 @@ void keyboard_app::get_report(hid::report::selector select, const std::span(buffer.data()); - *report = keys.boot; + *report = keys_.boot; send_report(report); break; } diff --git a/device/src/usb/keyboard_app.hpp b/device/src/usb/keyboard_app.hpp index 6465bb8b..45522c50 100644 --- a/device/src/usb/keyboard_app.hpp +++ b/device/src/usb/keyboard_app.hpp @@ -1,23 +1,20 @@ #ifndef __KEYBOARD_APP_HEADER__ #define __KEYBOARD_APP_HEADER__ -#include "double_buffer.hpp" +#include "app_base.hpp" #include "hid/app/keyboard.hpp" -#include "hid/application.hpp" -#include "hid/report_protocol.hpp" #include "report_ids.h" using scancode = hid::page::keyboard_keypad; -class keyboard_app : public hid::application { +class keyboard_app : public app_base { static constexpr uint8_t KEYS_6KRO_REPORT_ID = report_ids::IN_KEYBOARD_6KRO; static constexpr uint8_t KEYS_NKRO_REPORT_ID = report_ids::IN_KEYBOARD_NKRO; static constexpr uint8_t LEDS_REPORT_ID = report_ids::OUT_KEYBOARD_LEDS; static constexpr auto NKRO_FIRST_USAGE = scancode::KEYBOARD_A; // the first 4 codes are error codes - static constexpr auto NKRO_LAST_USAGE = - (scancode)CONFIG_KEYBOARD_MAX_SCANCODE; + static constexpr auto NKRO_LAST_USAGE = (scancode)CONFIG_KEYBOARD_MAX_SCANCODE; static constexpr auto LOWEST_SCANCODE = NKRO_FIRST_USAGE; static constexpr auto HIGHEST_SCANCODE = NKRO_LAST_USAGE; @@ -110,14 +107,7 @@ class keyboard_app : public hid::application { void set_report_state(const keys_nkro_report_base<> &data); private: - static hid::report_protocol report_protocol() - { - static constexpr const auto rd{report_desc()}; - constexpr hid::report_protocol rp{rd}; - return rp; - } - - keyboard_app() : application(report_protocol()) {} + keyboard_app() : app_base(this, keys_.nkro) {} using keys_boot_report = hid::app::keyboard::keys_input_report<0>; using keys_6kro_report = hid::app::keyboard::keys_input_report; @@ -137,6 +127,8 @@ class keyboard_app : public hid::application { void send_6kro_buffer(uint8_t buf_idx); void send_nkro_buffer(uint8_t buf_idx); + void reset_keys(); + C2USB_USB_TRANSFER_ALIGN(leds_report, leds_buffer_){}; hid::protocol prot_{}; rollover rollover_{}; @@ -146,7 +138,7 @@ class keyboard_app : public hid::application { keys_boot_report boot; keys_6kro_report sixkro; }; - double_buffer keys_{}; + C2USB_USB_TRANSFER_ALIGN(keys_reports, keys_){}; }; using scancode_buffer = keyboard_app::keys_nkro_report_base<>; diff --git a/device/src/usb/mouse_app.cpp b/device/src/usb/mouse_app.cpp index b829bfa9..352d1938 100644 --- a/device/src/usb/mouse_app.cpp +++ b/device/src/usb/mouse_app.cpp @@ -1,14 +1,8 @@ #include "mouse_app.hpp" +#include "zephyr/sys/printk.h" -extern "C" { -#include "usb/usb.h" -#include -#include "legacy/debug.h" -} - -static K_SEM_DEFINE(reportSending, 1, 1); - -mouse_app& mouse_app::handle() { +mouse_app &mouse_app::handle() +{ static mouse_app app{}; return app; } @@ -16,97 +10,10 @@ mouse_app& mouse_app::handle() { void mouse_app::start(hid::protocol prot) { // TODO start handling mouse events - report_buffer_.reset(); -} - -void mouse_app::stop() -{ - // TODO stop handling mouse events + report_buffer_ = {}; } void mouse_app::set_report_state(const mouse_report_base<> &data) { - k_sem_take(&reportSending, K_MSEC(SEMAPHORE_RESET_TIMEOUT)); - auto buf_idx = report_buffer_.active_side(); - auto &report = report_buffer_[buf_idx]; - report.buttons = data.buttons; - report.x = data.x; - report.y = data.y; - report.wheel_x = data.wheel_x; - report.wheel_y = data.wheel_y; - send_buffer(buf_idx); -} - -bool mouse_app::swap_buffers(uint8_t buf_idx) { - auto& otherReport = report_buffer_[1-buf_idx]; - - if (report_buffer_.compare_swap_copy(buf_idx)) { - // buf_idx report is now inactive and waiting to be sent - // otherReport is now active and ready to be written - otherReport.x = 0; - otherReport.y = 0; - otherReport.wheel_x = 0; - otherReport.wheel_y = 0; - return true; - } - return false; -} - -void mouse_app::send_buffer(uint8_t buf_idx) -{ - auto& report = report_buffer_[buf_idx]; - if ( - !report_buffer_.differs() - && report.x == (hid::le_int16_t)0 - && report.y == (hid::le_int16_t)0 - && report.wheel_x == (int16_t)0 - && report.wheel_y == (int16_t)0 - ) { - k_sem_give(&reportSending); - return; - } - // an asynchronous api to send the buffer - // OK means that the report is scheduled to be sent - // BUSY: means that another report is already being sent. - // In that case, in_report_sent will trigger another sent attempt - if (send_report(&report_buffer_[buf_idx]) == hid::result::OK) - { - // report has been submitted for sending, so swap buffers - swap_buffers(buf_idx); - // now inactive buffer is waiting to be sent - // and active buffer is prepared for further writing - k_sem_give(&reportSending); - } -} - -void mouse_app::in_report_sent(const std::span &data) -{ - if (data.front() != report_ids::IN_MOUSE) { - return; - } - // inactive buffer has been sent - auto buf_idx = report_buffer_.indexof(data.data()); // this should now point to inactive buffer - // so swapping should fail, which means that everything is ok and we can - // continue and try to send the active buffer - if (!swap_buffers(buf_idx)) - { - // If someone tried to set_report_state inbetween, they have failed to - // send the buffer, so we need to take care of that. - send_buffer(1 - buf_idx); - } - // else we have swapped buffers before the send_buffer (above) managed to - // do so. In that case, *we* have swapped buffers, and the send_buffer's - // swap will fail -} - -void mouse_app::get_report(hid::report::selector select, const std::span &buffer) -{ - if (select != mouse_report::selector()) { - return; - } - // copy to buffer to avoid overwriting data in transit - auto& report = report_buffer_[report_buffer_.inactive_side()]; - assert(buffer.size() >= sizeof(report)); - memcpy(buffer.data(), report.data(), sizeof(report)); - send_report(buffer.subspan(0, sizeof(report))); + send({data.data(), sizeof(data)}); } diff --git a/device/src/usb/mouse_app.hpp b/device/src/usb/mouse_app.hpp index 01e725f6..87c8259b 100644 --- a/device/src/usb/mouse_app.hpp +++ b/device/src/usb/mouse_app.hpp @@ -1,11 +1,10 @@ #ifndef __MOUSE_APP_HEADER__ #define __MOUSE_APP_HEADER__ +#include "app_base.hpp" #include "double_buffer.hpp" #include "hid/app/mouse.hpp" -#include "hid/application.hpp" #include "hid/page/consumer.hpp" -#include "hid/report_protocol.hpp" #include "report_ids.h" enum class mouse_button { @@ -19,13 +18,11 @@ enum class mouse_button { _8 }; -class mouse_app : public hid::application { +class mouse_app : public app_base { static constexpr auto LAST_BUTTON = hid::page::button(20); static constexpr int16_t AXIS_LIMIT = 4096; static constexpr int8_t WHEEL_LIMIT = 127; - mouse_app() : application(report_protocol()) {} - public: static constexpr auto report_desc() { @@ -98,27 +95,12 @@ class mouse_app : public hid::application { void set_report_state(const mouse_report_base<> &data); private: - static hid::report_protocol report_protocol() - { - static constexpr const auto rd{report_desc()}; - constexpr hid::report_protocol rp{rd}; - return rp; - } + mouse_app() : app_base(this, report_buffer_) {} void start(hid::protocol prot) override; - void stop() override; - void set_report(hid::report::type type, const std::span &data) override - { - // no FEATURE or OUTPUT reports - } - void in_report_sent(const std::span &data) override; - void get_report(hid::report::selector select, const std::span &buffer) override; - void send_buffer(uint8_t buf_idx); using mouse_report = mouse_report_base; - double_buffer report_buffer_{}; - - bool swap_buffers(uint8_t buf_idx); + C2USB_USB_TRANSFER_ALIGN(mouse_report, report_buffer_){}; }; using mouse_buffer = mouse_app::mouse_report_base<>; diff --git a/device/src/usb/usb.cpp b/device/src/usb/usb.cpp index 563716c3..3e1e5484 100644 --- a/device/src/usb/usb.cpp +++ b/device/src/usb/usb.cpp @@ -290,6 +290,19 @@ extern "C" void HOGP_Disable() } #endif +bool app_base::active() const +{ + if (!get_transport()) { + return false; + } +#if DEVICE_IS_UHK80_RIGHT + if (get_transport() == &hogp_manager::instance().main_service()) { + return true; + } +#endif + return usb_manager::instance().device().power_state() == usb::power::state::L0_ON; +} + void hidmgr_set_transport(const hid::transport *tp) { // tp is the transport of the keyboard app diff --git a/device/src/usb/usb.h b/device/src/usb/usb.h index b09d65d3..fb8e0036 100644 --- a/device/src/usb/usb.h +++ b/device/src/usb/usb.h @@ -8,10 +8,6 @@ #include #include -// Macros: - - #define SEMAPHORE_RESET_TIMEOUT 100 - // Typedefs: typedef enum diff --git a/device/src/usb/usb_compatibility.cpp b/device/src/usb/usb_compatibility.cpp index 11e655b7..ca1faa94 100644 --- a/device/src/usb/usb_compatibility.cpp +++ b/device/src/usb/usb_compatibility.cpp @@ -1,27 +1,26 @@ -extern "C" -{ +extern "C" { #include "usb_compatibility.h" -#include "usb_interfaces/usb_interface_basic_keyboard.h" -#include "usb_interfaces/usb_interface_media_keyboard.h" -#include "usb_interfaces/usb_interface_system_keyboard.h" -#include "usb_interfaces/usb_interface_mouse.h" -#include "link_protocol.h" -#include "legacy/debug.h" -#include "nus_server.h" -#include "messenger.h" #include "bt_conn.h" -#include "state_sync.h" +#include "legacy/debug.h" #include "legacy/event_scheduler.h" -#include "legacy/macro_events.h" #include "legacy/key_states.h" +#include "legacy/macro_events.h" +#include "link_protocol.h" +#include "messenger.h" +#include "nus_server.h" +#include "state_sync.h" +#include "usb_interfaces/usb_interface_basic_keyboard.h" +#include "usb_interfaces/usb_interface_media_keyboard.h" +#include "usb_interfaces/usb_interface_mouse.h" +#include "usb_interfaces/usb_interface_system_keyboard.h" } -#include "usb/df/class/hid.hpp" #include "command_app.hpp" #include "controls_app.hpp" #include "gamepad_app.hpp" #include "keyboard_app.hpp" -#include "mouse_app.hpp" #include "logger.h" +#include "mouse_app.hpp" +#include "usb/df/class/hid.hpp" static scancode_buffer keys; static mouse_buffer mouseState; @@ -29,85 +28,84 @@ static controls_buffer controls; keyboard_led_state_t KeyboardLedsState; - /* - gamepad.set_button(gamepad_button::X, KeyStates[CURRENT_SLOT_ID][3].current); - // gamepad.left.X = 50; - // gamepad.right.Y = 50; - // gamepad.right_trigger = 50; - gamepad_app::handle().set_report_state(gamepad); - */ - -extern "C" void UsbCompatibility_SendKeyboardReport(const usb_basic_keyboard_report_t* report) +extern "C" void UsbCompatibility_SendKeyboardReport(const usb_basic_keyboard_report_t *report) { - keyboard_app& keyboard_app = keyboard_app::handle(); + keyboard_app &keyboard_app = keyboard_app::handle(); - if (keyboard_app.has_transport()) { - keyboard_app.set_report_state(*reinterpret_cast(report)); - } else if (DEVICE_IS_UHK80_RIGHT && Bt_DeviceIsConnected(DeviceId_Uhk_Dongle)) { - Messenger_Send2(DeviceId_Uhk_Dongle, MessageId_SyncableProperty, SyncablePropertyId_KeyboardReport, (const uint8_t*)report, sizeof(*report)); + if (keyboard_app.active()) { + keyboard_app.set_report_state(*reinterpret_cast(report)); + } else if (DEVICE_IS_UHK80_RIGHT && Bt_DeviceIsConnected(DeviceId_Uhk_Dongle)) { + Messenger_Send2(DeviceId_Uhk_Dongle, MessageId_SyncableProperty, + SyncablePropertyId_KeyboardReport, (const uint8_t *)report, sizeof(*report)); } } -extern "C" void UsbCompatibility_SendMouseReport(const usb_mouse_report_t* report) +extern "C" void UsbCompatibility_SendMouseReport(const usb_mouse_report_t *report) { - mouse_app& mouse_app = mouse_app::handle(); + mouse_app &mouse_app = mouse_app::handle(); - if (mouse_app.has_transport()) { - mouse_app.set_report_state(*reinterpret_cast(report)); - } else if (DEVICE_IS_UHK80_RIGHT && Bt_DeviceIsConnected(DeviceId_Uhk_Dongle)) { - Messenger_Send2(DeviceId_Uhk_Dongle, MessageId_SyncableProperty, SyncablePropertyId_MouseReport, (const uint8_t*)report, sizeof(*report)); + if (mouse_app.active()) { + mouse_app.set_report_state(*reinterpret_cast(report)); + } else if (DEVICE_IS_UHK80_RIGHT && Bt_DeviceIsConnected(DeviceId_Uhk_Dongle)) { + Messenger_Send2(DeviceId_Uhk_Dongle, MessageId_SyncableProperty, + SyncablePropertyId_MouseReport, (const uint8_t *)report, sizeof(*report)); } } -extern "C" void UsbCompatibility_ConsumerKeyboardAddScancode(uint8_t scancode) +extern "C" void UsbCompatibility_ConsumerKeyboardAddScancode(uint8_t scancode) { controls.system_codes.set(static_cast(scancode), true); } -extern "C" void UsbCompatibility_SendConsumerReport(const usb_media_keyboard_report_t* mediaReport, const usb_system_keyboard_report_t* systemReport) +extern "C" void UsbCompatibility_SendConsumerReport(const usb_media_keyboard_report_t *mediaReport, + const usb_system_keyboard_report_t *systemReport) { controls = controls_buffer(); - for(uint8_t i = 0; i < USB_MEDIA_KEYBOARD_MAX_KEYS && mediaReport->scancodes[i] != 0; i++) { - controls.consumer_codes.set(static_cast(mediaReport->scancodes[i]), true); + for (uint8_t i = 0; i < USB_MEDIA_KEYBOARD_MAX_KEYS && mediaReport->scancodes[i] != 0; i++) { + controls.consumer_codes.set( + static_cast(mediaReport->scancodes[i]), true); } UsbSystemKeyboard_ForeachScancode(systemReport, &UsbCompatibility_ConsumerKeyboardAddScancode); - controls_app& controls_app = controls_app::handle(); + controls_app &controls_app = controls_app::handle(); - if (controls_app.has_transport()) { + if (controls_app.active()) { controls_app.set_report_state(controls); } else if (DEVICE_IS_UHK80_RIGHT && Bt_DeviceIsConnected(DeviceId_Uhk_Dongle)) { - Messenger_Send2(DeviceId_Uhk_Dongle, MessageId_SyncableProperty, SyncablePropertyId_ControlsReport, (const uint8_t*)(&controls), sizeof(controls)); + Messenger_Send2(DeviceId_Uhk_Dongle, MessageId_SyncableProperty, + SyncablePropertyId_ControlsReport, (const uint8_t *)(&controls), sizeof(controls)); } } -extern "C" void UsbCompatibility_SendConsumerReport2(const uint8_t* report) +extern "C" void UsbCompatibility_SendConsumerReport2(const uint8_t *report) { - controls_app& controls_app = controls_app::handle(); + controls_app &controls_app = controls_app::handle(); - if (controls_app.has_transport()) { - controls_app.set_report_state(*(const controls_buffer*)report); + if (controls_app.active()) { + controls_app.set_report_state(*(const controls_buffer *)report); } } -extern "C" bool UsbCompatibility_UsbConnected() { +extern "C" bool UsbCompatibility_UsbConnected() +{ return keyboard_app::handle().has_transport(); } -extern "C" void UsbCompatibility_SetKeyboardLedsState(bool capsLock, bool numLock, bool scrollLock) { - if ( KeyboardLedsState.capsLock != capsLock ) { +extern "C" void UsbCompatibility_SetKeyboardLedsState(bool capsLock, bool numLock, bool scrollLock) +{ + if (KeyboardLedsState.capsLock != capsLock) { KeyboardLedsState.capsLock = capsLock; UsbBasicKeyboard_CapsLockOn = capsLock; EventVector_Set(EventVector_KeyboardLedState); MacroEvent_CapsLockStateChanged = true; } - if ( KeyboardLedsState.numLock != numLock ) { + if (KeyboardLedsState.numLock != numLock) { KeyboardLedsState.numLock = numLock; UsbBasicKeyboard_NumLockOn = numLock; EventVector_Set(EventVector_KeyboardLedState); MacroEvent_NumLockStateChanged = true; } - if ( KeyboardLedsState.scrollLock != scrollLock ) { + if (KeyboardLedsState.scrollLock != scrollLock) { KeyboardLedsState.scrollLock = scrollLock; UsbBasicKeyboard_ScrollLockOn = scrollLock; EventVector_Set(EventVector_KeyboardLedState); From f838bcec0188dbeeede3171d21119c57837805b9 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 15 Oct 2024 21:37:39 +0200 Subject: [PATCH 17/33] usb: be lenient with the semaphore --- device/src/usb/app_base.cpp | 2 +- device/src/usb/keyboard_app.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/device/src/usb/app_base.cpp b/device/src/usb/app_base.cpp index a2ca4336..7019598a 100644 --- a/device/src/usb/app_base.cpp +++ b/device/src/usb/app_base.cpp @@ -11,7 +11,7 @@ void app_base::send(const std::span &buffer) return; } if (!sending_sem_.try_acquire_for(SEMAPHORE_RESET_TIMEOUT)) { - return; + //return; } std::copy(buffer.begin(), buffer.end(), in_buffer_.data() + sizeof(in_id_)); auto result = send_report(in_buffer_); diff --git a/device/src/usb/keyboard_app.cpp b/device/src/usb/keyboard_app.cpp index 298ec78b..3262e10b 100644 --- a/device/src/usb/keyboard_app.cpp +++ b/device/src/usb/keyboard_app.cpp @@ -73,7 +73,7 @@ void keyboard_app::set_report_state(const keys_nkro_report_base<> &data) return; } if (!sending_sem_.try_acquire_for(SEMAPHORE_RESET_TIMEOUT)) { - return; + //return; } auto result = hid::result::INVALID; if (!using_nkro()) { From fa70d431ae938f41b0e7b9906171b8b6a970e3cd Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Fri, 25 Oct 2024 06:35:49 +0200 Subject: [PATCH 18/33] usb: add print for wakeup --- device/src/usb/usb.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/device/src/usb/usb.cpp b/device/src/usb/usb.cpp index 3e1e5484..2ae622cc 100644 --- a/device/src/usb/usb.cpp +++ b/device/src/usb/usb.cpp @@ -229,8 +229,14 @@ extern "C" void USB_DisableHid() extern "C" void USB_RemoteWakeup() { - usb_manager::instance().mac().queue_task( - []() { usb_manager::instance().device().remote_wakeup(); }); + printk("USB: requesting remote wakeup\n"); + usb_manager::instance().mac().queue_task([]() { + if (usb_manager::instance().device().remote_wakeup()) { + printk("USB: sending remote wakeup\n"); + } else { + printk("USB: remote wakeup disabled\n"); + } + }); } #if DEVICE_IS_UHK80_RIGHT From 5d9ab03d2efe2055f20baf11b9975624494adf40 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 19 Nov 2024 10:35:16 +0100 Subject: [PATCH 19/33] NCS update to 2.8.0 --- .vscode/settings.json | 4 +- README.md | 2 +- ...rs-udc-eliminate-C-compiler-warnings.patch | 41 +++++++++++++------ west.yml | 2 +- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f510a7a7..4f5e6394 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,6 @@ { - "nrf-connect.toolchain.path": "${nrf-connect.toolchain:2.7.0}", - "nrf-connect.topdir": "${nrf-connect.sdk:2.7.0}", + "nrf-connect.toolchain.path": "${nrf-connect.toolchain:2.8.0}", + "nrf-connect.topdir": "${nrf-connect.sdk:2.8.0}", "nrf-connect.applications": [ "${workspaceFolder}/device" ], diff --git a/README.md b/README.md index d8daa793..2eee06f9 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Then, depending whether you want a full IDE experience or just minimal tools for - If the `build.sh` doesn't suit you, then launch the nrfutil shell: ``` - nrfutil toolchain-manager launch --shell --ncs-version v2.7.0 + nrfutil toolchain-manager launch --shell --ncs-version v2.8.0 ``` - In the shell, you can build (e.g.) uhk-80-left as follows: diff --git a/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch b/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch index 3172eb9d..0c11b6d6 100644 --- a/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch +++ b/patches/zephyr/0001-drivers-udc-eliminate-C-compiler-warnings.patch @@ -1,19 +1,18 @@ -From df36898ebd062b07764d8437ccf17d16a0d70411 Mon Sep 17 00:00:00 2001 +From f5755b7348d6ee2464ad41652a1a93950349738d Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 9 Jul 2024 22:34:13 +0200 Subject: [PATCH] drivers: udc: eliminate C++ compiler warnings Pending upstream PR: https://github.com/zephyrproject-rtos/zephyr/pull/69490 - --- - include/zephyr/drivers/usb/udc.h | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + include/zephyr/drivers/usb/udc.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/zephyr/drivers/usb/udc.h b/include/zephyr/drivers/usb/udc.h -index 0f01d877e..70012660d 100644 +index 15b99cf5251..fd35c8e2749 100644 --- a/include/zephyr/drivers/usb/udc.h +++ b/include/zephyr/drivers/usb/udc.h -@@ -299,7 +299,7 @@ struct udc_data { +@@ -309,7 +309,7 @@ struct udc_data { */ static inline bool udc_is_initialized(const struct device *dev) { @@ -22,7 +21,7 @@ index 0f01d877e..70012660d 100644 return atomic_test_bit(&data->status, UDC_STATUS_INITIALIZED); } -@@ -313,7 +313,7 @@ static inline bool udc_is_initialized(const struct device *dev) +@@ -323,7 +323,7 @@ static inline bool udc_is_initialized(const struct device *dev) */ static inline bool udc_is_enabled(const struct device *dev) { @@ -31,7 +30,7 @@ index 0f01d877e..70012660d 100644 return atomic_test_bit(&data->status, UDC_STATUS_ENABLED); } -@@ -327,7 +327,7 @@ static inline bool udc_is_enabled(const struct device *dev) +@@ -337,7 +337,7 @@ static inline bool udc_is_enabled(const struct device *dev) */ static inline bool udc_is_suspended(const struct device *dev) { @@ -40,7 +39,7 @@ index 0f01d877e..70012660d 100644 return atomic_test_bit(&data->status, UDC_STATUS_SUSPENDED); } -@@ -400,7 +400,7 @@ int udc_shutdown(const struct device *dev); +@@ -413,7 +413,7 @@ int udc_shutdown(const struct device *dev); */ static inline struct udc_device_caps udc_caps(const struct device *dev) { @@ -49,7 +48,7 @@ index 0f01d877e..70012660d 100644 return data->caps; } -@@ -430,7 +430,7 @@ enum udc_bus_speed udc_device_speed(const struct device *dev); +@@ -443,7 +443,7 @@ enum udc_bus_speed udc_device_speed(const struct device *dev); */ static inline int udc_set_address(const struct device *dev, const uint8_t addr) { @@ -58,7 +57,16 @@ index 0f01d877e..70012660d 100644 int ret; if (!udc_is_enabled(dev)) { -@@ -456,7 +456,7 @@ static inline int udc_set_address(const struct device *dev, const uint8_t addr) +@@ -475,7 +475,7 @@ static inline int udc_set_address(const struct device *dev, const uint8_t addr) + static inline int udc_test_mode(const struct device *dev, + const uint8_t mode, const bool dryrun) + { +- const struct udc_api *api = dev->api; ++ const struct udc_api *api = (const struct udc_api *)dev->api; + int ret; + + if (!udc_is_enabled(dev)) { +@@ -505,7 +505,7 @@ static inline int udc_test_mode(const struct device *dev, */ static inline int udc_host_wakeup(const struct device *dev) { @@ -67,6 +75,15 @@ index 0f01d877e..70012660d 100644 int ret; if (!udc_is_enabled(dev)) { +@@ -722,7 +722,7 @@ static inline struct udc_buf_info *udc_get_buf_info(const struct net_buf *const + */ + static inline const void *udc_get_event_ctx(const struct device *dev) + { +- struct udc_data *data = dev->data; ++ struct udc_data *data = (struct udc_data *)dev->data; + + return data->event_ctx; + } -- -2.44.0 +2.43.0 diff --git a/west.yml b/west.yml index acca67ff..85b68d06 100644 --- a/west.yml +++ b/west.yml @@ -12,7 +12,7 @@ manifest: - name: sdk-nrf remote: sdk path: nrf - revision: v2.7.0 + revision: v2.8.0 import: path-prefix: nrfconnect clone-depth: 1 From d1c5a3a0d581f33dd313b55ed61757b1049bb781 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 19 Nov 2024 11:34:39 +0100 Subject: [PATCH 20/33] move UHK 80 boards into a single directory to eliminate duplicate files --- boards/ugl/uhk-80-left/Kconfig.board | 6 -- boards/ugl/uhk-80-left/Kconfig.defconfig | 29 -------- boards/ugl/uhk-80-left/board.yml | 5 -- boards/ugl/uhk-80-right/Kconfig.defconfig | 29 -------- boards/ugl/uhk-80-right/board.cmake | 12 ---- boards/ugl/uhk-80-right/board.yml | 5 -- boards/ugl/uhk-80-right/pre_dt_board.cmake | 7 -- .../{uhk-80-right => uhk-80}/Kconfig.board | 8 +++ boards/ugl/uhk-80/Kconfig.defconfig | 68 +++++++++++++++++++ .../Kconfig.uhk-80-left | 0 .../Kconfig.uhk-80-right | 0 .../{uhk-dongle => uhk-80}/Kconfig.uhk-dongle | 0 .../ugl/{uhk-80-left => uhk-80}/board.cmake | 0 boards/ugl/uhk-80/board.yml | 13 ++++ .../pre_dt_board.cmake | 0 boards/ugl/{ => uhk-80}/shared.dtsi | 0 .../{uhk-80-left => uhk-80}/uhk-80-left.dts | 28 ++++---- .../{uhk-80-left => uhk-80}/uhk-80-left.yaml | 0 .../uhk-80-left_defconfig | 0 .../{uhk-80-right => uhk-80}/uhk-80-right.dts | 22 +++--- .../uhk-80-right.yaml | 0 .../uhk-80-right_defconfig | 0 .../ugl/{uhk-dongle => uhk-80}/uhk-dongle.dts | 12 ++-- .../{uhk-dongle => uhk-80}/uhk-dongle.yaml | 0 .../uhk-dongle_defconfig | 0 boards/ugl/uhk-dongle/Kconfig.board | 6 -- boards/ugl/uhk-dongle/Kconfig.defconfig | 29 -------- boards/ugl/uhk-dongle/board.cmake | 12 ---- boards/ugl/uhk-dongle/board.yml | 5 -- boards/ugl/uhk-dongle/pre_dt_board.cmake | 7 -- 30 files changed, 120 insertions(+), 183 deletions(-) delete mode 100644 boards/ugl/uhk-80-left/Kconfig.board delete mode 100644 boards/ugl/uhk-80-left/Kconfig.defconfig delete mode 100644 boards/ugl/uhk-80-left/board.yml delete mode 100644 boards/ugl/uhk-80-right/Kconfig.defconfig delete mode 100644 boards/ugl/uhk-80-right/board.cmake delete mode 100644 boards/ugl/uhk-80-right/board.yml delete mode 100644 boards/ugl/uhk-80-right/pre_dt_board.cmake rename boards/ugl/{uhk-80-right => uhk-80}/Kconfig.board (50%) create mode 100644 boards/ugl/uhk-80/Kconfig.defconfig rename boards/ugl/{uhk-80-left => uhk-80}/Kconfig.uhk-80-left (100%) rename boards/ugl/{uhk-80-right => uhk-80}/Kconfig.uhk-80-right (100%) rename boards/ugl/{uhk-dongle => uhk-80}/Kconfig.uhk-dongle (100%) rename boards/ugl/{uhk-80-left => uhk-80}/board.cmake (100%) create mode 100644 boards/ugl/uhk-80/board.yml rename boards/ugl/{uhk-80-left => uhk-80}/pre_dt_board.cmake (100%) rename boards/ugl/{ => uhk-80}/shared.dtsi (100%) rename boards/ugl/{uhk-80-left => uhk-80}/uhk-80-left.dts (90%) rename boards/ugl/{uhk-80-left => uhk-80}/uhk-80-left.yaml (100%) rename boards/ugl/{uhk-80-left => uhk-80}/uhk-80-left_defconfig (100%) rename boards/ugl/{uhk-80-right => uhk-80}/uhk-80-right.dts (93%) rename boards/ugl/{uhk-80-right => uhk-80}/uhk-80-right.yaml (100%) rename boards/ugl/{uhk-80-right => uhk-80}/uhk-80-right_defconfig (100%) rename boards/ugl/{uhk-dongle => uhk-80}/uhk-dongle.dts (88%) rename boards/ugl/{uhk-dongle => uhk-80}/uhk-dongle.yaml (100%) rename boards/ugl/{uhk-dongle => uhk-80}/uhk-dongle_defconfig (100%) delete mode 100644 boards/ugl/uhk-dongle/Kconfig.board delete mode 100644 boards/ugl/uhk-dongle/Kconfig.defconfig delete mode 100644 boards/ugl/uhk-dongle/board.cmake delete mode 100644 boards/ugl/uhk-dongle/board.yml delete mode 100644 boards/ugl/uhk-dongle/pre_dt_board.cmake diff --git a/boards/ugl/uhk-80-left/Kconfig.board b/boards/ugl/uhk-80-left/Kconfig.board deleted file mode 100644 index ab0a2c5b..00000000 --- a/boards/ugl/uhk-80-left/Kconfig.board +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA -# SPDX-License-Identifier: Apache-2.0 - -config BOARD_UHK_80_LEFT - bool "UHK 80 left" - depends on SOC_NRF52840_QIAA diff --git a/boards/ugl/uhk-80-left/Kconfig.defconfig b/boards/ugl/uhk-80-left/Kconfig.defconfig deleted file mode 100644 index 402accf4..00000000 --- a/boards/ugl/uhk-80-left/Kconfig.defconfig +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# used for both zephyr and mcuboot -> no custom kconfig symbols here -if BOARD_UHK_80_LEFT - -if SHELL_BACKEND_RTT -config SHELL_PROMPT_RTT - default "uhk80:left$ " -endif # SHELL_BACKEND_RTT - -if SHELL_BACKEND_SERIAL -config SHELL_PROMPT_UART - default "uhk80:left$ " -endif # SHELL_BACKEND_SERIAL - -if BT_DIS && BT_DIS_PNP -config BT_DIS_PNP_PID - default 0x8007 -endif # BT_DIS && BT_DIS_PNP - -config USB_DEVICE_PRODUCT - default "UHK 80 left half" - -config USB_DEVICE_PID - default 0x0007 - -config BT_CTLR - default BT - -endif # BOARD_UHK_80_LEFT diff --git a/boards/ugl/uhk-80-left/board.yml b/boards/ugl/uhk-80-left/board.yml deleted file mode 100644 index 3280b562..00000000 --- a/boards/ugl/uhk-80-left/board.yml +++ /dev/null @@ -1,5 +0,0 @@ -board: - name: uhk-80-left - vendor: ugl - socs: - - name: nrf52840 diff --git a/boards/ugl/uhk-80-right/Kconfig.defconfig b/boards/ugl/uhk-80-right/Kconfig.defconfig deleted file mode 100644 index cdd77c30..00000000 --- a/boards/ugl/uhk-80-right/Kconfig.defconfig +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# used for both zephyr and mcuboot -> no custom kconfig symbols here -if BOARD_UHK_80_RIGHT - -if SHELL_BACKEND_RTT -config SHELL_PROMPT_RTT - default "uhk80:right$ " -endif # SHELL_BACKEND_RTT - -if SHELL_BACKEND_SERIAL -config SHELL_PROMPT_UART - default "uhk80:right$ " -endif # SHELL_BACKEND_SERIAL - -if BT_DIS && BT_DIS_PNP -config BT_DIS_PNP_PID - default 0x8009 -endif # BT_DIS && BT_DIS_PNP - -config USB_DEVICE_PRODUCT - default "UHK 80 right half" - -config USB_DEVICE_PID - default 0x0009 - -config BT_CTLR - default BT - -endif # BOARD_UHK_80_RIGHT diff --git a/boards/ugl/uhk-80-right/board.cmake b/boards/ugl/uhk-80-right/board.cmake deleted file mode 100644 index 5c6b5319..00000000 --- a/boards/ugl/uhk-80-right/board.cmake +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2021 Nordic Semiconductor ASA -# SPDX-License-Identifier: Apache-2.0 - -board_runner_args(jlink "--device=nrf52" "--speed=4000") -board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") - -set(OPENOCD_NRF5_SUBFAMILY "nrf52") - -include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) -include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) -include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) -include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) diff --git a/boards/ugl/uhk-80-right/board.yml b/boards/ugl/uhk-80-right/board.yml deleted file mode 100644 index c7335f7e..00000000 --- a/boards/ugl/uhk-80-right/board.yml +++ /dev/null @@ -1,5 +0,0 @@ -board: - name: uhk-80-right - vendor: ugl - socs: - - name: nrf52840 diff --git a/boards/ugl/uhk-80-right/pre_dt_board.cmake b/boards/ugl/uhk-80-right/pre_dt_board.cmake deleted file mode 100644 index 3369c21d..00000000 --- a/boards/ugl/uhk-80-right/pre_dt_board.cmake +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2022 Nordic Semiconductor -# SPDX-License-Identifier: Apache-2.0 - -# Suppress "unique_unit_address_if_enabled" to handle the following overlaps: -# - power@40000000 & clock@40000000 & bprot@40000000 -# - acl@4001e000 & flash-controller@4001e000 -list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") diff --git a/boards/ugl/uhk-80-right/Kconfig.board b/boards/ugl/uhk-80/Kconfig.board similarity index 50% rename from boards/ugl/uhk-80-right/Kconfig.board rename to boards/ugl/uhk-80/Kconfig.board index e29fdbeb..cbbbab86 100644 --- a/boards/ugl/uhk-80-right/Kconfig.board +++ b/boards/ugl/uhk-80/Kconfig.board @@ -1,6 +1,14 @@ # Copyright (c) 2023 Nordic Semiconductor ASA # SPDX-License-Identifier: Apache-2.0 +config BOARD_UHK_80_LEFT + bool "UHK 80 left" + depends on SOC_NRF52840_QIAA + config BOARD_UHK_80_RIGHT bool "UHK 80 right" depends on SOC_NRF52840_QIAA + +config BOARD_UHK_DONGLE + bool "UHK dongle" + depends on SOC_NRF52840_QIAA diff --git a/boards/ugl/uhk-80/Kconfig.defconfig b/boards/ugl/uhk-80/Kconfig.defconfig new file mode 100644 index 00000000..55a1de23 --- /dev/null +++ b/boards/ugl/uhk-80/Kconfig.defconfig @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: Apache-2.0 +# used for both zephyr and mcuboot -> no custom kconfig symbols here + +if SHELL_BACKEND_RTT +if BOARD_UHK_80_LEFT +config SHELL_PROMPT_RTT + default "uhk80:left$ " +endif +if BOARD_UHK_80_RIGHT +config SHELL_PROMPT_RTT + default "uhk80:right$ " +endif +if BOARD_UHK_DONGLE +config SHELL_PROMPT_RTT + default "uhk-dongle$ " +endif +endif # SHELL_BACKEND_RTT + +if SHELL_BACKEND_SERIAL +if BOARD_UHK_80_LEFT +config SHELL_PROMPT_UART + default "uhk80:left$ " +endif +if BOARD_UHK_80_RIGHT +config SHELL_PROMPT_UART + default "uhk80:right$ " +endif +if BOARD_UHK_DONGLE +config SHELL_PROMPT_UART + default "uhk-dongle$ " +endif +endif # SHELL_BACKEND_SERIAL + +if BOARD_UHK_80_LEFT +config USB_DEVICE_PRODUCT + default "UHK 80 left half" +config USB_DEVICE_PID + default 0x0007 +if BT_DIS && BT_DIS_PNP +config BT_DIS_PNP_PID + default 0x8007 +endif # BT_DIS && BT_DIS_PNP +endif + +if BOARD_UHK_80_RIGHT +config USB_DEVICE_PRODUCT + default "UHK 80 right half" +config USB_DEVICE_PID + default 0x0009 +if BT_DIS && BT_DIS_PNP +config BT_DIS_PNP_PID + default 0x8009 +endif # BT_DIS && BT_DIS_PNP +endif + +if BOARD_UHK_DONGLE +config USB_DEVICE_PRODUCT + default "UHK dongle" +config USB_DEVICE_PID + default 0x0005 +if BT_DIS && BT_DIS_PNP +config BT_DIS_PNP_PID + default 0x8005 +endif # BT_DIS && BT_DIS_PNP +endif + +config BT_CTLR + default BT diff --git a/boards/ugl/uhk-80-left/Kconfig.uhk-80-left b/boards/ugl/uhk-80/Kconfig.uhk-80-left similarity index 100% rename from boards/ugl/uhk-80-left/Kconfig.uhk-80-left rename to boards/ugl/uhk-80/Kconfig.uhk-80-left diff --git a/boards/ugl/uhk-80-right/Kconfig.uhk-80-right b/boards/ugl/uhk-80/Kconfig.uhk-80-right similarity index 100% rename from boards/ugl/uhk-80-right/Kconfig.uhk-80-right rename to boards/ugl/uhk-80/Kconfig.uhk-80-right diff --git a/boards/ugl/uhk-dongle/Kconfig.uhk-dongle b/boards/ugl/uhk-80/Kconfig.uhk-dongle similarity index 100% rename from boards/ugl/uhk-dongle/Kconfig.uhk-dongle rename to boards/ugl/uhk-80/Kconfig.uhk-dongle diff --git a/boards/ugl/uhk-80-left/board.cmake b/boards/ugl/uhk-80/board.cmake similarity index 100% rename from boards/ugl/uhk-80-left/board.cmake rename to boards/ugl/uhk-80/board.cmake diff --git a/boards/ugl/uhk-80/board.yml b/boards/ugl/uhk-80/board.yml new file mode 100644 index 00000000..d9adb6a7 --- /dev/null +++ b/boards/ugl/uhk-80/board.yml @@ -0,0 +1,13 @@ +boards: + - name: uhk-80-left + vendor: ugl + socs: + - name: nrf52840 + - name: uhk-80-right + vendor: ugl + socs: + - name: nrf52840 + - name: uhk-dongle + vendor: ugl + socs: + - name: nrf52840 diff --git a/boards/ugl/uhk-80-left/pre_dt_board.cmake b/boards/ugl/uhk-80/pre_dt_board.cmake similarity index 100% rename from boards/ugl/uhk-80-left/pre_dt_board.cmake rename to boards/ugl/uhk-80/pre_dt_board.cmake diff --git a/boards/ugl/shared.dtsi b/boards/ugl/uhk-80/shared.dtsi similarity index 100% rename from boards/ugl/shared.dtsi rename to boards/ugl/uhk-80/shared.dtsi diff --git a/boards/ugl/uhk-80-left/uhk-80-left.dts b/boards/ugl/uhk-80/uhk-80-left.dts similarity index 90% rename from boards/ugl/uhk-80-left/uhk-80-left.dts rename to boards/ugl/uhk-80/uhk-80-left.dts index 0d0d4ab0..52171794 100644 --- a/boards/ugl/uhk-80-left/uhk-80-left.dts +++ b/boards/ugl/uhk-80/uhk-80-left.dts @@ -1,6 +1,6 @@ /dts-v1/; #include -#include "../shared.dtsi" +#include "shared.dtsi" &gpio1 { status = "okay"; @@ -53,7 +53,7 @@ uart0_sleep: uart0_sleep { group1 { psels = , - ; + ; low-power-enable; }; }; @@ -71,7 +71,7 @@ uart1_sleep: uart1_sleep { group1 { psels = , - ; + ; low-power-enable; }; }; @@ -93,18 +93,18 @@ i2c2_default: i2c2_default { group1 { - psels = , - ; - bias-pull-up; + psels = , + ; + bias-pull-up; }; - }; - i2c2_sleep: i2c2_sleep { + }; + i2c2_sleep: i2c2_sleep { group1 { - psels = , - ; - low-power-enable; + psels = , + ; + low-power-enable; }; - }; + }; }; &spi1 { @@ -171,8 +171,8 @@ }; col1: col1 { - gpios = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; - label = "col1"; + gpios = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; + label = "col1"; }; col2: col2 { gpios = <&gpio0 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; diff --git a/boards/ugl/uhk-80-left/uhk-80-left.yaml b/boards/ugl/uhk-80/uhk-80-left.yaml similarity index 100% rename from boards/ugl/uhk-80-left/uhk-80-left.yaml rename to boards/ugl/uhk-80/uhk-80-left.yaml diff --git a/boards/ugl/uhk-80-left/uhk-80-left_defconfig b/boards/ugl/uhk-80/uhk-80-left_defconfig similarity index 100% rename from boards/ugl/uhk-80-left/uhk-80-left_defconfig rename to boards/ugl/uhk-80/uhk-80-left_defconfig diff --git a/boards/ugl/uhk-80-right/uhk-80-right.dts b/boards/ugl/uhk-80/uhk-80-right.dts similarity index 93% rename from boards/ugl/uhk-80-right/uhk-80-right.dts rename to boards/ugl/uhk-80/uhk-80-right.dts index 2b871039..245c1727 100644 --- a/boards/ugl/uhk-80-right/uhk-80-right.dts +++ b/boards/ugl/uhk-80/uhk-80-right.dts @@ -1,6 +1,6 @@ /dts-v1/; #include -#include "../shared.dtsi" +#include "shared.dtsi" &gpio1 { status = "okay"; @@ -53,7 +53,7 @@ uart0_sleep: uart0_sleep { group1 { psels = , - ; + ; low-power-enable; }; }; @@ -71,7 +71,7 @@ uart1_sleep: uart1_sleep { group1 { psels = , - ; + ; low-power-enable; }; }; @@ -92,16 +92,16 @@ }; i2c2_default: i2c2_default { group1 { - psels = , - ; - bias-pull-up; + psels = , + ; + bias-pull-up; }; - }; - i2c2_sleep: i2c2_sleep { + }; + i2c2_sleep: i2c2_sleep { group1 { - psels = , - ; - low-power-enable; + psels = , + ; + low-power-enable; }; }; }; diff --git a/boards/ugl/uhk-80-right/uhk-80-right.yaml b/boards/ugl/uhk-80/uhk-80-right.yaml similarity index 100% rename from boards/ugl/uhk-80-right/uhk-80-right.yaml rename to boards/ugl/uhk-80/uhk-80-right.yaml diff --git a/boards/ugl/uhk-80-right/uhk-80-right_defconfig b/boards/ugl/uhk-80/uhk-80-right_defconfig similarity index 100% rename from boards/ugl/uhk-80-right/uhk-80-right_defconfig rename to boards/ugl/uhk-80/uhk-80-right_defconfig diff --git a/boards/ugl/uhk-dongle/uhk-dongle.dts b/boards/ugl/uhk-80/uhk-dongle.dts similarity index 88% rename from boards/ugl/uhk-dongle/uhk-dongle.dts rename to boards/ugl/uhk-80/uhk-dongle.dts index 9a0da29e..8d5792d5 100644 --- a/boards/ugl/uhk-dongle/uhk-dongle.dts +++ b/boards/ugl/uhk-80/uhk-dongle.dts @@ -1,6 +1,6 @@ /dts-v1/; #include -#include "../shared.dtsi" +#include "shared.dtsi" &pwm0 { status = "okay"; @@ -23,7 +23,7 @@ uart0_sleep: uart0_sleep { group1 { psels = , - ; + ; low-power-enable; }; }; @@ -31,8 +31,8 @@ pwm0_default: pwm0_default { group1 { psels = , - , - ; + , + ; nordic,invert; }; }; @@ -40,8 +40,8 @@ pwm0_sleep: pwm0_sleep { group1 { psels = , - , - ; + , + ; low-power-enable; }; }; diff --git a/boards/ugl/uhk-dongle/uhk-dongle.yaml b/boards/ugl/uhk-80/uhk-dongle.yaml similarity index 100% rename from boards/ugl/uhk-dongle/uhk-dongle.yaml rename to boards/ugl/uhk-80/uhk-dongle.yaml diff --git a/boards/ugl/uhk-dongle/uhk-dongle_defconfig b/boards/ugl/uhk-80/uhk-dongle_defconfig similarity index 100% rename from boards/ugl/uhk-dongle/uhk-dongle_defconfig rename to boards/ugl/uhk-80/uhk-dongle_defconfig diff --git a/boards/ugl/uhk-dongle/Kconfig.board b/boards/ugl/uhk-dongle/Kconfig.board deleted file mode 100644 index 16555109..00000000 --- a/boards/ugl/uhk-dongle/Kconfig.board +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (c) 2023 Nordic Semiconductor ASA -# SPDX-License-Identifier: Apache-2.0 - -config BOARD_UHK_DONGLE - bool "UHK dongle" - depends on SOC_NRF52840_QIAA diff --git a/boards/ugl/uhk-dongle/Kconfig.defconfig b/boards/ugl/uhk-dongle/Kconfig.defconfig deleted file mode 100644 index ff53103c..00000000 --- a/boards/ugl/uhk-dongle/Kconfig.defconfig +++ /dev/null @@ -1,29 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# used for both zephyr and mcuboot -> no custom kconfig symbols here -if BOARD_UHK_DONGLE - -if SHELL_BACKEND_RTT -config SHELL_PROMPT_RTT - default "uhk-dongle$ " -endif # SHELL_BACKEND_RTT - -if SHELL_BACKEND_SERIAL -config SHELL_PROMPT_UART - default "uhk-dongle$ " -endif # SHELL_BACKEND_SERIAL - -if BT_DIS && BT_DIS_PNP -config BT_DIS_PNP_PID - default 0x8005 -endif # BT_DIS && BT_DIS_PNP - -config USB_DEVICE_PRODUCT - default "UHK dongle" - -config USB_DEVICE_PID - default 0x0005 - -config BT_CTLR - default BT - -endif # BOARD_UHK_DONGLE diff --git a/boards/ugl/uhk-dongle/board.cmake b/boards/ugl/uhk-dongle/board.cmake deleted file mode 100644 index 5c6b5319..00000000 --- a/boards/ugl/uhk-dongle/board.cmake +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2021 Nordic Semiconductor ASA -# SPDX-License-Identifier: Apache-2.0 - -board_runner_args(jlink "--device=nrf52" "--speed=4000") -board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000") - -set(OPENOCD_NRF5_SUBFAMILY "nrf52") - -include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) -include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) -include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) -include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) diff --git a/boards/ugl/uhk-dongle/board.yml b/boards/ugl/uhk-dongle/board.yml deleted file mode 100644 index bcb42ea4..00000000 --- a/boards/ugl/uhk-dongle/board.yml +++ /dev/null @@ -1,5 +0,0 @@ -board: - name: uhk-dongle - vendor: ugl - socs: - - name: nrf52840 diff --git a/boards/ugl/uhk-dongle/pre_dt_board.cmake b/boards/ugl/uhk-dongle/pre_dt_board.cmake deleted file mode 100644 index 3369c21d..00000000 --- a/boards/ugl/uhk-dongle/pre_dt_board.cmake +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (c) 2022 Nordic Semiconductor -# SPDX-License-Identifier: Apache-2.0 - -# Suppress "unique_unit_address_if_enabled" to handle the following overlaps: -# - power@40000000 & clock@40000000 & bprot@40000000 -# - acl@4001e000 & flash-controller@4001e000 -list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled") From 4b7805c8e1e670bca2f2f5bfb591e37f86130910 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Sat, 9 Nov 2024 22:32:53 +0100 Subject: [PATCH 21/33] import c2usb not as submodule, but as zephyr module --- .gitmodules | 3 --- device/CMakeLists.txt | 4 ---- device/Kconfig | 2 -- device/c2usb | 1 - device/prj.conf.overlays/c2usb.conf | 6 ------ lib/c2usb | 1 - west.yml | 8 +++++++- 7 files changed, 7 insertions(+), 18 deletions(-) delete mode 120000 device/c2usb delete mode 160000 lib/c2usb diff --git a/.gitmodules b/.gitmodules index c98df3f4..0e7eb87b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,6 +13,3 @@ [submodule "lib/SDK_2.8.0_MKL17Z32xxx4"] path = lib/SDK_2.8.0_MKL17Z32xxx4 url = https://github.com/UltimateHackingKeyboard/SDK_2.8.0_MKL17Z32xxx4.git -[submodule "lib/c2usb"] - path = lib/c2usb - url = https://github.com/IntergatedCircuits/c2usb.git diff --git a/device/CMakeLists.txt b/device/CMakeLists.txt index ba0f2241..6921c7d6 100644 --- a/device/CMakeLists.txt +++ b/device/CMakeLists.txt @@ -41,10 +41,6 @@ if(NOT BOARD STREQUAL "uhk-60-right") # C headers compiled with C++ give pointer conversion errors, turn them to warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") - set(C2USB_PATH "c2usb") - - add_subdirectory(${C2USB_PATH}) - # Link app to c2usb target_link_libraries(app PRIVATE c2usb diff --git a/device/Kconfig b/device/Kconfig index 7f75c93c..f3a70949 100644 --- a/device/Kconfig +++ b/device/Kconfig @@ -73,5 +73,3 @@ configdefault BT_DEVICE_APPEARANCE # to these application-specific defaults instead of the unconditional default in the Zephyr Kconfig tree. # https://github.com/nrfconnect/sdk-nrf/blob/4b9841a28e97e9d61b93f8981375d644b9d04ea0/samples/bluetooth/mesh/light/Kconfig#L11C1-L13C30 source "Kconfig.zephyr" - -rsource "c2usb/c2usb/port/zephyr/Kconfig" diff --git a/device/c2usb b/device/c2usb deleted file mode 120000 index 060933c7..00000000 --- a/device/c2usb +++ /dev/null @@ -1 +0,0 @@ -../lib/c2usb \ No newline at end of file diff --git a/device/prj.conf.overlays/c2usb.conf b/device/prj.conf.overlays/c2usb.conf index 1c6f34e8..a2b4c7c3 100644 --- a/device/prj.conf.overlays/c2usb.conf +++ b/device/prj.conf.overlays/c2usb.conf @@ -1,9 +1,3 @@ -CONFIG_CPP=y -CONFIG_STD_CPP20=y -CONFIG_NEWLIB_LIBC=y -CONFIG_GLIBCXX_LIBCPP=y - -# CONFIG_UDC_DRIVER=y CONFIG_UDC_DRIVER_LOG_LEVEL_WRN=y CONFIG_WARN_EXPERIMENTAL=n diff --git a/lib/c2usb b/lib/c2usb deleted file mode 160000 index db88eb05..00000000 --- a/lib/c2usb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db88eb051cb0792f0296ce58357180029f3da5e2 diff --git a/west.yml b/west.yml index 85b68d06..6aecb198 100644 --- a/west.yml +++ b/west.yml @@ -7,6 +7,8 @@ manifest: url-base: https://github.com/nrfconnect - name: zephyr url-base: https://github.com/zephyrproject-rtos + - name: IntergatedCircuits + url-base: https://github.com/IntergatedCircuits projects: - name: sdk-nrf @@ -30,5 +32,9 @@ manifest: - name: hal_nxp remote: zephyr - path: nrfconnect/zephyr-hal-nxp + clone-depth: 1 + + - name: c2usb + remote: IntergatedCircuits + revision: da4ad86f1cd3a4f8b42aa2d9acdd43e384341ce4 clone-depth: 1 From 2ca89b539c00617b2f2de5edd52240193b36415c Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Wed, 20 Nov 2024 14:46:49 +0100 Subject: [PATCH 22/33] use newlib libc to print assert sources --- device/prj.conf.overlays/c2usb.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device/prj.conf.overlays/c2usb.conf b/device/prj.conf.overlays/c2usb.conf index a2b4c7c3..95b6e716 100644 --- a/device/prj.conf.overlays/c2usb.conf +++ b/device/prj.conf.overlays/c2usb.conf @@ -1,3 +1,6 @@ +CONFIG_NEWLIB_LIBC=y +CONFIG_NEWLIB_LIBC_NANO=y + CONFIG_UDC_DRIVER_LOG_LEVEL_WRN=y CONFIG_WARN_EXPERIMENTAL=n From fffb713ac8c0caebd7aace217c134cd604100c61 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 26 Nov 2024 00:07:29 +0100 Subject: [PATCH 23/33] kconfig: limit BLE functionality to what's used per board --- .vscode/tasks.json | 6 +- boards/ugl/uhk-80/Kconfig.defconfig | 119 +++++++++++-------- device/CMakePresets.json | 18 +-- device/Kconfig | 13 +- device/prj.conf | 2 - device/prj.conf.overlays/ble-hid.conf | 5 - device/prj.conf.overlays/ble_hid.conf | 13 ++ device/prj.conf.overlays/ble_nus.conf | 3 + device/prj.conf.overlays/ble_nus_client.conf | 9 ++ device/prj.conf.overlays/nrf_shared.conf | 54 ++++----- device/prj.conf.overlays/uhk-80.conf | 7 ++ 11 files changed, 137 insertions(+), 112 deletions(-) delete mode 100644 device/prj.conf.overlays/ble-hid.conf create mode 100644 device/prj.conf.overlays/ble_hid.conf create mode 100644 device/prj.conf.overlays/ble_nus.conf create mode 100644 device/prj.conf.overlays/ble_nus_client.conf diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 400ee865..db48e992 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -107,7 +107,7 @@ "--", "-DNCS_TOOLCHAIN_VERSION=NONE", "-DCONF_FILE=${cwd}/device/prj.conf", - "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/uhk-80.conf", + "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/uhk-80.conf;${cwd}/device/prj.conf.overlays/ble_nus.conf", "-DBOARD_ROOT=${cwd}", "-Dmcuboot_OVERLAY_CONFIG=${cwd}/device/child_image/mcuboot.conf;${cwd}/device/child_image/uhk-80-left.mcuboot.conf" ], @@ -143,7 +143,7 @@ "--", "-DNCS_TOOLCHAIN_VERSION=NONE", "-DCONF_FILE=${cwd}/device/prj.conf", - "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/uhk-80.conf;${cwd}/device/prj.conf.overlays/ble-hid.conf", + "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/uhk-80.conf;${cwd}/device/prj.conf.overlays/ble_nus.conf;${cwd}/device/prj.conf.overlays/ble_nus_client.conf;${cwd}/device/prj.conf.overlays/ble_hid.conf", "-DBOARD_ROOT=${cwd}", "-Dmcuboot_OVERLAY_CONFIG=${cwd}/device/child_image/mcuboot.conf;${cwd}/device/child_image/uhk-80-right.mcuboot.conf" ], @@ -179,7 +179,7 @@ "--", "-DNCS_TOOLCHAIN_VERSION=NONE", "-DCONF_FILE=${cwd}/device/prj.conf", - "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf", + "-DEXTRA_CONF_FILE=${cwd}/device/prj.conf.overlays/nrf_shared.conf;${cwd}/device/prj.conf.overlays/c2usb.conf;${cwd}/device/prj.conf.overlays/ble_nus_client.conf", "-DBOARD_ROOT=${cwd}", "-Dmcuboot_OVERLAY_CONFIG=${cwd}/device/child_image/mcuboot.conf;${cwd}/device/child_image/uhk-dongle.mcuboot.conf" ], diff --git a/boards/ugl/uhk-80/Kconfig.defconfig b/boards/ugl/uhk-80/Kconfig.defconfig index 55a1de23..1b3b747b 100644 --- a/boards/ugl/uhk-80/Kconfig.defconfig +++ b/boards/ugl/uhk-80/Kconfig.defconfig @@ -2,67 +2,84 @@ # used for both zephyr and mcuboot -> no custom kconfig symbols here if SHELL_BACKEND_RTT -if BOARD_UHK_80_LEFT -config SHELL_PROMPT_RTT - default "uhk80:left$ " -endif -if BOARD_UHK_80_RIGHT -config SHELL_PROMPT_RTT - default "uhk80:right$ " -endif -if BOARD_UHK_DONGLE -config SHELL_PROMPT_RTT - default "uhk-dongle$ " -endif + if BOARD_UHK_80_LEFT + config SHELL_PROMPT_RTT + default "uhk80:left$ " + endif + if BOARD_UHK_80_RIGHT + config SHELL_PROMPT_RTT + default "uhk80:right$ " + endif + if BOARD_UHK_DONGLE + config SHELL_PROMPT_RTT + default "uhk-dongle$ " + endif endif # SHELL_BACKEND_RTT if SHELL_BACKEND_SERIAL -if BOARD_UHK_80_LEFT -config SHELL_PROMPT_UART - default "uhk80:left$ " -endif -if BOARD_UHK_80_RIGHT -config SHELL_PROMPT_UART - default "uhk80:right$ " -endif -if BOARD_UHK_DONGLE -config SHELL_PROMPT_UART - default "uhk-dongle$ " -endif + if BOARD_UHK_80_LEFT + config SHELL_PROMPT_UART + default "uhk80:left$ " + endif + if BOARD_UHK_80_RIGHT + config SHELL_PROMPT_UART + default "uhk80:right$ " + endif + if BOARD_UHK_DONGLE + config SHELL_PROMPT_UART + default "uhk-dongle$ " + endif endif # SHELL_BACKEND_SERIAL if BOARD_UHK_80_LEFT -config USB_DEVICE_PRODUCT - default "UHK 80 left half" -config USB_DEVICE_PID - default 0x0007 -if BT_DIS && BT_DIS_PNP -config BT_DIS_PNP_PID - default 0x8007 -endif # BT_DIS && BT_DIS_PNP -endif + config USB_DEVICE_PRODUCT + default "UHK 80 left half" + config USB_DEVICE_PID + default 0x0007 + if BT_DIS && BT_DIS_PNP + config BT_DIS_PNP_PID + default 0x8007 + endif # BT_DIS && BT_DIS_PNP +endif # BOARD_UHK_80_LEFT if BOARD_UHK_80_RIGHT -config USB_DEVICE_PRODUCT - default "UHK 80 right half" -config USB_DEVICE_PID - default 0x0009 -if BT_DIS && BT_DIS_PNP -config BT_DIS_PNP_PID - default 0x8009 -endif # BT_DIS && BT_DIS_PNP -endif + config USB_DEVICE_PRODUCT + default "UHK 80 right half" + config USB_DEVICE_PID + default 0x0009 + + if BT_DIS && BT_DIS_PNP + config BT_DIS_PNP_PID + default 0x8009 + endif # BT_DIS && BT_DIS_PNP + + if BT + # uhk-80-right is NUS server AND client, and HID server + config BT_MAX_CONN + default 3 + # use different connection parameters for HID clients and dongle + config BT_GAP_AUTO_UPDATE_CONN_PARAMS + default n + endif # BT +endif # BOARD_UHK_80_RIGHT if BOARD_UHK_DONGLE -config USB_DEVICE_PRODUCT - default "UHK dongle" -config USB_DEVICE_PID - default 0x0005 -if BT_DIS && BT_DIS_PNP -config BT_DIS_PNP_PID - default 0x8005 -endif # BT_DIS && BT_DIS_PNP -endif + config USB_DEVICE_PRODUCT + default "UHK dongle" + config USB_DEVICE_PID + default 0x0005 + if BT_DIS && BT_DIS_PNP + config BT_DIS_PNP_PID + default 0x8005 + endif # BT_DIS && BT_DIS_PNP +endif # BOARD_UHK_DONGLE + +if BT + config BT_DEVICE_NAME + default "UHK 80" if BOARD_UHK_80_LEFT || BOARD_UHK_80_RIGHT + config BT_DEVICE_APPEARANCE + default 961 +endif # BT config BT_CTLR default BT diff --git a/device/CMakePresets.json b/device/CMakePresets.json index 004924cc..ae40300c 100644 --- a/device/CMakePresets.json +++ b/device/CMakePresets.json @@ -32,9 +32,6 @@ "BOARD_ROOT": "${sourceParentDir}/", "CONF_FILE": "${sourceDir}/prj.conf", "OVERLAY_CONFIG": "${sourceDir}/prj.conf.overlays/uhk-60-v2-right.prj.conf" - }, - "warnings": { - "dev": false } }, { @@ -47,10 +44,7 @@ "BOARD": "uhk-80-right", "BOARD_ROOT": "${sourceParentDir}/", "mcuboot_OVERLAY_CONFIG": "${sourceDir}/child_image/mcuboot.conf;${sourceDir}/child_image/uhk-80-right.mcuboot.conf", - "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/uhk-80.conf;${sourceDir}/prj.conf.overlays/ble-hid.conf" - }, - "warnings": { - "dev": false + "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/uhk-80.conf;${sourceDir}/prj.conf.overlays/ble_nus.conf;${sourceDir}/prj.conf.overlays/ble_nus_client.conf;${sourceDir}/prj.conf.overlays/ble_hid.conf" } }, { @@ -63,10 +57,7 @@ "BOARD": "uhk-80-left", "BOARD_ROOT": "${sourceParentDir}/", "mcuboot_OVERLAY_CONFIG": "${sourceDir}/child_image/mcuboot.conf;${sourceDir}/child_image/uhk-80-left.mcuboot.conf", - "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/uhk-80.conf" - }, - "warnings": { - "dev": false + "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/uhk-80.conf;${sourceDir}/prj.conf.overlays/ble_nus.conf" } }, { @@ -79,10 +70,7 @@ "BOARD": "uhk-dongle", "BOARD_ROOT": "${sourceParentDir}/", "mcuboot_OVERLAY_CONFIG": "${sourceDir}/child_image/mcuboot.conf;${sourceDir}/child_image/uhk-dongle.mcuboot.conf", - "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf" - }, - "warnings": { - "dev": false + "EXTRA_CONF_FILE": "${sourceDir}/prj.conf.overlays/nrf_shared.conf;${sourceDir}/prj.conf.overlays/c2usb.conf;${sourceDir}/prj.conf.overlays/ble_nus_client.conf" } } ] diff --git a/device/Kconfig b/device/Kconfig index f3a70949..273fd3d8 100644 --- a/device/Kconfig +++ b/device/Kconfig @@ -8,6 +8,12 @@ config DEVICE_ID help The device id that identifies the specific UHK half or dongle. +config UHK_BATTERY_DEVICE + bool + default y if BOARD_UHK_80_LEFT || BOARD_UHK_80_RIGHT + default n + imply ADC + config KEYBOARD_MAX_SCANCODE hex "highest keyboard scancode" default 0x86 @@ -64,10 +70,9 @@ configdefault BT_DIS_PNP_VID configdefault BT_DIS_PNP_VER default USB_DEVICE_PRODUCT_VERSION -configdefault BT_DEVICE_NAME - default "UHK 80" if BOARD_UHK_80_LEFT || BOARD_UHK_80_RIGHT -configdefault BT_DEVICE_APPEARANCE - default 961 +# CONFIG_NCS_SAMPLES_DEFAULTS: +configdefault LOG_DEFAULT_MINIMAL + default y # configdefaults must come before sourcing "Kconfig.zephyr" in order to give precedence # to these application-specific defaults instead of the unconditional default in the Zephyr Kconfig tree. diff --git a/device/prj.conf b/device/prj.conf index a5f2ab43..b053aa5c 100644 --- a/device/prj.conf +++ b/device/prj.conf @@ -12,5 +12,3 @@ CONFIG_DEBUG=y # re-enable these behaviors that change their default in debug builds? CONFIG_REBOOT=y -CONFIG_KERNEL_SHELL_REBOOT_DELAY=0 -CONFIG_RESET_ON_FATAL_ERROR=y diff --git a/device/prj.conf.overlays/ble-hid.conf b/device/prj.conf.overlays/ble-hid.conf deleted file mode 100644 index 04a6a119..00000000 --- a/device/prj.conf.overlays/ble-hid.conf +++ /dev/null @@ -1,5 +0,0 @@ -CONFIG_C2USB_BLUETOOTH=y -CONFIG_BT_KEYS_OVERWRITE_OLDEST=y -CONFIG_BT_KEYS_SAVE_AGING_COUNTER_ON_PAIRING=y -CONFIG_BT_MAX_CONN=4 -CONFIG_BT_MAX_PAIRED=20 diff --git a/device/prj.conf.overlays/ble_hid.conf b/device/prj.conf.overlays/ble_hid.conf new file mode 100644 index 00000000..f6465381 --- /dev/null +++ b/device/prj.conf.overlays/ble_hid.conf @@ -0,0 +1,13 @@ +CONFIG_BT_PERIPHERAL=y + +# BLE link key management: keep the most recent keys, at the cost of flash wear +CONFIG_BT_KEYS_OVERWRITE_OLDEST=y +CONFIG_BT_KEYS_SAVE_AGING_COUNTER_ON_PAIRING=y +CONFIG_BT_MAX_PAIRED=20 + +# use BLE HID over GATT from c2usb +CONFIG_C2USB_BLUETOOTH=y +# battery status to generic client +CONFIG_BT_BAS=y +# device information to generic client +CONFIG_BT_DIS=y diff --git a/device/prj.conf.overlays/ble_nus.conf b/device/prj.conf.overlays/ble_nus.conf new file mode 100644 index 00000000..72eb25b3 --- /dev/null +++ b/device/prj.conf.overlays/ble_nus.conf @@ -0,0 +1,3 @@ +CONFIG_BT_PERIPHERAL=y +CONFIG_BT_NUS=y +CONFIG_BT_NUS_AUTHEN=y diff --git a/device/prj.conf.overlays/ble_nus_client.conf b/device/prj.conf.overlays/ble_nus_client.conf new file mode 100644 index 00000000..b4e83058 --- /dev/null +++ b/device/prj.conf.overlays/ble_nus_client.conf @@ -0,0 +1,9 @@ +CONFIG_BT_CENTRAL=y +CONFIG_BT_GATT_CLIENT=y +CONFIG_BT_NUS_CLIENT=y +CONFIG_BT_SCAN=y +CONFIG_BT_SCAN_FILTER_ENABLE=y +CONFIG_BT_SCAN_UUID_CNT=1 +CONFIG_BT_GATT_DM=y +CONFIG_HEAP_MEM_POOL_SIZE=2048 +CONFIG_BT_SCAN_ADDRESS_CNT=2 diff --git a/device/prj.conf.overlays/nrf_shared.conf b/device/prj.conf.overlays/nrf_shared.conf index 716744b8..6193e8f0 100644 --- a/device/prj.conf.overlays/nrf_shared.conf +++ b/device/prj.conf.overlays/nrf_shared.conf @@ -1,32 +1,38 @@ # Kconfig options to be shared across nRF52-based UHK devices CONFIG_PINCTRL=y -CONFIG_RETAINED_MEM=y -CONFIG_RETENTION=y -CONFIG_RETENTION_BOOT_MODE=y CONFIG_EXTRA_EXCEPTION_INFO=y CONFIG_INIT_STACKS=y -CONFIG_NCS_SAMPLES_DEFAULTS=y +# CONFIG_NCS_SAMPLES_DEFAULTS: +CONFIG_LOG=y +CONFIG_ASSERT=y +CONFIG_ASSERT_NO_COND_INFO=y +CONFIG_ASSERT_NO_MSG_INFO=y +CONFIG_RESET_ON_FATAL_ERROR=y CONFIG_BT=y # CONFIG_BT_DEBUG_LOG=y -CONFIG_BT_MAX_CONN=2 -CONFIG_BT_MAX_PAIRED=2 CONFIG_BT_SMP=y + CONFIG_BT_L2CAP_TX_BUF_COUNT=5 -CONFIG_BT_PERIPHERAL=y -CONFIG_BT_BAS=y +# negotiate larger MTU for NUS +CONFIG_BT_USER_DATA_LEN_UPDATE=y +CONFIG_BT_BUF_ACL_RX_SIZE=251 +CONFIG_BT_BUF_ACL_TX_SIZE=251 +CONFIG_BT_L2CAP_TX_MTU=247 -CONFIG_BT_DIS=y +# allow BLE buffering +CONFIG_BT_ATT_PREPARE_COUNT=4 +# store BLE link keys in flash CONFIG_BT_SETTINGS=y CONFIG_FLASH=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_FLASH_MAP=y -CONFIG_NVS=y CONFIG_SETTINGS=y +CONFIG_NVS=y CONFIG_SERIAL=y @@ -35,6 +41,7 @@ CONFIG_UART_CONSOLE=y CONFIG_UART_LINE_CTRL=y CONFIG_UART_ASYNC_API=y +# mainly shell related features CONFIG_SHELL=y CONFIG_SHELL_VT100_COMMANDS=y CONFIG_SHELL_VT100_COLORS=y @@ -47,29 +54,12 @@ CONFIG_I2C_SHELL=y CONFIG_STREAM_FLASH=y CONFIG_SETTINGS_SHELL=y CONFIG_SHELL_BACKENDS=y - CONFIG_SHELL_BACKEND_SERIAL=y -CONFIG_BUILD_OUTPUT_HEX=y -CONFIG_BT_CENTRAL=y -CONFIG_BT_GATT_CLIENT=y -CONFIG_BT_OBSERVER=y -CONFIG_BT_NUS=y -CONFIG_BT_NUS_CLIENT=y -CONFIG_BT_SCAN=y -CONFIG_BT_SCAN_FILTER_ENABLE=y -CONFIG_BT_SCAN_UUID_CNT=1 -CONFIG_BT_GATT_DM=y -CONFIG_HEAP_MEM_POOL_SIZE=2048 -CONFIG_BT_SCAN_ADDRESS_CNT=2 - -CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n - -CONFIG_BT_USER_DATA_LEN_UPDATE=y -CONFIG_BT_BUF_ACL_RX_SIZE=251 -CONFIG_BT_BUF_ACL_TX_SIZE=251 -CONFIG_BT_L2CAP_TX_MTU=247 - -CONFIG_BT_ATT_PREPARE_COUNT=4 +CONFIG_BUILD_OUTPUT_HEX=y +# mcuboot CONFIG_BOOTLOADER_MCUBOOT=y +CONFIG_RETAINED_MEM=y +CONFIG_RETENTION=y +CONFIG_RETENTION_BOOT_MODE=y diff --git a/device/prj.conf.overlays/uhk-80.conf b/device/prj.conf.overlays/uhk-80.conf index 9476b19b..f6fdddf8 100644 --- a/device/prj.conf.overlays/uhk-80.conf +++ b/device/prj.conf.overlays/uhk-80.conf @@ -1,6 +1,13 @@ +# LEDs control CONFIG_SPI=y + +# wired link between left and right +CONFIG_UART_LINE_CTRL=y +CONFIG_UART_ASYNC_API=y CONFIG_UART_1_ASYNC=y CONFIG_UART_1_NRF_HW_ASYNC=y CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1 CONFIG_UART_1_INTERRUPT_DRIVEN=n + +# battery level measurement CONFIG_ADC=y From 69b962aa3234c48aee84e86fed20a79412f5f12e Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 26 Nov 2024 00:10:19 +0100 Subject: [PATCH 24/33] carry over the feature selectivity to the source code --- device/CMakeLists.txt | 27 +------ device/src/CMakeLists.txt | 75 +++++++++++++++++ device/src/bt_conn.c | 12 +-- device/src/bt_conn_auth.c | 0 device/src/bt_pair.c | 8 ++ device/src/messenger.c | 84 +++++++++----------- right/src/usb_commands/usb_command_pairing.c | 4 + shared/device.h | 2 +- 8 files changed, 136 insertions(+), 76 deletions(-) create mode 100644 device/src/CMakeLists.txt delete mode 100644 device/src/bt_conn_auth.c diff --git a/device/CMakeLists.txt b/device/CMakeLists.txt index 6921c7d6..aa08ea3f 100644 --- a/device/CMakeLists.txt +++ b/device/CMakeLists.txt @@ -6,21 +6,7 @@ if(NOT CONFIG_DEBUG) add_definitions(-DNDEBUG) endif() -target_include_directories(app PUBLIC - src - src/legacy - src/legacy/config_parser - src/shared -) - -file(GLOB usb_sources src/usb/*.c) -file(GLOB usb_cpp_sources src/usb/*.cpp) -file(GLOB_RECURSE keyboard_sources src/keyboard/*.c) -file(GLOB app_sources src/*.c) -file(GLOB app_cpp_sources src/*.cpp) -file(GLOB lvgl_dummy src/lvgl/*.c) -file(GLOB_RECURSE legacy_sources src/legacy/*.c) -file(GLOB_RECURSE shared_sources src/shared/*.c) +add_subdirectory(src) # add the versions.c source file conditionally if(NOT NOVERSIONS) @@ -28,16 +14,7 @@ if(NOT NOVERSIONS) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../shared/versions.c PROPERTIES GENERATED TRUE) endif() -if(BOARD STREQUAL "uhk-60-right") - file(GLOB main src/uhk60/main.c) - target_sources(app PRIVATE ${main}) -elseif ((BOARD STREQUAL "uhk-dongle")) - target_sources(app PRIVATE ${app_sources} ${app_cpp_sources} ${usb_sources} ${usb_cpp_sources} ${legacy_sources} ${shared_sources}) -else() - target_sources(app PRIVATE ${app_sources} ${app_cpp_sources} ${usb_sources} ${usb_cpp_sources} ${legacy_sources} ${shared_sources} ${keyboard_sources} ${lvgl_dummy}) -endif() - -if(NOT BOARD STREQUAL "uhk-60-right") +if(NOT CONFIG_BOARD_UHK_60_RIGHT) # C headers compiled with C++ give pointer conversion errors, turn them to warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") diff --git a/device/src/CMakeLists.txt b/device/src/CMakeLists.txt new file mode 100644 index 00000000..46a817c9 --- /dev/null +++ b/device/src/CMakeLists.txt @@ -0,0 +1,75 @@ +target_include_directories(app PUBLIC + . + legacy + legacy/config_parser + shared + usb +) + +set(usb_cpp_sources + usb/app_base.cpp + usb/command_app.cpp + usb/controls_app.cpp + usb/gamepad_app.cpp + usb/hid_battery_app.cpp + usb/keyboard_app.cpp + usb/mouse_app.cpp + usb/usb_compatibility.cpp + usb/usb.cpp +) +file(GLOB_RECURSE keyboard_sources keyboard/*.c) +file(GLOB lvgl_dummy lvgl/*.c) +file(GLOB_RECURSE legacy_sources legacy/*.c) +file(GLOB_RECURSE shared_sources shared/*.c) + +if(CONFIG_BOARD_UHK_60_RIGHT) + target_sources(app PRIVATE + uhk60/main.c + ) +else() + target_sources(app PRIVATE + ${usb_cpp_sources} + ${legacy_sources} + ${shared_sources} + bt_conn.c + bt_manager.c + bt_pair.c + debug_eventloop_timing.c + device_state.c + flash.c + logger.c + main.c + messenger_queue.c + messenger.c + settings.c + shell.c + stack_trace.c + state_sync.c + ) + if(CONFIG_BT_PERIPHERAL) + target_sources(app PRIVATE + bt_advertise.c + nus_server.c + ) + endif() + if(CONFIG_BT_CENTRAL) + target_sources(app PRIVATE + bt_scan.c + nus_client.c + ) + endif() + if(CONFIG_BOARD_UHK_DONGLE) + target_sources(app PRIVATE + dongle_leds.c + ) + else() + target_sources(app PRIVATE + ${keyboard_sources} + ) + if(CONFIG_BOARD_UHK_80_RIGHT) + target_sources(app PRIVATE + ${lvgl_dummy} + ) + endif() + endif() +endif() diff --git a/device/src/bt_conn.c b/device/src/bt_conn.c index ff468361..188a0fcb 100644 --- a/device/src/bt_conn.c +++ b/device/src/bt_conn.c @@ -1,7 +1,9 @@ #include #include #include +#ifdef CONFIG_BT_SCAN #include +#endif #include "bt_advertise.h" #include "bt_conn.h" #include "bt_scan.h" @@ -142,12 +144,12 @@ static void connected(struct bt_conn *conn, uint8_t err) { if (err) { printk("Failed to connect to %s, err %u\n", GetPeerStringByConn(conn), err); - if (DEVICE_IS_UHK80_RIGHT) { - err = bt_scan_start(BT_SCAN_TYPE_SCAN_ACTIVE); - if (err) { - printk("Scanning failed to start (err %d)\n", err); - } +#if DEVICE_IS_UHK80_RIGHT + err = bt_scan_start(BT_SCAN_TYPE_SCAN_ACTIVE); + if (err) { + printk("Scanning failed to start (err %d)\n", err); } +#endif return; } diff --git a/device/src/bt_conn_auth.c b/device/src/bt_conn_auth.c deleted file mode 100644 index e69de29b..00000000 diff --git a/device/src/bt_pair.c b/device/src/bt_pair.c index dbb02ba7..5fc5f4f3 100644 --- a/device/src/bt_pair.c +++ b/device/src/bt_pair.c @@ -49,6 +49,7 @@ void BtPair_SetRemoteOob(const struct bt_le_oob* oob) { oobRemote = *oob; } +#ifdef CONFIG_BT_CENTRAL void BtPair_PairCentral() { pairingAsCentral = true; Settings_Reload(); @@ -57,7 +58,9 @@ void BtPair_PairCentral() { printk ("Scanning for pairable device\n"); EventScheduler_Reschedule(k_uptime_get_32() + PAIRING_TIMEOUT, EventSchedulerEvent_EndBtPairing, "Oob pairing timeout."); } +#endif +#ifdef CONFIG_BT_PERIPHERAL void BtPair_PairPeripheral() { pairingAsCentral = false; Settings_Reload(); @@ -66,6 +69,7 @@ void BtPair_PairPeripheral() { printk ("Waiting for central to pair to me.\n"); EventScheduler_Reschedule(k_uptime_get_32() + PAIRING_TIMEOUT, EventSchedulerEvent_EndBtPairing, "Oob pairing timeout."); } +#endif void BtPair_EndPairing(bool success, const char* msg) { printk("--- Pairing ended, success = %d: %s ---\n", success, msg); @@ -81,9 +85,13 @@ void BtPair_EndPairing(bool success, const char* msg) { EventScheduler_Unschedule(EventSchedulerEvent_EndBtPairing); if (pairingAsCentral) { +#ifdef CONFIG_BT_SCAN BtScan_Stop(); +#endif } else { +#ifdef CONFIG_BT_PERIPHERAL BtAdvertise_Stop(); +#endif } k_sleep(K_MSEC(100)); diff --git a/device/src/messenger.c b/device/src/messenger.c index 60f04460..9727e24c 100644 --- a/device/src/messenger.c +++ b/device/src/messenger.c @@ -32,73 +32,54 @@ typedef enum { } messenger_channel_t; static messenger_channel_t determineChannel(device_id_t dst) { -#if DEVICE_IS_KEYBOARD +#if DEVICE_IS_UHK80_LEFT if (Uart_IsConnected()) { - if (DEVICE_IS_UHK80_LEFT) { - switch (dst) { - case DeviceId_Uhk_Dongle: - case DeviceId_Uhk80_Right: - return MessengerChannel_Uart; - default: - break; - } - } - - if (DEVICE_IS_UHK80_RIGHT) { - switch (dst) { - case DeviceId_Uhk_Dongle: - break; - case DeviceId_Uhk80_Left: - return MessengerChannel_Uart; - default: - break; - } + switch (dst) { + case DeviceId_Uhk_Dongle: + case DeviceId_Uhk80_Right: + return MessengerChannel_Uart; + default: + break; } } -#endif - - if (DEVICE_IS_UHK80_LEFT && Bt_DeviceIsConnected(DeviceId_Uhk80_Right)) { + if (Bt_DeviceIsConnected(DeviceId_Uhk80_Right)) { switch (dst) { case DeviceId_Uhk_Dongle: case DeviceId_Uhk80_Right: - if (Bt_DeviceIsConnected(DeviceId_Uhk80_Right)) { - return MessengerChannel_NusServer; - } + return MessengerChannel_NusServer; default: - return MessengerChannel_None; + break; } } +#endif - if (DEVICE_IS_UHK80_RIGHT) { +#if DEVICE_IS_UHK80_RIGHT + if (Uart_IsConnected() && (dst == DeviceId_Uhk80_Left)) { + return MessengerChannel_Uart; + } + if (Bt_DeviceIsConnected(dst)) { switch (dst) { case DeviceId_Uhk_Dongle: - if (Bt_DeviceIsConnected(DeviceId_Uhk_Dongle)) { - return MessengerChannel_NusServer; - } - break; + return MessengerChannel_NusServer; case DeviceId_Uhk80_Left: - if (Bt_DeviceIsConnected(DeviceId_Uhk80_Left)) { - return MessengerChannel_NusClient; - } - break; + return MessengerChannel_NusClient; default: - return MessengerChannel_None; + break; } } +#endif - if (DEVICE_IS_UHK_DONGLE) { +#if DEVICE_IS_UHK_DONGLE + if (Bt_DeviceIsConnected(DeviceId_Uhk80_Right)) { switch (dst) { case DeviceId_Uhk80_Right: case DeviceId_Uhk80_Left: - if (Bt_DeviceIsConnected(DeviceId_Uhk80_Right)) { - return MessengerChannel_NusClient; - } - break; + return MessengerChannel_NusClient; default: - return MessengerChannel_None; + break; } } - +#endif return MessengerChannel_None; } @@ -312,12 +293,21 @@ bool Messenger_Availability(device_id_t dst, messenger_availability_op_t operati case MessengerChannel_Uart: #if DEVICE_IS_KEYBOARD return Uart_Availability(operation); -#endif +#else return false; +#endif case MessengerChannel_NusServer: +#ifdef CONFIG_BT_NUS return NusServer_Availability(operation); +#else + return false; +#endif case MessengerChannel_NusClient: +#ifdef CONFIG_BT_NUS_CLIENT return NusClient_Availability(operation); +#else + return false; +#endif default: return false; } @@ -334,10 +324,14 @@ void Messenger_SendMessage(message_t message) { #endif break; case MessengerChannel_NusServer: +#if defined(CONFIG_BT_NUS) && defined(CONFIG_BT_PERIPHERAL) NusServer_SendMessage(message); +#endif break; case MessengerChannel_NusClient: +#ifdef CONFIG_BT_NUS_CLIENT NusClient_SendMessage(message); +#endif break; default: printk("Failed to send message from %s to %s\n", Utils_DeviceIdToString(DEVICE_ID), Utils_DeviceIdToString(dst)); diff --git a/right/src/usb_commands/usb_command_pairing.c b/right/src/usb_commands/usb_command_pairing.c index 2cb92fe1..e4d42a7f 100644 --- a/right/src/usb_commands/usb_command_pairing.c +++ b/right/src/usb_commands/usb_command_pairing.c @@ -54,11 +54,15 @@ void UsbCommand_SetPairingData(void) { } void UsbCommand_PairCentral(void) { +#ifdef CONFIG_BT_CENTRAL BtPair_PairCentral(); +#endif } void UsbCommand_PairPeripheral(void) { +#ifdef CONFIG_BT_PERIPHERAL BtPair_PairPeripheral(); +#endif } // If zero address is provided, all existing bonds will be deleted diff --git a/shared/device.h b/shared/device.h index b0fd275c..9aa99ce7 100644 --- a/shared/device.h +++ b/shared/device.h @@ -43,7 +43,7 @@ #define DEVICE_IS_UHK60 (DEVICE_IS_UHK60V1_RIGHT || DEVICE_IS_UHK60V2_RIGHT) #define DEVICE_IS_MASTER (DEVICE_IS_UHK80_RIGHT || DEVICE_IS_UHK60V1_RIGHT || DEVICE_IS_UHK60V2_RIGHT) - #define DEVICE_NAME CONFIG_BT_DIS_MODEL + #define DEVICE_NAME CONFIG_USB_DEVICE_PRODUCT #if (DEVICE_ID == DEVICE_ID_UHK60V1_RIGHT || DEVICE_ID == DEVICE_ID_UHK60V2_RIGHT) #define KEY_MATRIX_ROWS 5 From f84f413cc888e83814da8ecf4e8669fbe14475ca Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Tue, 26 Nov 2024 00:47:36 +0100 Subject: [PATCH 25/33] restore USB HID disabling while BLE HID is active --- device/src/bt_conn.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/device/src/bt_conn.c b/device/src/bt_conn.c index 188a0fcb..8e284a0b 100644 --- a/device/src/bt_conn.c +++ b/device/src/bt_conn.c @@ -163,6 +163,9 @@ static void connected(struct bt_conn *conn, uint8_t err) { 100 // connection timeout (*10ms) ); bt_conn_le_param_update(conn, &conn_params); +#if DEVICE_IS_UHK80_RIGHT + USB_DisableHid(); +#endif } if (peerId == PeerIdUnknown) { @@ -172,13 +175,12 @@ static void connected(struct bt_conn *conn, uint8_t err) { assignPeer(bt_conn_get_dst(conn), peerId); if (peerId == PeerIdHid) { - // USB_DisableHid(); } else { bt_conn_set_security(conn, BT_SECURITY_L4); // continue connection process in in `connectionSecured()` } - if (DEVICE_IS_UHK80_RIGHT && (peerId == PeerIdHid || peerId == PeerIdUnknown || peerId == PeerIdDongle)) { + if (DEVICE_IS_UHK80_RIGHT && (peerId != PeerIdLeft)) { BtAdvertise_Start(BtAdvertise_Type()); } } @@ -193,7 +195,7 @@ static void disconnected(struct bt_conn *conn, uint8_t reason) { if (DEVICE_IS_UHK80_RIGHT) { if (peerId == PeerIdHid || peerId == PeerIdUnknown) { BtAdvertise_Start(BtAdvertise_Type()); - // USB_EnableHid(); + USB_EnableHid(); } if (peerId == PeerIdDongle) { BtAdvertise_Start(BtAdvertise_Type()); From 5b5fe9f872dc375eb8de7a993b443af080a906f7 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Fri, 29 Nov 2024 00:59:07 +0100 Subject: [PATCH 26/33] allow agent on both transport concurrently (#355) --- device/src/main.c | 4 +- device/src/usb/command_app.cpp | 43 +++---- device/src/usb/command_app.hpp | 6 +- device/src/usb/usb.cpp | 22 ++-- right/src/main.c | 4 +- .../usb_commands/usb_command_apply_config.c | 19 ++-- .../usb_commands/usb_command_apply_config.h | 6 +- .../src/usb_commands/usb_command_draw_oled.c | 2 +- .../src/usb_commands/usb_command_draw_oled.h | 2 +- .../usb_command_exec_macro_command.c | 6 +- .../usb_command_exec_macro_command.h | 2 +- .../usb_commands/usb_command_get_adc_value.c | 2 +- .../usb_commands/usb_command_get_adc_value.h | 6 +- .../usb_command_get_debug_buffer.c | 2 +- .../usb_command_get_debug_buffer.h | 2 +- .../usb_command_get_device_property.c | 4 +- .../usb_command_get_device_property.h | 6 +- .../usb_command_get_device_state.c | 2 +- .../usb_command_get_device_state.h | 6 +- .../usb_command_get_module_property.c | 2 +- .../usb_command_get_module_property.h | 6 +- .../usb_command_get_new_pairings.c | 36 ++++-- .../usb_command_get_new_pairings.h | 6 +- .../usb_command_get_slave_i2c_errors.c | 2 +- .../usb_command_get_slave_i2c_errors.h | 6 +- .../usb_commands/usb_command_get_variable.c | 2 +- .../usb_commands/usb_command_get_variable.h | 6 +- .../usb_command_jump_to_module_bootloader.c | 2 +- .../usb_command_jump_to_module_bootloader.h | 6 +- .../usb_command_launch_storage_transfer.c | 2 +- .../usb_command_launch_storage_transfer.h | 6 +- right/src/usb_commands/usb_command_pairing.c | 14 +-- right/src/usb_commands/usb_command_pairing.h | 18 +-- .../usb_commands/usb_command_read_config.c | 2 +- .../usb_commands/usb_command_read_config.h | 6 +- .../usb_commands/usb_command_reenumerate.c | 2 +- .../usb_commands/usb_command_reenumerate.h | 6 +- ...usb_command_send_kboot_command_to_module.c | 2 +- ...usb_command_send_kboot_command_to_module.h | 6 +- .../usb_command_set_i2c_baud_rate.c | 2 +- .../usb_command_set_i2c_baud_rate.h | 6 +- .../usb_command_set_led_pwm_brightness.c | 2 +- .../usb_command_set_led_pwm_brightness.h | 6 +- .../usb_commands/usb_command_set_test_led.c | 2 +- .../usb_commands/usb_command_set_test_led.h | 6 +- .../usb_commands/usb_command_set_variable.c | 2 +- .../usb_commands/usb_command_set_variable.h | 6 +- .../usb_commands/usb_command_switch_keymap.c | 2 +- .../usb_commands/usb_command_switch_keymap.h | 6 +- .../usb_commands/usb_command_write_config.c | 2 +- .../usb_commands/usb_command_write_config.h | 2 +- .../usb_interface_generic_hid.c | 25 +--- .../usb_interface_generic_hid.h | 7 -- right/src/usb_protocol_handler.c | 107 ++++++------------ right/src/usb_protocol_handler.h | 28 ++--- right/src/user_logic.c | 2 +- 56 files changed, 258 insertions(+), 239 deletions(-) diff --git a/device/src/main.c b/device/src/main.c index 5a35ca83..78784be7 100644 --- a/device/src/main.c +++ b/device/src/main.c @@ -139,8 +139,8 @@ int main(void) { USB_SetSerialNumber(HardwareConfig->uniqueId); printk("Applying user config\n"); bool factoryMode = false; - if (factoryMode || UsbCommand_ApplyConfig() != UsbStatusCode_Success) { - UsbCommand_ApplyFactory(); + if (factoryMode || UsbCommand_ApplyConfig(NULL, NULL) != UsbStatusCode_Success) { + UsbCommand_ApplyFactory(NULL, NULL); } printk("User config applied\n"); ShortcutParser_initialize(); diff --git a/device/src/usb/command_app.cpp b/device/src/usb/command_app.cpp index f286f1f9..899dec92 100644 --- a/device/src/usb/command_app.cpp +++ b/device/src/usb/command_app.cpp @@ -3,18 +3,21 @@ #include "hid/report_protocol.hpp" #include "zephyr/sys/printk.h" -extern "C" bool CommandProtocolTx(const uint8_t *data, size_t size) +extern "C" void UsbProtocolHandler(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + +command_app &command_app::usb_handle() { - return command_app::handle().send(std::span(data, size)); + static command_app app{}; + return app; } -extern "C" void CommandProtocolRxHandler(const uint8_t *data, size_t size); - +#if DEVICE_IS_UHK80_RIGHT command_app &command_app::handle() { - static command_app app{}; - return app; + static command_app ble_app{}; + return ble_app; } +#endif void command_app::start(hid::protocol prot) { @@ -32,7 +35,15 @@ void command_app::set_report(hid::report::type type, const std::span(data.data()); - CommandProtocolRxHandler(out.payload.data(), data.size() - (report_out::has_id() ? 1 : 0)); + auto buf_idx = in_buffer_.active_side(); + auto &in = in_buffer_[buf_idx]; + UsbProtocolHandler(out.payload.data(), in.payload.data()); + auto err = send_report(&in); + if (err == hid::result::OK) { + in_buffer_.compare_swap(buf_idx); + } else { + printk("Command app failed to send report with: %d\n", (int)err); + } } void command_app::get_report(hid::report::selector select, const std::span &buffer) @@ -47,24 +58,6 @@ void command_app::get_report(hid::report::selector select, const std::span buffer) -{ - auto buf_idx = in_buffer_.active_side(); - auto &report = in_buffer_[buf_idx]; - if (buffer.size() > report.payload.max_size()) { - printk("Usb payload exceeded maximum size!\n"); - return false; - } - std::copy(buffer.begin(), buffer.end(), report.payload.begin()); - c2usb::result err = send_report(&in_buffer_[buf_idx]); - if (err == hid::result::OK) { - in_buffer_.compare_swap(buf_idx); - return true; - } - printk("Command app failed to send report with: %i\n", (int)err); - return false; -} - void command_app::in_report_sent(const std::span &data) { if (data.front() != report_ids::IN_COMMAND) { diff --git a/device/src/usb/command_app.hpp b/device/src/usb/command_app.hpp index e9166a0e..d9099b85 100644 --- a/device/src/usb/command_app.hpp +++ b/device/src/usb/command_app.hpp @@ -6,6 +6,7 @@ #include "hid/rdf/descriptor.hpp" #include "hid/report_protocol.hpp" #include "report_ids.h" +#include "../device.h" namespace hid::page { enum class ugl : uint8_t; @@ -61,9 +62,10 @@ class command_app : public hid::application { using report_in = report_base; using report_out = report_base; + static command_app& usb_handle(); +#if DEVICE_IS_UHK80_RIGHT static command_app& handle(); - - bool send(std::span buffer); +#endif void start(hid::protocol prot) override; void set_report(hid::report::type type, const std::span& data) override; diff --git a/device/src/usb/usb.cpp b/device/src/usb/usb.cpp index 2ae622cc..22fe34cc 100644 --- a/device/src/usb/usb.cpp +++ b/device/src/usb/usb.cpp @@ -113,7 +113,7 @@ struct usb_manager { static usb::df::hid::function usb_kb{ keyboard_app::handle(), usb::hid::boot_protocol_mode::KEYBOARD}; static usb::df::hid::function usb_mouse{mouse_app::handle()}; - static usb::df::hid::function usb_command{command_app::handle()}; + static usb::df::hid::function usb_command{command_app::usb_handle()}; static usb::df::hid::function usb_controls{controls_app::handle()}; static usb::df::hid::function usb_gamepad{gamepad_app::handle()}; static usb::df::microsoft::xfunction usb_xpad{gamepad_app::handle()}; @@ -128,17 +128,19 @@ struct usb_manager { usb::df::hid::config(usb_mouse, speed, usb::endpoint::address(0x82), 1), usb::df::hid::config(usb_command, speed, usb::endpoint::address(0x83), 10), usb::df::hid::config(usb_controls, speed, usb::endpoint::address(0x84), 1) -#if !DEVICE_HAS_BATTERY - ); -#else +#if DEVICE_HAS_BATTERY , usb::df::hid::config(usb_battery, speed, usb::endpoint::address(0x86), 1) // not very useful at the moment +#endif ); - - static const auto battery_config = usb::df::config::make_config(config_header, - usb::df::hid::config(usb_battery, speed, usb::endpoint::address(0x86), 1)); + static const auto inactive_config = usb::df::config::make_config(config_header, + usb::df::hid::config(usb_command, speed, usb::endpoint::address(0x83), 10) +#if DEVICE_HAS_BATTERY + , + usb::df::hid::config(usb_battery, speed, usb::endpoint::address(0x86), 1) #endif + ); static const auto base_config = usb::df::config::make_config(config_header, shared_config_elems); @@ -155,12 +157,8 @@ struct usb_manager { printk("USB config changing to %s\n", magic_enum::enum_name(conf).data()); switch (conf) { case Hid_Empty: -#if DEVICE_HAS_BATTERY ms_enum_.set_config({}); - device_.set_config(battery_config); -#else - assert(false); -#endif + device_.set_config(inactive_config); break; case Hid_NoGamepad: ms_enum_.set_config({}); diff --git a/right/src/main.c b/right/src/main.c index 9a0ba886..9a3d4eef 100644 --- a/right/src/main.c +++ b/right/src/main.c @@ -57,8 +57,8 @@ static void initConfig() while (!IsConfigInitialized) { if (IsEepromInitialized) { - if (IsFactoryResetModeEnabled || UsbCommand_ApplyConfig() != UsbStatusCode_Success) { - UsbCommand_ApplyFactory(); + if (IsFactoryResetModeEnabled || UsbCommand_ApplyConfig(NULL, NULL) != UsbStatusCode_Success) { + UsbCommand_ApplyFactory(NULL, NULL); } ShortcutParser_initialize(); KeyIdParser_initialize(); diff --git a/right/src/usb_commands/usb_command_apply_config.c b/right/src/usb_commands/usb_command_apply_config.c index eb78e105..03055fcb 100644 --- a/right/src/usb_commands/usb_command_apply_config.c +++ b/right/src/usb_commands/usb_command_apply_config.c @@ -19,25 +19,26 @@ #include "main.h" #endif -void updateUsbBuffer(uint8_t usbStatusCode, uint16_t parserOffset, parser_stage_t parserStage) +void updateUsbBuffer(uint8_t *GenericHidInBuffer, uint8_t usbStatusCode, uint16_t parserOffset, parser_stage_t parserStage) { SetUsbTxBufferUint8(0, usbStatusCode); SetUsbTxBufferUint16(1, parserOffset); SetUsbTxBufferUint8(3, parserStage); } -static uint8_t validateConfig() { +static uint8_t validateConfig(uint8_t *GenericHidInBuffer) { // Validate the staging configuration. ParserRunDry = true; StagingUserConfigBuffer.offset = 0; uint8_t parseConfigStatus = ParseConfig(&StagingUserConfigBuffer); - updateUsbBuffer(UsbStatusCode_Success, StagingUserConfigBuffer.offset, ParsingStage_Validate); - + if (GenericHidInBuffer) { + updateUsbBuffer(GenericHidInBuffer, UsbStatusCode_Success, StagingUserConfigBuffer.offset, ParsingStage_Validate); + } return parseConfigStatus; } -void UsbCommand_ApplyConfigAsync(void) { - if (validateConfig() == UsbStatusCode_Success) { +void UsbCommand_ApplyConfigAsync(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { + if (validateConfig(GenericHidInBuffer) == UsbStatusCode_Success) { EventVector_Set(EventVector_ApplyConfig); #ifdef __ZEPHYR__ Main_Wake(); @@ -45,7 +46,7 @@ void UsbCommand_ApplyConfigAsync(void) { } } -void UsbCommand_ApplyFactory(void) +void UsbCommand_ApplyFactory(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { EventVector_Unset(EventVector_ApplyConfig); @@ -63,12 +64,12 @@ void UsbCommand_ApplyFactory(void) LedManager_FullUpdate(); } -uint8_t UsbCommand_ApplyConfig(void) +uint8_t UsbCommand_ApplyConfig(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { static bool isBoot = true; EventVector_Unset(EventVector_ApplyConfig); - uint8_t parseConfigStatus = validateConfig(); + uint8_t parseConfigStatus = validateConfig(GenericHidInBuffer); if (parseConfigStatus != UsbStatusCode_Success) { return parseConfigStatus; diff --git a/right/src/usb_commands/usb_command_apply_config.h b/right/src/usb_commands/usb_command_apply_config.h index cdd09ae2..2527156f 100644 --- a/right/src/usb_commands/usb_command_apply_config.h +++ b/right/src/usb_commands/usb_command_apply_config.h @@ -15,8 +15,8 @@ // Functions: - uint8_t UsbCommand_ApplyConfig(void); - void UsbCommand_ApplyFactory(void); - void UsbCommand_ApplyConfigAsync(void); + uint8_t UsbCommand_ApplyConfig(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_ApplyFactory(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_ApplyConfigAsync(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_draw_oled.c b/right/src/usb_commands/usb_command_draw_oled.c index 74be314f..fab8e885 100644 --- a/right/src/usb_commands/usb_command_draw_oled.c +++ b/right/src/usb_commands/usb_command_draw_oled.c @@ -15,7 +15,7 @@ #include "debug.h" #include -void UsbCommand_DrawOled() +void UsbCommand_DrawOled(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { #if defined(__ZEPHYR__) && DEVICE_HAS_OLED uint8_t x = GetUsbRxBufferUint8(1); diff --git a/right/src/usb_commands/usb_command_draw_oled.h b/right/src/usb_commands/usb_command_draw_oled.h index a3a1371a..7d57c742 100644 --- a/right/src/usb_commands/usb_command_draw_oled.h +++ b/right/src/usb_commands/usb_command_draw_oled.h @@ -11,6 +11,6 @@ // Functions: - void UsbCommand_DrawOled(); + void UsbCommand_DrawOled(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_exec_macro_command.c b/right/src/usb_commands/usb_command_exec_macro_command.c index 7bfcade4..f1c81cfd 100644 --- a/right/src/usb_commands/usb_command_exec_macro_command.c +++ b/right/src/usb_commands/usb_command_exec_macro_command.c @@ -14,7 +14,7 @@ char UsbMacroCommand[USB_GENERIC_HID_OUT_BUFFER_LENGTH+1]; uint8_t UsbMacroCommandLength = 0; key_state_t dummyState; -static void requestExecution() +static void requestExecution(const uint8_t *GenericHidOutBuffer) { Utils_SafeStrCopy(UsbMacroCommand, ((char*)GenericHidOutBuffer) + 1, sizeof(GenericHidOutBuffer)-1); UsbMacroCommandLength = strlen(UsbMacroCommand); @@ -41,9 +41,9 @@ void UsbMacroCommand_ExecuteSynchronously() EventVector_Unset(EventVector_UsbMacroCommandWaitingForExecution); } -void UsbCommand_ExecMacroCommand() +void UsbCommand_ExecMacroCommand(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { if (canExecute()) { - requestExecution(); + requestExecution(GenericHidOutBuffer); } } diff --git a/right/src/usb_commands/usb_command_exec_macro_command.h b/right/src/usb_commands/usb_command_exec_macro_command.h index 0a6ef294..f87dc430 100644 --- a/right/src/usb_commands/usb_command_exec_macro_command.h +++ b/right/src/usb_commands/usb_command_exec_macro_command.h @@ -16,6 +16,6 @@ // Functions: void UsbMacroCommand_ExecuteSynchronously(); - void UsbCommand_ExecMacroCommand(); + void UsbCommand_ExecMacroCommand(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_get_adc_value.c b/right/src/usb_commands/usb_command_get_adc_value.c index 852ea0f4..b191a4c2 100644 --- a/right/src/usb_commands/usb_command_get_adc_value.c +++ b/right/src/usb_commands/usb_command_get_adc_value.c @@ -2,7 +2,7 @@ #include "usb_commands/usb_command_get_adc_value.h" #include "peripherals/adc.h" -void UsbCommand_GetAdcValue(void) +void UsbCommand_GetAdcValue(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { SetUsbTxBufferUint32(1, ADC_Measure()); } diff --git a/right/src/usb_commands/usb_command_get_adc_value.h b/right/src/usb_commands/usb_command_get_adc_value.h index b699602e..b8830ce8 100644 --- a/right/src/usb_commands/usb_command_get_adc_value.h +++ b/right/src/usb_commands/usb_command_get_adc_value.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_GET_ADC_VALUE_H__ #define __USB_COMMAND_GET_ADC_VALUE_H__ +// Includes: + + #include + // Functions: - void UsbCommand_GetAdcValue(void); + void UsbCommand_GetAdcValue(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_get_debug_buffer.c b/right/src/usb_commands/usb_command_get_debug_buffer.c index e280dcdc..f8065bce 100644 --- a/right/src/usb_commands/usb_command_get_debug_buffer.c +++ b/right/src/usb_commands/usb_command_get_debug_buffer.c @@ -19,7 +19,7 @@ uint8_t DebugBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; -void UsbCommand_GetDebugBuffer(void) +void UsbCommand_GetDebugBuffer(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { #ifndef __ZEPHYR__ SetDebugBufferUint32(1, I2C_Watchdog); diff --git a/right/src/usb_commands/usb_command_get_debug_buffer.h b/right/src/usb_commands/usb_command_get_debug_buffer.h index 06619b40..d726e315 100644 --- a/right/src/usb_commands/usb_command_get_debug_buffer.h +++ b/right/src/usb_commands/usb_command_get_debug_buffer.h @@ -11,7 +11,7 @@ // Functions: - void UsbCommand_GetDebugBuffer(void); + void UsbCommand_GetDebugBuffer(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); void SetDebugBufferUint8(uint32_t offset, uint8_t value); void SetDebugBufferUint16(uint32_t offset, uint16_t value); diff --git a/right/src/usb_commands/usb_command_get_device_property.c b/right/src/usb_commands/usb_command_get_device_property.c index efd76ae3..f45c7fd1 100644 --- a/right/src/usb_commands/usb_command_get_device_property.c +++ b/right/src/usb_commands/usb_command_get_device_property.c @@ -25,7 +25,7 @@ uint16_t configSizes[] = {HARDWARE_CONFIG_SIZE, USER_CONFIG_SIZE}; -void UsbCommand_GetDeviceProperty(void) +void UsbCommand_GetDeviceProperty(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint8_t propertyId = GetUsbRxBufferUint8(1); uint8_t *dest = GenericHidInBuffer + 1; @@ -105,7 +105,7 @@ void UsbCommand_GetDeviceProperty(void) } break; case DevicePropertyId_NewPairings: #ifdef __ZEPHYR__ - UsbCommand_GetNewPairings(); + UsbCommand_GetNewPairings(GenericHidOutBuffer, GenericHidInBuffer); #endif break; default: diff --git a/right/src/usb_commands/usb_command_get_device_property.h b/right/src/usb_commands/usb_command_get_device_property.h index cce6ca49..517490f2 100644 --- a/right/src/usb_commands/usb_command_get_device_property.h +++ b/right/src/usb_commands/usb_command_get_device_property.h @@ -1,6 +1,10 @@ #ifndef __USB_COMMAND_GET_DEVICE_PROPERTY_H__ #define __USB_COMMAND_GET_DEVICE_PROPERTY_H__ +// Includes: + + #include + // Typedefs: typedef enum { @@ -31,6 +35,6 @@ // Functions: - void UsbCommand_GetDeviceProperty(void); + void UsbCommand_GetDeviceProperty(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_get_device_state.c b/right/src/usb_commands/usb_command_get_device_state.c index 63ab15f1..6b06339e 100644 --- a/right/src/usb_commands/usb_command_get_device_state.c +++ b/right/src/usb_commands/usb_command_get_device_state.c @@ -29,7 +29,7 @@ #define Bt_NewPairedDevice 0 #endif -void UsbCommand_GetKeyboardState(void) +void UsbCommand_GetKeyboardState(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { #ifdef __ZEPHYR__ diff --git a/right/src/usb_commands/usb_command_get_device_state.h b/right/src/usb_commands/usb_command_get_device_state.h index 4b14970e..1b1b20f9 100644 --- a/right/src/usb_commands/usb_command_get_device_state.h +++ b/right/src/usb_commands/usb_command_get_device_state.h @@ -1,6 +1,10 @@ #ifndef __USB_COMMAND_GET_KEYBOARD_STATE_H__ #define __USB_COMMAND_GET_KEYBOARD_STATE_H__ +// Includes: + + #include + // Typedefs: typedef enum { @@ -18,6 +22,6 @@ typedef enum { // Functions: - void UsbCommand_GetKeyboardState(void); + void UsbCommand_GetKeyboardState(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_get_module_property.c b/right/src/usb_commands/usb_command_get_module_property.c index a7eda47b..5b5efdaa 100644 --- a/right/src/usb_commands/usb_command_get_module_property.c +++ b/right/src/usb_commands/usb_command_get_module_property.c @@ -10,7 +10,7 @@ #include "utils.h" #include "versioning.h" -void UsbCommand_GetModuleProperty() +void UsbCommand_GetModuleProperty(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { slot_t slotId = GetUsbRxBufferUint8(1); diff --git a/right/src/usb_commands/usb_command_get_module_property.h b/right/src/usb_commands/usb_command_get_module_property.h index 2237aaf2..101574cb 100644 --- a/right/src/usb_commands/usb_command_get_module_property.h +++ b/right/src/usb_commands/usb_command_get_module_property.h @@ -1,9 +1,13 @@ #ifndef __USB_COMMAND_GET_MODULE_PROPERTY_H__ #define __USB_COMMAND_GET_MODULE_PROPERTY_H__ +// Includes: + + #include + // Functions: - void UsbCommand_GetModuleProperty(); + void UsbCommand_GetModuleProperty(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); // Typedefs: diff --git a/right/src/usb_commands/usb_command_get_new_pairings.c b/right/src/usb_commands/usb_command_get_new_pairings.c index d86d030d..168f319b 100644 --- a/right/src/usb_commands/usb_command_get_new_pairings.c +++ b/right/src/usb_commands/usb_command_get_new_pairings.c @@ -7,12 +7,20 @@ #include #include "host_connection.h" -static uint8_t idx; -static uint8_t count; +typedef struct { + const uint8_t *OutBuffer; + uint8_t *InBuffer; + uint8_t idx; + uint8_t count; +} CommandUserData; + static void bt_foreach_bond_cb(const struct bt_bond_info *info, void *user_data) { - if (idx + BLE_ADDR_LEN+1 >= USB_GENERIC_HID_IN_BUFFER_LENGTH) { + CommandUserData *data = (CommandUserData *)user_data; + uint8_t *GenericHidInBuffer = data->InBuffer; + + if ((data->idx + BLE_ADDR_LEN + 1) >= USB_GENERIC_HID_IN_BUFFER_LENGTH) { return; } @@ -20,22 +28,26 @@ static void bt_foreach_bond_cb(const struct bt_bond_info *info, void *user_data) return; } - count++; + data->count++; - SetUsbTxBufferBleAddress(idx, &info->addr); - idx += BLE_ADDR_LEN; + SetUsbTxBufferBleAddress(data->idx, &info->addr); + data->idx += BLE_ADDR_LEN; // Name placeholder - SetUsbTxBufferUint8(idx++, 0); + SetUsbTxBufferUint8(data->idx++, 0); } -void UsbCommand_GetNewPairings(void) { - count = 0; - idx = 2; +void UsbCommand_GetNewPairings(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { + CommandUserData data = { + .OutBuffer = GenericHidOutBuffer, + .InBuffer = GenericHidInBuffer, + .idx = 2, + .count = 0 + }; - bt_foreach_bond(BT_ID_DEFAULT, bt_foreach_bond_cb, NULL); + bt_foreach_bond(BT_ID_DEFAULT, bt_foreach_bond_cb, &data); - SetUsbTxBufferUint8(1, count); + SetUsbTxBufferUint8(1, data.count); Bt_NewPairedDevice = false; } diff --git a/right/src/usb_commands/usb_command_get_new_pairings.h b/right/src/usb_commands/usb_command_get_new_pairings.h index a62b0cb4..726e1206 100644 --- a/right/src/usb_commands/usb_command_get_new_pairings.h +++ b/right/src/usb_commands/usb_command_get_new_pairings.h @@ -1,13 +1,17 @@ #ifndef __USB_COMMAND_GET_NEW_PAIRINGS_H__ #define __USB_COMMAND_GET_NEW_PAIRINGS_H__ +// Includes: + + #include + #ifdef __ZEPHYR__ // Typedefs: // Functions: - void UsbCommand_GetNewPairings(void); + void UsbCommand_GetNewPairings(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_get_slave_i2c_errors.c b/right/src/usb_commands/usb_command_get_slave_i2c_errors.c index 0843a330..3e62cad9 100644 --- a/right/src/usb_commands/usb_command_get_slave_i2c_errors.c +++ b/right/src/usb_commands/usb_command_get_slave_i2c_errors.c @@ -4,7 +4,7 @@ #include "slave_scheduler.h" #include "i2c_error_logger.h" -void UsbCommand_GetSlaveI2cErrors() +void UsbCommand_GetSlaveI2cErrors(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint8_t slaveId = GetUsbRxBufferUint8(1); diff --git a/right/src/usb_commands/usb_command_get_slave_i2c_errors.h b/right/src/usb_commands/usb_command_get_slave_i2c_errors.h index d62d459a..f06357d6 100644 --- a/right/src/usb_commands/usb_command_get_slave_i2c_errors.h +++ b/right/src/usb_commands/usb_command_get_slave_i2c_errors.h @@ -1,9 +1,13 @@ #ifndef __USB_COMMAND_GET_SLAVE_I2C_ERRORS_H__ #define __USB_COMMAND_GET_SLAVE_I2C_ERRORS_H__ +// Includes: + + #include + // Functions: - void UsbCommand_GetSlaveI2cErrors(); + void UsbCommand_GetSlaveI2cErrors(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); // Typedefs: diff --git a/right/src/usb_commands/usb_command_get_variable.c b/right/src/usb_commands/usb_command_get_variable.c index c96cddb0..95391bd9 100644 --- a/right/src/usb_commands/usb_command_get_variable.c +++ b/right/src/usb_commands/usb_command_get_variable.c @@ -6,7 +6,7 @@ #include "macros/core.h" #include "config_manager.h" -void UsbCommand_GetVariable(void) +void UsbCommand_GetVariable(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { usb_variable_id_t variableId = GetUsbRxBufferUint8(1); diff --git a/right/src/usb_commands/usb_command_get_variable.h b/right/src/usb_commands/usb_command_get_variable.h index 5e5992ae..88bf2498 100644 --- a/right/src/usb_commands/usb_command_get_variable.h +++ b/right/src/usb_commands/usb_command_get_variable.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_GET_VARIABLE_H__ #define __USB_COMMAND_GET_VARIABLE_H__ +// Includes: + + #include + // Functions: - void UsbCommand_GetVariable(void); + void UsbCommand_GetVariable(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_jump_to_module_bootloader.c b/right/src/usb_commands/usb_command_jump_to_module_bootloader.c index 5cff7e00..e93a4541 100644 --- a/right/src/usb_commands/usb_command_jump_to_module_bootloader.c +++ b/right/src/usb_commands/usb_command_jump_to_module_bootloader.c @@ -3,7 +3,7 @@ #include "slot.h" #include "slave_drivers/uhk_module_driver.h" -void UsbCommand_JumpToModuleBootloader(void) +void UsbCommand_JumpToModuleBootloader(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint8_t slotId = GetUsbRxBufferUint8(1); diff --git a/right/src/usb_commands/usb_command_jump_to_module_bootloader.h b/right/src/usb_commands/usb_command_jump_to_module_bootloader.h index e004f3ae..1d5b2877 100644 --- a/right/src/usb_commands/usb_command_jump_to_module_bootloader.h +++ b/right/src/usb_commands/usb_command_jump_to_module_bootloader.h @@ -1,9 +1,13 @@ #ifndef __USB_COMMAND_JUMP_TO_MODULE_BOOTLOADER_H__ #define __USB_COMMAND_JUMP_TO_MODULE_BOOTLOADER_H__ +// Includes: + + #include + // Functions: - void UsbCommand_JumpToModuleBootloader(void); + void UsbCommand_JumpToModuleBootloader(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); // Typedefs: diff --git a/right/src/usb_commands/usb_command_launch_storage_transfer.c b/right/src/usb_commands/usb_command_launch_storage_transfer.c index c6a25881..259b1494 100644 --- a/right/src/usb_commands/usb_command_launch_storage_transfer.c +++ b/right/src/usb_commands/usb_command_launch_storage_transfer.c @@ -20,7 +20,7 @@ enum _generic_status #include "eeprom.h" #endif -void UsbCommand_LaunchStorageTransfer(void) +void UsbCommand_LaunchStorageTransfer(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { storage_operation_t storageOperation = GetUsbRxBufferUint8(1); config_buffer_id_t configBufferId = GetUsbRxBufferUint8(2); diff --git a/right/src/usb_commands/usb_command_launch_storage_transfer.h b/right/src/usb_commands/usb_command_launch_storage_transfer.h index e2b7796d..2c7aae96 100644 --- a/right/src/usb_commands/usb_command_launch_storage_transfer.h +++ b/right/src/usb_commands/usb_command_launch_storage_transfer.h @@ -1,6 +1,10 @@ #ifndef __USB_COMMAND_LAUNCH_STORAGE_TRANSFER_H__ #define __USB_COMMAND_LAUNCH_STORAGE_TRANSFER_H__ +// Includes: + + #include + // Typedef typedef enum { @@ -11,6 +15,6 @@ // Functions: - void UsbCommand_LaunchStorageTransfer(void); + void UsbCommand_LaunchStorageTransfer(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_pairing.c b/right/src/usb_commands/usb_command_pairing.c index e4d42a7f..b1a1bee2 100644 --- a/right/src/usb_commands/usb_command_pairing.c +++ b/right/src/usb_commands/usb_command_pairing.c @@ -15,7 +15,7 @@ #define BUF_KEY_R_POS 7 #define BUF_KEY_C_POS 23 -void UsbCommand_GetPairingData(void) { +void UsbCommand_GetPairingData(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { struct bt_le_oob* oob = BtPair_GetLocalOob(); SetUsbTxBufferBleAddress(BUF_ADR_POS, &oob->addr); @@ -23,7 +23,7 @@ void UsbCommand_GetPairingData(void) { memcpy(GenericHidInBuffer + BUF_KEY_C_POS, oob->le_sc_data.c, BLE_KEY_LEN); } -void UsbCommand_SetPairingData(void) { +void UsbCommand_SetPairingData(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { struct bt_le_oob oob; uint8_t peerId = GenericHidOutBuffer[BUF_PEER_POS]; @@ -53,31 +53,31 @@ void UsbCommand_SetPairingData(void) { } } -void UsbCommand_PairCentral(void) { +void UsbCommand_PairCentral(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { #ifdef CONFIG_BT_CENTRAL BtPair_PairCentral(); #endif } -void UsbCommand_PairPeripheral(void) { +void UsbCommand_PairPeripheral(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { #ifdef CONFIG_BT_PERIPHERAL BtPair_PairPeripheral(); #endif } // If zero address is provided, all existing bonds will be deleted -void UsbCommand_Unpair(void) { +void UsbCommand_Unpair(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { bt_addr_le_t addr = GetUsbRxBufferBleAddress(1); BtPair_Unpair(addr); } -void UsbCommand_IsPaired(void) { +void UsbCommand_IsPaired(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { bt_addr_le_t addr = GetUsbRxBufferBleAddress(1); bool isPaired = BtPair_IsDeviceBonded(&addr); SetUsbTxBufferUint8(1, isPaired); } -void UsbCommand_EnterPairingMode(void) { +void UsbCommand_EnterPairingMode(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { BtManager_EnterPairingMode(); } diff --git a/right/src/usb_commands/usb_command_pairing.h b/right/src/usb_commands/usb_command_pairing.h index b6312f0d..64bb6b1f 100644 --- a/right/src/usb_commands/usb_command_pairing.h +++ b/right/src/usb_commands/usb_command_pairing.h @@ -1,15 +1,19 @@ #ifndef __USB_COMMAND_PAIRING_H__ #define __USB_COMMAND_PAIRING_H__ +// Includes: + + #include + // Functions: - void UsbCommand_GetPairingData(void); - void UsbCommand_SetPairingData(void); - void UsbCommand_PairCentral(void); - void UsbCommand_PairPeripheral(void); - void UsbCommand_Unpair(void); - void UsbCommand_IsPaired(void); - void UsbCommand_EnterPairingMode(void); + void UsbCommand_GetPairingData(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_SetPairingData(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_PairCentral(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_PairPeripheral(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_Unpair(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_IsPaired(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); + void UsbCommand_EnterPairingMode(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); // Typedefs: diff --git a/right/src/usb_commands/usb_command_read_config.c b/right/src/usb_commands/usb_command_read_config.c index 7dd09de2..99212d2f 100644 --- a/right/src/usb_commands/usb_command_read_config.c +++ b/right/src/usb_commands/usb_command_read_config.c @@ -11,7 +11,7 @@ #include "usb_protocol_handler.h" #include "eeprom.h" -void UsbCommand_ReadConfig() +void UsbCommand_ReadConfig(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { config_buffer_id_t configBufferId = GetUsbRxBufferUint8(1); uint8_t length = GetUsbRxBufferUint8(2); diff --git a/right/src/usb_commands/usb_command_read_config.h b/right/src/usb_commands/usb_command_read_config.h index 889d3ec6..f2be164d 100644 --- a/right/src/usb_commands/usb_command_read_config.h +++ b/right/src/usb_commands/usb_command_read_config.h @@ -1,9 +1,13 @@ #ifndef __USB_COMMAND_READ_CONFIG_H__ #define __USB_COMMAND_READ_CONFIG_H__ +// Includes: + + #include + // Functions: - void UsbCommand_ReadConfig(); + void UsbCommand_ReadConfig(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); // Typedefs: diff --git a/right/src/usb_commands/usb_command_reenumerate.c b/right/src/usb_commands/usb_command_reenumerate.c index 86ba1cdf..256b32e9 100644 --- a/right/src/usb_commands/usb_command_reenumerate.c +++ b/right/src/usb_commands/usb_command_reenumerate.c @@ -9,7 +9,7 @@ #include "usb_commands/usb_command_reenumerate.h" #include "usb_protocol_handler.h" -void UsbCommand_Reenumerate(void) +void UsbCommand_Reenumerate(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { #ifdef __ZEPHYR__ bootmode_set(BOOT_MODE_TYPE_BOOTLOADER); diff --git a/right/src/usb_commands/usb_command_reenumerate.h b/right/src/usb_commands/usb_command_reenumerate.h index fccefd32..d4dcd716 100644 --- a/right/src/usb_commands/usb_command_reenumerate.h +++ b/right/src/usb_commands/usb_command_reenumerate.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_REENUMERATE_H__ #define __USB_COMMAND_REENUMERATE_H__ +// Includes: + + #include + // Functions: - void UsbCommand_Reenumerate(void); + void UsbCommand_Reenumerate(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_send_kboot_command_to_module.c b/right/src/usb_commands/usb_command_send_kboot_command_to_module.c index 08397fbf..c96817df 100644 --- a/right/src/usb_commands/usb_command_send_kboot_command_to_module.c +++ b/right/src/usb_commands/usb_command_send_kboot_command_to_module.c @@ -2,7 +2,7 @@ #include "usb_commands/usb_command_send_kboot_command_to_module.h" #include "slave_drivers/kboot_driver.h" -void UsbCommand_SendKbootCommandToModule(void) +void UsbCommand_SendKbootCommandToModule(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { KbootDriverState.phase = 0; KbootDriverState.i2cAddress = GetUsbRxBufferUint8(2); diff --git a/right/src/usb_commands/usb_command_send_kboot_command_to_module.h b/right/src/usb_commands/usb_command_send_kboot_command_to_module.h index e1b3b090..b67dfd10 100644 --- a/right/src/usb_commands/usb_command_send_kboot_command_to_module.h +++ b/right/src/usb_commands/usb_command_send_kboot_command_to_module.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_SEND_KBOOT_COMMAND_TO_MODULE_H__ #define __USB_COMMAND_SEND_KBOOT_COMMAND_TO_MODULE_H__ +// Includes: + + #include + // Functions: - void UsbCommand_SendKbootCommandToModule(void); + void UsbCommand_SendKbootCommandToModule(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_set_i2c_baud_rate.c b/right/src/usb_commands/usb_command_set_i2c_baud_rate.c index 90b12133..c294fee7 100644 --- a/right/src/usb_commands/usb_command_set_i2c_baud_rate.c +++ b/right/src/usb_commands/usb_command_set_i2c_baud_rate.c @@ -3,7 +3,7 @@ #include "init_peripherals.h" #include "fsl_i2c.h" -void UsbCommand_SetI2cBaudRate(void) +void UsbCommand_SetI2cBaudRate(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint32_t i2cBaudRate = GetUsbRxBufferUint32(1); ChangeI2cBaudRate(i2cBaudRate); diff --git a/right/src/usb_commands/usb_command_set_i2c_baud_rate.h b/right/src/usb_commands/usb_command_set_i2c_baud_rate.h index c95c4d32..22881e24 100644 --- a/right/src/usb_commands/usb_command_set_i2c_baud_rate.h +++ b/right/src/usb_commands/usb_command_set_i2c_baud_rate.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_SET_I2C_BAUD_RATE__ #define __USB_COMMAND_SET_I2C_BAUD_RATE__ +// Includes: + + #include + // Functions: - void UsbCommand_SetI2cBaudRate(void); + void UsbCommand_SetI2cBaudRate(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_set_led_pwm_brightness.c b/right/src/usb_commands/usb_command_set_led_pwm_brightness.c index 3cb465a3..035f38bc 100644 --- a/right/src/usb_commands/usb_command_set_led_pwm_brightness.c +++ b/right/src/usb_commands/usb_command_set_led_pwm_brightness.c @@ -3,7 +3,7 @@ #include "slave_drivers/uhk_module_driver.h" #include "led_pwm.h" -void UsbCommand_SetLedPwmBrightness(void) +void UsbCommand_SetLedPwmBrightness(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint8_t brightnessPercent = GetUsbRxBufferUint8(1); LedPwm_SetBrightness(brightnessPercent); diff --git a/right/src/usb_commands/usb_command_set_led_pwm_brightness.h b/right/src/usb_commands/usb_command_set_led_pwm_brightness.h index 48a9ac14..73daafb2 100644 --- a/right/src/usb_commands/usb_command_set_led_pwm_brightness.h +++ b/right/src/usb_commands/usb_command_set_led_pwm_brightness.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_SET_LED_PWM_BRIGHTNESS_H__ #define __USB_COMMAND_SET_LED_PWM_BRIGHTNESS_H__ +// Includes: + + #include + // Functions: - void UsbCommand_SetLedPwmBrightness(void); + void UsbCommand_SetLedPwmBrightness(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_set_test_led.c b/right/src/usb_commands/usb_command_set_test_led.c index 0104270e..82dfd346 100644 --- a/right/src/usb_commands/usb_command_set_test_led.c +++ b/right/src/usb_commands/usb_command_set_test_led.c @@ -3,7 +3,7 @@ #include "peripherals/test_led.h" #include "slave_drivers/uhk_module_driver.h" -void UsbCommand_SetTestLed(void) +void UsbCommand_SetTestLed(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { bool isTestLedOn = GetUsbRxBufferUint8(1); TestLed_Set(isTestLedOn); diff --git a/right/src/usb_commands/usb_command_set_test_led.h b/right/src/usb_commands/usb_command_set_test_led.h index 718e8fe1..413616e7 100644 --- a/right/src/usb_commands/usb_command_set_test_led.h +++ b/right/src/usb_commands/usb_command_set_test_led.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_SET_TEST_LED_H__ #define __USB_COMMAND_SET_TEST_LED_H__ +// Includes: + + #include + // Functions: - void UsbCommand_SetTestLed(void); + void UsbCommand_SetTestLed(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_set_variable.c b/right/src/usb_commands/usb_command_set_variable.c index f04f5a5a..729413e8 100644 --- a/right/src/usb_commands/usb_command_set_variable.c +++ b/right/src/usb_commands/usb_command_set_variable.c @@ -8,7 +8,7 @@ #include "config_manager.h" #include "ledmap.h" -void UsbCommand_SetVariable(void) +void UsbCommand_SetVariable(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { usb_variable_id_t variableId = GetUsbRxBufferUint8(1); diff --git a/right/src/usb_commands/usb_command_set_variable.h b/right/src/usb_commands/usb_command_set_variable.h index e9b61218..2f3148a7 100644 --- a/right/src/usb_commands/usb_command_set_variable.h +++ b/right/src/usb_commands/usb_command_set_variable.h @@ -1,8 +1,12 @@ #ifndef __USB_COMMAND_SET_VARIABLE_H__ #define __USB_COMMAND_SET_VARIABLE_H__ +// Includes: + + #include + // Functions: - void UsbCommand_SetVariable(void); + void UsbCommand_SetVariable(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_commands/usb_command_switch_keymap.c b/right/src/usb_commands/usb_command_switch_keymap.c index 2a822c77..60ef2a9a 100644 --- a/right/src/usb_commands/usb_command_switch_keymap.c +++ b/right/src/usb_commands/usb_command_switch_keymap.c @@ -3,7 +3,7 @@ #include "keymap.h" #include "layer_stack.h" -void UsbCommand_SwitchKeymap(void) +void UsbCommand_SwitchKeymap(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint32_t keymapLength = GetUsbRxBufferUint8(1); char *keymapAbbrev = (char*)GenericHidOutBuffer + 2; diff --git a/right/src/usb_commands/usb_command_switch_keymap.h b/right/src/usb_commands/usb_command_switch_keymap.h index be22c771..58e13480 100644 --- a/right/src/usb_commands/usb_command_switch_keymap.h +++ b/right/src/usb_commands/usb_command_switch_keymap.h @@ -1,9 +1,13 @@ #ifndef __USB_COMMAND_SWITCH_KEYMAP_H__ #define __USB_COMMAND_SWITCH_KEYMAP_H__ +// Includes: + + #include + // Functions: - void UsbCommand_SwitchKeymap(void); + void UsbCommand_SwitchKeymap(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); // Typedefs: diff --git a/right/src/usb_commands/usb_command_write_config.c b/right/src/usb_commands/usb_command_write_config.c index 29879241..9c147e94 100644 --- a/right/src/usb_commands/usb_command_write_config.c +++ b/right/src/usb_commands/usb_command_write_config.c @@ -6,7 +6,7 @@ #include "usb_protocol_handler.h" #include "eeprom.h" -void UsbCommand_WriteConfig(config_buffer_id_t configBufferId) +void UsbCommand_WriteConfig(config_buffer_id_t configBufferId, const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { uint8_t length = GetUsbRxBufferUint8(1); uint16_t offset = GetUsbRxBufferUint16(2); diff --git a/right/src/usb_commands/usb_command_write_config.h b/right/src/usb_commands/usb_command_write_config.h index 7fde91bd..c8dcbc2a 100644 --- a/right/src/usb_commands/usb_command_write_config.h +++ b/right/src/usb_commands/usb_command_write_config.h @@ -14,6 +14,6 @@ // Functions: - void UsbCommand_WriteConfig(config_buffer_id_t configBufferId); + void UsbCommand_WriteConfig(config_buffer_id_t configBufferId, const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/usb_interfaces/usb_interface_generic_hid.c b/right/src/usb_interfaces/usb_interface_generic_hid.c index 9ff60cea..2b5fd9aa 100644 --- a/right/src/usb_interfaces/usb_interface_generic_hid.c +++ b/right/src/usb_interfaces/usb_interface_generic_hid.c @@ -1,22 +1,10 @@ -#ifndef __ZEPHYR__ #include "usb_composite_device.h" -#endif - #include "usb_protocol_handler.h" -#ifndef __ZEPHYR__ uint32_t UsbGenericHidActionCounter; -#endif - -uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; - -#ifdef __ZEPHYR__ -const uint8_t *GenericHidOutBuffer; -#else -uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; -#endif +uint8_t GenericHidIn[USB_GENERIC_HID_IN_BUFFER_LENGTH]; +uint8_t GenericHidOut[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; -#ifndef __ZEPHYR__ static usb_status_t UsbReceiveData(void) { if (!UsbCompositeDevice.attach) { @@ -25,7 +13,7 @@ static usb_status_t UsbReceiveData(void) return USB_DeviceHidRecv(UsbCompositeDevice.genericHidHandle, USB_GENERIC_HID_ENDPOINT_OUT_INDEX, - GenericHidOutBuffer, + GenericHidOut, USB_GENERIC_HID_OUT_BUFFER_LENGTH); } @@ -62,11 +50,11 @@ usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void * break; case kUSB_DeviceHidEventRecvResponse: - UsbProtocolHandler(); + UsbProtocolHandler(GenericHidOut, GenericHidIn); USB_DeviceHidSend(UsbCompositeDevice.genericHidHandle, USB_GENERIC_HID_ENDPOINT_IN_INDEX, - GenericHidInBuffer, + GenericHidIn, USB_GENERIC_HID_IN_BUFFER_LENGTH); UsbGenericHidActionCounter++; error = UsbReceiveData(); @@ -75,7 +63,7 @@ usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void * case kUSB_DeviceHidEventGetReport: { usb_device_hid_report_struct_t *report = (usb_device_hid_report_struct_t*)param; if (report->reportType == USB_DEVICE_HID_REQUEST_GET_REPORT_TYPE_INPUT && report->reportId == 0 && report->reportLength <= USB_GENERIC_HID_IN_BUFFER_LENGTH) { - report->reportBuffer = GenericHidInBuffer; + report->reportBuffer = GenericHidIn; UsbGenericHidActionCounter++; error = kStatus_USB_Success; } else { @@ -90,4 +78,3 @@ usb_status_t UsbGenericHidCallback(class_handle_t handle, uint32_t event, void * return error; } -#endif diff --git a/right/src/usb_interfaces/usb_interface_generic_hid.h b/right/src/usb_interfaces/usb_interface_generic_hid.h index 07c8a10c..bbd51b2e 100644 --- a/right/src/usb_interfaces/usb_interface_generic_hid.h +++ b/right/src/usb_interfaces/usb_interface_generic_hid.h @@ -28,13 +28,6 @@ // Variables: extern uint32_t UsbGenericHidActionCounter; - extern uint8_t GenericHidInBuffer[USB_GENERIC_HID_IN_BUFFER_LENGTH]; - -#ifdef __ZEPHYR__ - extern const uint8_t *GenericHidOutBuffer; -#else - extern uint8_t GenericHidOutBuffer[USB_GENERIC_HID_OUT_BUFFER_LENGTH]; -#endif // Functions: diff --git a/right/src/usb_protocol_handler.c b/right/src/usb_protocol_handler.c index 37de9288..0c761943 100644 --- a/right/src/usb_protocol_handler.c +++ b/right/src/usb_protocol_handler.c @@ -1,7 +1,6 @@ #include #include "macros/status_buffer.h" #include "usb_protocol_handler.h" -#include "buffer.h" #include "usb_commands/usb_command_get_device_state.h" #include "usb_commands/usb_command_read_config.h" #include "usb_commands/usb_command_reenumerate.h" @@ -30,114 +29,104 @@ #include "usb_commands/usb_command_set_i2c_baud_rate.h" #endif -#ifdef __ZEPHYR__ -void CommandProtocolRxHandler(const uint8_t* data, size_t size) -{ - GenericHidOutBuffer = data; - // printk("CommandProtocolRxHandler: data[0]:%u size:%d\n", data[0], size); - UsbProtocolHandler(); - CommandProtocolTx(GenericHidInBuffer, USB_GENERIC_HID_OUT_BUFFER_LENGTH); -} -#endif - -void UsbProtocolHandler(void) +void UsbProtocolHandler(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer) { bzero(GenericHidInBuffer, USB_GENERIC_HID_IN_BUFFER_LENGTH); uint8_t command = GetUsbRxBufferUint8(0); switch (command) { case UsbCommandId_GetDeviceProperty: - UsbCommand_GetDeviceProperty(); + UsbCommand_GetDeviceProperty(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_Reenumerate: - UsbCommand_Reenumerate(); + UsbCommand_Reenumerate(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_ReadConfig: - UsbCommand_ReadConfig(); + UsbCommand_ReadConfig(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_WriteHardwareConfig: - UsbCommand_WriteConfig(ConfigBufferId_HardwareConfig); + UsbCommand_WriteConfig(ConfigBufferId_HardwareConfig, GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_WriteStagingUserConfig: - UsbCommand_WriteConfig(ConfigBufferId_StagingUserConfig); + UsbCommand_WriteConfig(ConfigBufferId_StagingUserConfig, GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_ApplyConfig: #ifdef __ZEPHYR__ - UsbCommand_ApplyConfigAsync(); + UsbCommand_ApplyConfigAsync(GenericHidOutBuffer, GenericHidInBuffer); #else - UsbCommand_ApplyConfig(); + UsbCommand_ApplyConfig(GenericHidOutBuffer, GenericHidInBuffer); #endif break; case UsbCommandId_GetDeviceState: - UsbCommand_GetKeyboardState(); + UsbCommand_GetKeyboardState(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_GetDebugBuffer: - UsbCommand_GetDebugBuffer(); + UsbCommand_GetDebugBuffer(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SwitchKeymap: - UsbCommand_SwitchKeymap(); + UsbCommand_SwitchKeymap(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_GetVariable: - UsbCommand_GetVariable(); + UsbCommand_GetVariable(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SetVariable: - UsbCommand_SetVariable(); + UsbCommand_SetVariable(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_ExecMacroCommand: - UsbCommand_ExecMacroCommand(); + UsbCommand_ExecMacroCommand(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_LaunchStorageTransfer: - UsbCommand_LaunchStorageTransfer(); + UsbCommand_LaunchStorageTransfer(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_GetModuleProperty: - UsbCommand_GetModuleProperty(); + UsbCommand_GetModuleProperty(GenericHidOutBuffer, GenericHidInBuffer); break; #ifdef __ZEPHYR__ case UsbCommandId_DrawOled: - UsbCommand_DrawOled(); + UsbCommand_DrawOled(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_GetPairingData: - UsbCommand_GetPairingData(); + UsbCommand_GetPairingData(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SetPairingData: - UsbCommand_SetPairingData(); + UsbCommand_SetPairingData(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_PairCentral: - UsbCommand_PairCentral(); + UsbCommand_PairCentral(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_PairPeripheral: - UsbCommand_PairPeripheral(); + UsbCommand_PairPeripheral(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_UnpairAll: - UsbCommand_Unpair(); + UsbCommand_Unpair(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_IsPaired: - UsbCommand_IsPaired(); + UsbCommand_IsPaired(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_EnterPairingMode: - UsbCommand_EnterPairingMode(); + UsbCommand_EnterPairingMode(GenericHidOutBuffer, GenericHidInBuffer); break; #else case UsbCommandId_JumpToModuleBootloader: - UsbCommand_JumpToModuleBootloader(); + UsbCommand_JumpToModuleBootloader(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SendKbootCommandToModule: - UsbCommand_SendKbootCommandToModule(); + UsbCommand_SendKbootCommandToModule(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SetTestLed: - UsbCommand_SetTestLed(); + UsbCommand_SetTestLed(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_GetAdcValue: - UsbCommand_GetAdcValue(); + UsbCommand_GetAdcValue(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SetLedPwmBrightness: - UsbCommand_SetLedPwmBrightness(); + UsbCommand_SetLedPwmBrightness(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_GetSlaveI2cErrors: - UsbCommand_GetSlaveI2cErrors(); + UsbCommand_GetSlaveI2cErrors(GenericHidOutBuffer, GenericHidInBuffer); break; case UsbCommandId_SetI2cBaudRate: - UsbCommand_SetI2cBaudRate(); + UsbCommand_SetI2cBaudRate(GenericHidOutBuffer, GenericHidInBuffer); break; #endif default: @@ -149,38 +138,8 @@ void UsbProtocolHandler(void) } } -uint8_t GetUsbRxBufferUint8(uint32_t offset) -{ - return GetBufferUint8(GenericHidOutBuffer, offset); -} - -uint16_t GetUsbRxBufferUint16(uint32_t offset) -{ - return GetBufferUint16(GenericHidOutBuffer, offset); -} - -uint32_t GetUsbRxBufferUint32(uint32_t offset) -{ - return GetBufferUint32(GenericHidOutBuffer, offset); -} - -void SetUsbTxBufferUint8(uint32_t offset, uint8_t value) -{ - SetBufferUint8(GenericHidInBuffer, offset, value); -} - -void SetUsbTxBufferUint16(uint32_t offset, uint16_t value) -{ - SetBufferUint16(GenericHidInBuffer, offset, value); -} - -void SetUsbTxBufferUint32(uint32_t offset, uint32_t value) -{ - SetBufferUint32(GenericHidInBuffer, offset, value); -} - #ifdef __ZEPHYR__ -bt_addr_le_t GetUsbRxBufferBleAddress(uint32_t offset) { +bt_addr_le_t GetBufferBleAddress(const uint8_t *GenericHidOutBuffer, uint32_t offset) { bt_addr_le_t addr; addr.type = 1; for (uint8_t i = 0; i < BLE_ADDR_LEN; i++) { @@ -189,7 +148,7 @@ bt_addr_le_t GetUsbRxBufferBleAddress(uint32_t offset) { return addr; } -void SetUsbTxBufferBleAddress(uint32_t offset, const bt_addr_le_t* addr) { +void SetBufferBleAddress(uint8_t *GenericHidInBuffer, uint32_t offset, const bt_addr_le_t* addr) { for (uint8_t i = 0; i < BLE_ADDR_LEN; i++) { GenericHidInBuffer[offset + i] = addr->a.val[i]; } diff --git a/right/src/usb_protocol_handler.h b/right/src/usb_protocol_handler.h index e8cacfc9..96a30e36 100644 --- a/right/src/usb_protocol_handler.h +++ b/right/src/usb_protocol_handler.h @@ -7,6 +7,7 @@ #include #include #include "usb_interfaces/usb_interface_generic_hid.h" + #include "buffer.h" #ifdef __ZEPHYR__ #include #else @@ -17,6 +18,17 @@ #define USB_STATUS_CODE_SIZE 1 + #define GetUsbRxBufferUint8(OFFSET) (GetBufferUint8(GenericHidOutBuffer, OFFSET)) + #define GetUsbRxBufferUint16(OFFSET) (GetBufferUint16(GenericHidOutBuffer, OFFSET)) + #define GetUsbRxBufferUint32(OFFSET) (GetBufferUint32(GenericHidOutBuffer, OFFSET)) + + #define SetUsbTxBufferUint8(OFFSET, VALUE) (SetBufferUint8(GenericHidInBuffer, OFFSET, VALUE)) + #define SetUsbTxBufferUint16(OFFSET, VALUE) (SetBufferUint16(GenericHidInBuffer, OFFSET, VALUE)) + #define SetUsbTxBufferUint32(OFFSET, VALUE) (SetBufferUint32(GenericHidInBuffer, OFFSET, VALUE)) + + #define GetUsbRxBufferBleAddress(OFFSET) (GetBufferBleAddress(GenericHidOutBuffer, OFFSET)) + #define SetUsbTxBufferBleAddress(OFFSET, VALUE) (SetBufferBleAddress(GenericHidInBuffer, OFFSET, VALUE)) + // Typedefs: typedef enum { @@ -77,19 +89,9 @@ // Functions: #ifdef __ZEPHYR__ - extern bool CommandProtocolTx(const uint8_t* data, size_t size); - - void SetUsbTxBufferBleAddress(uint32_t offset, const bt_addr_le_t* addr); - extern bt_addr_le_t GetUsbRxBufferBleAddress(uint32_t offset); + bt_addr_le_t GetBufferBleAddress(const uint8_t *GenericHidOutBuffer, uint32_t offset); + void SetBufferBleAddress(uint8_t *GenericHidInBuffer, uint32_t offset, const bt_addr_le_t* addr); #endif - void UsbProtocolHandler(void); - - uint8_t GetUsbRxBufferUint8(uint32_t offset); - uint16_t GetUsbRxBufferUint16(uint32_t offset); - uint32_t GetUsbRxBufferUint32(uint32_t offset); - - void SetUsbTxBufferUint8(uint32_t offset, uint8_t value); - void SetUsbTxBufferUint16(uint32_t offset, uint16_t value); - void SetUsbTxBufferUint32(uint32_t offset, uint32_t value); + void UsbProtocolHandler(const uint8_t *GenericHidOutBuffer, uint8_t *GenericHidInBuffer); #endif diff --git a/right/src/user_logic.c b/right/src/user_logic.c index 438343b6..1e4cfe17 100644 --- a/right/src/user_logic.c +++ b/right/src/user_logic.c @@ -15,7 +15,7 @@ void RunUserLogic(void) { if (EventVector_IsSet(EventVector_ApplyConfig)) { - UsbCommand_ApplyConfig(); + UsbCommand_ApplyConfig(NULL, NULL); } if (EventVector_IsSet(EventVector_KeymapReloadNeeded)) { SwitchKeymapById(CurrentKeymapIndex); From 49cb009323c78ad0a8436f968b1ed25d80270043 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Wed, 4 Dec 2024 11:28:25 +0100 Subject: [PATCH 27/33] get rid of source file symlinks motivation: my debugger cannot open and track symlink source files The new solution is to move all code (except main.c) into "uhk" and "uhk-shared" libraries, whose top cmake file is at the root of the codebase. --- CMakeLists.txt | 21 ++++++++ device/CMakeLists.txt | 26 ++++------ device/src/CMakeLists.txt | 34 ++++++------- device/src/bt_conn.c | 2 +- device/src/bt_manager.c | 2 +- device/src/bt_pair.c | 4 +- device/src/bt_scan.c | 2 +- device/src/debug_eventloop_timing.h | 2 +- device/src/device.h | 1 - device/src/device_state.c | 6 +-- device/src/flash.c | 2 +- device/src/keyboard/charger.c | 4 +- device/src/keyboard/i2c.c | 8 +-- device/src/keyboard/input_interceptor.h | 2 +- device/src/keyboard/key_scanner.c | 12 ++--- device/src/keyboard/leds.c | 4 +- device/src/keyboard/legacy_ports.h | 33 ------------ device/src/keyboard/oled/framebuffer.h | 2 +- device/src/keyboard/oled/oled.c | 6 +-- device/src/keyboard/oled/oled_text_renderer.c | 2 +- .../keyboard/oled/screens/pairing_screen.c | 4 +- .../keyboard/oled/screens/pairing_screen.h | 2 +- .../keyboard/oled/screens/screen_manager.c | 10 ++-- .../src/keyboard/oled/widgets/text_widget.c | 2 +- device/src/keyboard/oled/widgets/widget.h | 2 +- .../src/keyboard/oled/widgets/widget_store.c | 8 +-- device/src/keyboard/uart.c | 6 +-- device/src/legacy/arduino_hid/ConsumerAPI.h | 1 - device/src/legacy/arduino_hid/SystemAPI.h | 1 - device/src/legacy/caret_config.c | 1 - device/src/legacy/caret_config.h | 1 - device/src/legacy/config_manager.c | 1 - device/src/legacy/config_manager.h | 1 - device/src/legacy/config_parser/basic_types.c | 1 - device/src/legacy/config_parser/basic_types.h | 1 - .../src/legacy/config_parser/config_globals.c | 1 - .../src/legacy/config_parser/config_globals.h | 1 - .../legacy/config_parser/error_reporting.c | 1 - .../legacy/config_parser/error_reporting.h | 1 - .../src/legacy/config_parser/parse_config.c | 1 - .../src/legacy/config_parser/parse_config.h | 1 - .../config_parser/parse_host_connection.c | 1 - .../config_parser/parse_host_connection.h | 1 - .../src/legacy/config_parser/parse_keymap.c | 1 - .../src/legacy/config_parser/parse_keymap.h | 1 - device/src/legacy/config_parser/parse_macro.c | 1 - device/src/legacy/config_parser/parse_macro.h | 1 - .../config_parser/parse_module_config.c | 1 - .../config_parser/parse_module_config.h | 1 - device/src/legacy/debug.c | 1 - device/src/legacy/debug.h | 1 - device/src/legacy/eeprom.c | 1 - device/src/legacy/eeprom.h | 1 - device/src/legacy/event_scheduler.c | 1 - device/src/legacy/event_scheduler.h | 1 - device/src/legacy/host_connection.c | 1 - device/src/legacy/host_connection.h | 1 - device/src/legacy/i2c.c | 1 - device/src/legacy/i2c.h | 1 - device/src/legacy/i2c_error_logger.c | 1 - device/src/legacy/i2c_error_logger.h | 1 - device/src/legacy/key_action.h | 1 - device/src/legacy/key_states.c | 1 - device/src/legacy/key_states.h | 1 - device/src/legacy/keymap.c | 1 - device/src/legacy/keymap.h | 1 - device/src/legacy/layer.c | 1 - device/src/legacy/layer.h | 1 - device/src/legacy/layer_stack.c | 1 - device/src/legacy/layer_stack.h | 1 - device/src/legacy/layer_switcher.c | 1 - device/src/legacy/layer_switcher.h | 1 - device/src/legacy/layouts/key_layout.c | 1 - device/src/legacy/layouts/key_layout.h | 1 - .../layouts/key_layout_60_to_universal.c | 1 - .../layouts/key_layout_60_to_universal.h | 1 - .../layouts/key_layout_80_to_universal.c | 1 - .../layouts/key_layout_80_to_universal.h | 1 - device/src/legacy/led_display.c | 1 - device/src/legacy/led_display.h | 1 - device/src/legacy/led_manager.c | 1 - device/src/legacy/led_manager.h | 1 - device/src/legacy/ledmap.c | 1 - device/src/legacy/ledmap.h | 1 - device/src/legacy/lufa/HIDClassCommon.h | 1 - device/src/legacy/macro_events.c | 1 - device/src/legacy/macro_events.h | 1 - device/src/legacy/macro_recorder.c | 1 - device/src/legacy/macro_recorder.h | 1 - device/src/legacy/macros/commands.c | 1 - device/src/legacy/macros/commands.h | 1 - device/src/legacy/macros/core.c | 1 - device/src/legacy/macros/core.h | 1 - device/src/legacy/macros/debug_commands.c | 1 - device/src/legacy/macros/debug_commands.h | 1 - device/src/legacy/macros/key_timing.c | 1 - device/src/legacy/macros/key_timing.h | 1 - device/src/legacy/macros/keyid_parser.c | 1 - device/src/legacy/macros/keyid_parser.h | 1 - device/src/legacy/macros/scancode_commands.c | 1 - device/src/legacy/macros/scancode_commands.h | 1 - device/src/legacy/macros/set_command.c | 1 - device/src/legacy/macros/set_command.h | 1 - device/src/legacy/macros/shortcut_parser.c | 1 - device/src/legacy/macros/shortcut_parser.h | 1 - device/src/legacy/macros/status_buffer.c | 1 - device/src/legacy/macros/status_buffer.h | 1 - device/src/legacy/macros/string_reader.c | 1 - device/src/legacy/macros/string_reader.h | 1 - device/src/legacy/macros/typedefs.h | 1 - device/src/legacy/macros/vars.c | 1 - device/src/legacy/macros/vars.h | 1 - device/src/legacy/module.c | 1 - device/src/legacy/module.h | 1 - device/src/legacy/mouse_controller.c | 1 - device/src/legacy/mouse_controller.h | 1 - device/src/legacy/mouse_keys.c | 1 - device/src/legacy/mouse_keys.h | 1 - device/src/legacy/peripherals/led_driver.h | 1 - device/src/legacy/peripherals/merge_sensor.c | 1 - device/src/legacy/peripherals/merge_sensor.h | 1 - device/src/legacy/peripherals/reset_button.c | 1 - device/src/legacy/peripherals/reset_button.h | 1 - device/src/legacy/postponer.c | 1 - device/src/legacy/postponer.h | 1 - device/src/legacy/power_mode.c | 1 - device/src/legacy/power_mode.h | 1 - device/src/legacy/secondary_role_driver.c | 1 - device/src/legacy/secondary_role_driver.h | 1 - device/src/legacy/segment_display.c | 1 - device/src/legacy/segment_display.h | 1 - .../legacy/slave_drivers/is31fl3xxx_driver.c | 1 - .../legacy/slave_drivers/is31fl3xxx_driver.h | 1 - .../legacy/slave_drivers/touchpad_driver.c | 1 - .../legacy/slave_drivers/touchpad_driver.h | 1 - .../legacy/slave_drivers/uhk_module_driver.c | 1 - .../legacy/slave_drivers/uhk_module_driver.h | 1 - device/src/legacy/slave_scheduler.c | 1 - device/src/legacy/slave_scheduler.h | 1 - device/src/legacy/slot.h | 1 - device/src/legacy/storage.c | 1 - device/src/legacy/storage.h | 1 - device/src/legacy/str_utils.c | 1 - device/src/legacy/str_utils.h | 1 - device/src/legacy/stubs.c | 1 - device/src/legacy/stubs.h | 1 - device/src/legacy/test_switches.c | 1 - device/src/legacy/test_switches.h | 1 - device/src/legacy/timer.c | 1 - device/src/legacy/timer.h | 1 - device/src/legacy/usb_api.h | 1 - .../usb_commands/usb_command_apply_config.c | 1 - .../usb_commands/usb_command_apply_config.h | 1 - .../usb_commands/usb_command_draw_oled.c | 1 - .../usb_commands/usb_command_draw_oled.h | 1 - .../usb_command_exec_macro_command.c | 1 - .../usb_command_exec_macro_command.h | 1 - .../usb_command_get_debug_buffer.c | 1 - .../usb_command_get_debug_buffer.h | 1 - .../usb_command_get_device_property.c | 1 - .../usb_command_get_device_property.h | 1 - .../usb_command_get_device_state.c | 1 - .../usb_command_get_device_state.h | 1 - .../usb_command_get_module_property.c | 1 - .../usb_command_get_module_property.h | 1 - .../usb_command_get_new_pairings.c | 1 - .../usb_command_get_new_pairings.h | 1 - .../usb_commands/usb_command_get_variable.c | 1 - .../usb_commands/usb_command_get_variable.h | 1 - .../usb_command_launch_storage_transfer.c | 1 - .../usb_command_launch_storage_transfer.h | 1 - .../legacy/usb_commands/usb_command_pairing.c | 1 - .../legacy/usb_commands/usb_command_pairing.h | 1 - .../usb_commands/usb_command_read_config.c | 1 - .../usb_commands/usb_command_read_config.h | 1 - .../usb_commands/usb_command_reenumerate.c | 1 - .../usb_commands/usb_command_reenumerate.h | 1 - .../usb_commands/usb_command_set_variable.c | 1 - .../usb_commands/usb_command_set_variable.h | 1 - .../usb_commands/usb_command_switch_keymap.c | 1 - .../usb_commands/usb_command_switch_keymap.h | 1 - .../usb_commands/usb_command_write_config.c | 1 - .../usb_commands/usb_command_write_config.h | 1 - device/src/legacy/usb_composite_device.h | 1 - .../usb_descriptor_basic_keyboard_report.h | 1 - .../usb_descriptor_configuration.h | 1 - .../usb_descriptor_media_keyboard_report.h | 1 - .../usb_descriptor_system_keyboard_report.h | 1 - device/src/legacy/usb_device_config.h | 1 - .../usb_interface_basic_keyboard.c | 1 - .../usb_interface_basic_keyboard.h | 1 - .../usb_interfaces/usb_interface_gamepad.c | 1 - .../usb_interfaces/usb_interface_gamepad.h | 1 - .../usb_interface_generic_hid.c | 1 - .../usb_interface_generic_hid.h | 1 - .../usb_interface_media_keyboard.c | 1 - .../usb_interface_media_keyboard.h | 1 - .../usb_interfaces/usb_interface_mouse.c | 1 - .../usb_interfaces/usb_interface_mouse.h | 1 - .../usb_interface_system_keyboard.c | 1 - .../usb_interface_system_keyboard.h | 1 - device/src/legacy/usb_protocol_handler.c | 1 - device/src/legacy/usb_protocol_handler.h | 1 - device/src/legacy/usb_report_updater.c | 1 - device/src/legacy/usb_report_updater.h | 1 - device/src/legacy/user_logic.c | 1 - device/src/legacy/user_logic.h | 1 - device/src/legacy/utils.c | 1 - device/src/legacy/utils.h | 1 - device/src/logger.c | 2 +- device/src/main.c | 16 +++--- device/src/messenger.c | 10 ++-- device/src/nus_client.c | 12 ++--- device/src/nus_server.c | 2 +- device/src/shared/atomicity.h | 1 - device/src/shared/attributes.h | 1 - device/src/shared/bool_array_converter.c | 1 - device/src/shared/bool_array_converter.h | 1 - device/src/shared/buffer.c | 1 - device/src/shared/buffer.h | 1 - device/src/shared/crc16.c | 1 - device/src/shared/crc16.h | 1 - device/src/shared/fallback_versions.c | 1 - device/src/shared/i2c_addresses.h | 1 - device/src/shared/key_matrix.c | 1 - device/src/shared/key_matrix.h | 1 - device/src/shared/slave_protocol.c | 1 - device/src/shared/slave_protocol.h | 1 - device/src/shared/versioning.h | 1 - device/src/shell.c | 4 +- device/src/state_sync.c | 28 +++++------ device/src/state_sync.h | 8 +-- device/src/usb/command_app.hpp | 2 +- device/src/usb/usb.cpp | 6 +-- device/src/usb/usb_compatibility.cpp | 8 +-- right/src/CMakeLists.txt | 50 +++++++++++++++++++ right/src/buspal/bootloader_common.h | 1 - right/src/config_parser/CMakeLists.txt | 10 ++++ right/src/config_parser/basic_types.h | 3 -- right/src/layouts/CMakeLists.txt | 5 ++ right/src/macros/CMakeLists.txt | 13 +++++ right/src/peripherals/CMakeLists.txt | 7 +++ right/src/slave_drivers/CMakeLists.txt | 6 +++ right/src/usb_api.h | 27 ++++++++++ right/src/usb_commands/CMakeLists.txt | 24 +++++++++ .../usb_commands/usb_command_apply_config.c | 2 +- right/src/usb_device_config.h | 3 ++ right/src/usb_interfaces/CMakeLists.txt | 8 +++ .../usb_interface_basic_keyboard.h | 6 --- .../usb_interface_media_keyboard.h | 6 --- .../src/usb_interfaces/usb_interface_mouse.h | 4 -- .../usb_interface_system_keyboard.h | 5 -- shared/CMakeLists.txt | 20 ++++++++ zephyr/module.yml | 2 + 254 files changed, 318 insertions(+), 388 deletions(-) create mode 100644 CMakeLists.txt delete mode 120000 device/src/device.h delete mode 100644 device/src/keyboard/legacy_ports.h delete mode 120000 device/src/legacy/arduino_hid/ConsumerAPI.h delete mode 120000 device/src/legacy/arduino_hid/SystemAPI.h delete mode 120000 device/src/legacy/caret_config.c delete mode 120000 device/src/legacy/caret_config.h delete mode 120000 device/src/legacy/config_manager.c delete mode 120000 device/src/legacy/config_manager.h delete mode 120000 device/src/legacy/config_parser/basic_types.c delete mode 120000 device/src/legacy/config_parser/basic_types.h delete mode 120000 device/src/legacy/config_parser/config_globals.c delete mode 120000 device/src/legacy/config_parser/config_globals.h delete mode 120000 device/src/legacy/config_parser/error_reporting.c delete mode 120000 device/src/legacy/config_parser/error_reporting.h delete mode 120000 device/src/legacy/config_parser/parse_config.c delete mode 120000 device/src/legacy/config_parser/parse_config.h delete mode 120000 device/src/legacy/config_parser/parse_host_connection.c delete mode 120000 device/src/legacy/config_parser/parse_host_connection.h delete mode 120000 device/src/legacy/config_parser/parse_keymap.c delete mode 120000 device/src/legacy/config_parser/parse_keymap.h delete mode 120000 device/src/legacy/config_parser/parse_macro.c delete mode 120000 device/src/legacy/config_parser/parse_macro.h delete mode 120000 device/src/legacy/config_parser/parse_module_config.c delete mode 120000 device/src/legacy/config_parser/parse_module_config.h delete mode 120000 device/src/legacy/debug.c delete mode 120000 device/src/legacy/debug.h delete mode 120000 device/src/legacy/eeprom.c delete mode 120000 device/src/legacy/eeprom.h delete mode 120000 device/src/legacy/event_scheduler.c delete mode 120000 device/src/legacy/event_scheduler.h delete mode 120000 device/src/legacy/host_connection.c delete mode 120000 device/src/legacy/host_connection.h delete mode 120000 device/src/legacy/i2c.c delete mode 120000 device/src/legacy/i2c.h delete mode 120000 device/src/legacy/i2c_error_logger.c delete mode 120000 device/src/legacy/i2c_error_logger.h delete mode 120000 device/src/legacy/key_action.h delete mode 120000 device/src/legacy/key_states.c delete mode 120000 device/src/legacy/key_states.h delete mode 120000 device/src/legacy/keymap.c delete mode 120000 device/src/legacy/keymap.h delete mode 120000 device/src/legacy/layer.c delete mode 120000 device/src/legacy/layer.h delete mode 120000 device/src/legacy/layer_stack.c delete mode 120000 device/src/legacy/layer_stack.h delete mode 120000 device/src/legacy/layer_switcher.c delete mode 120000 device/src/legacy/layer_switcher.h delete mode 120000 device/src/legacy/layouts/key_layout.c delete mode 120000 device/src/legacy/layouts/key_layout.h delete mode 120000 device/src/legacy/layouts/key_layout_60_to_universal.c delete mode 120000 device/src/legacy/layouts/key_layout_60_to_universal.h delete mode 120000 device/src/legacy/layouts/key_layout_80_to_universal.c delete mode 120000 device/src/legacy/layouts/key_layout_80_to_universal.h delete mode 120000 device/src/legacy/led_display.c delete mode 120000 device/src/legacy/led_display.h delete mode 120000 device/src/legacy/led_manager.c delete mode 120000 device/src/legacy/led_manager.h delete mode 120000 device/src/legacy/ledmap.c delete mode 120000 device/src/legacy/ledmap.h delete mode 120000 device/src/legacy/lufa/HIDClassCommon.h delete mode 120000 device/src/legacy/macro_events.c delete mode 120000 device/src/legacy/macro_events.h delete mode 120000 device/src/legacy/macro_recorder.c delete mode 120000 device/src/legacy/macro_recorder.h delete mode 120000 device/src/legacy/macros/commands.c delete mode 120000 device/src/legacy/macros/commands.h delete mode 120000 device/src/legacy/macros/core.c delete mode 120000 device/src/legacy/macros/core.h delete mode 120000 device/src/legacy/macros/debug_commands.c delete mode 120000 device/src/legacy/macros/debug_commands.h delete mode 120000 device/src/legacy/macros/key_timing.c delete mode 120000 device/src/legacy/macros/key_timing.h delete mode 120000 device/src/legacy/macros/keyid_parser.c delete mode 120000 device/src/legacy/macros/keyid_parser.h delete mode 120000 device/src/legacy/macros/scancode_commands.c delete mode 120000 device/src/legacy/macros/scancode_commands.h delete mode 120000 device/src/legacy/macros/set_command.c delete mode 120000 device/src/legacy/macros/set_command.h delete mode 120000 device/src/legacy/macros/shortcut_parser.c delete mode 120000 device/src/legacy/macros/shortcut_parser.h delete mode 120000 device/src/legacy/macros/status_buffer.c delete mode 120000 device/src/legacy/macros/status_buffer.h delete mode 120000 device/src/legacy/macros/string_reader.c delete mode 120000 device/src/legacy/macros/string_reader.h delete mode 120000 device/src/legacy/macros/typedefs.h delete mode 120000 device/src/legacy/macros/vars.c delete mode 120000 device/src/legacy/macros/vars.h delete mode 120000 device/src/legacy/module.c delete mode 120000 device/src/legacy/module.h delete mode 120000 device/src/legacy/mouse_controller.c delete mode 120000 device/src/legacy/mouse_controller.h delete mode 120000 device/src/legacy/mouse_keys.c delete mode 120000 device/src/legacy/mouse_keys.h delete mode 120000 device/src/legacy/peripherals/led_driver.h delete mode 120000 device/src/legacy/peripherals/merge_sensor.c delete mode 120000 device/src/legacy/peripherals/merge_sensor.h delete mode 120000 device/src/legacy/peripherals/reset_button.c delete mode 120000 device/src/legacy/peripherals/reset_button.h delete mode 120000 device/src/legacy/postponer.c delete mode 120000 device/src/legacy/postponer.h delete mode 120000 device/src/legacy/power_mode.c delete mode 120000 device/src/legacy/power_mode.h delete mode 120000 device/src/legacy/secondary_role_driver.c delete mode 120000 device/src/legacy/secondary_role_driver.h delete mode 120000 device/src/legacy/segment_display.c delete mode 120000 device/src/legacy/segment_display.h delete mode 120000 device/src/legacy/slave_drivers/is31fl3xxx_driver.c delete mode 120000 device/src/legacy/slave_drivers/is31fl3xxx_driver.h delete mode 120000 device/src/legacy/slave_drivers/touchpad_driver.c delete mode 120000 device/src/legacy/slave_drivers/touchpad_driver.h delete mode 120000 device/src/legacy/slave_drivers/uhk_module_driver.c delete mode 120000 device/src/legacy/slave_drivers/uhk_module_driver.h delete mode 120000 device/src/legacy/slave_scheduler.c delete mode 120000 device/src/legacy/slave_scheduler.h delete mode 120000 device/src/legacy/slot.h delete mode 120000 device/src/legacy/storage.c delete mode 120000 device/src/legacy/storage.h delete mode 120000 device/src/legacy/str_utils.c delete mode 120000 device/src/legacy/str_utils.h delete mode 120000 device/src/legacy/stubs.c delete mode 120000 device/src/legacy/stubs.h delete mode 120000 device/src/legacy/test_switches.c delete mode 120000 device/src/legacy/test_switches.h delete mode 120000 device/src/legacy/timer.c delete mode 120000 device/src/legacy/timer.h delete mode 120000 device/src/legacy/usb_api.h delete mode 120000 device/src/legacy/usb_commands/usb_command_apply_config.c delete mode 120000 device/src/legacy/usb_commands/usb_command_apply_config.h delete mode 120000 device/src/legacy/usb_commands/usb_command_draw_oled.c delete mode 120000 device/src/legacy/usb_commands/usb_command_draw_oled.h delete mode 120000 device/src/legacy/usb_commands/usb_command_exec_macro_command.c delete mode 120000 device/src/legacy/usb_commands/usb_command_exec_macro_command.h delete mode 120000 device/src/legacy/usb_commands/usb_command_get_debug_buffer.c delete mode 120000 device/src/legacy/usb_commands/usb_command_get_debug_buffer.h delete mode 120000 device/src/legacy/usb_commands/usb_command_get_device_property.c delete mode 120000 device/src/legacy/usb_commands/usb_command_get_device_property.h delete mode 120000 device/src/legacy/usb_commands/usb_command_get_device_state.c delete mode 120000 device/src/legacy/usb_commands/usb_command_get_device_state.h delete mode 120000 device/src/legacy/usb_commands/usb_command_get_module_property.c delete mode 120000 device/src/legacy/usb_commands/usb_command_get_module_property.h delete mode 120000 device/src/legacy/usb_commands/usb_command_get_new_pairings.c delete mode 120000 device/src/legacy/usb_commands/usb_command_get_new_pairings.h delete mode 120000 device/src/legacy/usb_commands/usb_command_get_variable.c delete mode 120000 device/src/legacy/usb_commands/usb_command_get_variable.h delete mode 120000 device/src/legacy/usb_commands/usb_command_launch_storage_transfer.c delete mode 120000 device/src/legacy/usb_commands/usb_command_launch_storage_transfer.h delete mode 120000 device/src/legacy/usb_commands/usb_command_pairing.c delete mode 120000 device/src/legacy/usb_commands/usb_command_pairing.h delete mode 120000 device/src/legacy/usb_commands/usb_command_read_config.c delete mode 120000 device/src/legacy/usb_commands/usb_command_read_config.h delete mode 120000 device/src/legacy/usb_commands/usb_command_reenumerate.c delete mode 120000 device/src/legacy/usb_commands/usb_command_reenumerate.h delete mode 120000 device/src/legacy/usb_commands/usb_command_set_variable.c delete mode 120000 device/src/legacy/usb_commands/usb_command_set_variable.h delete mode 120000 device/src/legacy/usb_commands/usb_command_switch_keymap.c delete mode 120000 device/src/legacy/usb_commands/usb_command_switch_keymap.h delete mode 120000 device/src/legacy/usb_commands/usb_command_write_config.c delete mode 120000 device/src/legacy/usb_commands/usb_command_write_config.h delete mode 120000 device/src/legacy/usb_composite_device.h delete mode 120000 device/src/legacy/usb_descriptors/usb_descriptor_basic_keyboard_report.h delete mode 120000 device/src/legacy/usb_descriptors/usb_descriptor_configuration.h delete mode 120000 device/src/legacy/usb_descriptors/usb_descriptor_media_keyboard_report.h delete mode 120000 device/src/legacy/usb_descriptors/usb_descriptor_system_keyboard_report.h delete mode 120000 device/src/legacy/usb_device_config.h delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.c delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.h delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_gamepad.c delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_gamepad.h delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_generic_hid.c delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_generic_hid.h delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_media_keyboard.c delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_media_keyboard.h delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_mouse.c delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_mouse.h delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_system_keyboard.c delete mode 120000 device/src/legacy/usb_interfaces/usb_interface_system_keyboard.h delete mode 120000 device/src/legacy/usb_protocol_handler.c delete mode 120000 device/src/legacy/usb_protocol_handler.h delete mode 120000 device/src/legacy/usb_report_updater.c delete mode 120000 device/src/legacy/usb_report_updater.h delete mode 120000 device/src/legacy/user_logic.c delete mode 120000 device/src/legacy/user_logic.h delete mode 120000 device/src/legacy/utils.c delete mode 120000 device/src/legacy/utils.h delete mode 120000 device/src/shared/atomicity.h delete mode 120000 device/src/shared/attributes.h delete mode 120000 device/src/shared/bool_array_converter.c delete mode 120000 device/src/shared/bool_array_converter.h delete mode 120000 device/src/shared/buffer.c delete mode 120000 device/src/shared/buffer.h delete mode 120000 device/src/shared/crc16.c delete mode 120000 device/src/shared/crc16.h delete mode 120000 device/src/shared/fallback_versions.c delete mode 120000 device/src/shared/i2c_addresses.h delete mode 120000 device/src/shared/key_matrix.c delete mode 120000 device/src/shared/key_matrix.h delete mode 120000 device/src/shared/slave_protocol.c delete mode 120000 device/src/shared/slave_protocol.h delete mode 120000 device/src/shared/versioning.h create mode 100644 right/src/CMakeLists.txt create mode 100644 right/src/config_parser/CMakeLists.txt create mode 100644 right/src/layouts/CMakeLists.txt create mode 100644 right/src/macros/CMakeLists.txt create mode 100644 right/src/peripherals/CMakeLists.txt create mode 100644 right/src/slave_drivers/CMakeLists.txt create mode 100644 right/src/usb_commands/CMakeLists.txt create mode 100644 right/src/usb_interfaces/CMakeLists.txt create mode 100644 shared/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..69d1eb99 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +# until https://github.com/zephyrproject-rtos/zephyr/pull/69490 is merged +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") + +# zephyr's build system doesn't define standard build type symbols, fix that here +if(NOT CONFIG_DEBUG) + add_definitions(-DNDEBUG) +endif() + +if(NOT CONFIG_DEVICE_ID) + # uhk code isn't added to bootloader + return() +endif() + +project(uhk) +add_library(${PROJECT_NAME}) +target_link_libraries(${PROJECT_NAME} PUBLIC + zephyr_interface +) +add_subdirectory(device/src) +add_subdirectory(right/src) +add_subdirectory(shared) diff --git a/device/CMakeLists.txt b/device/CMakeLists.txt index aa08ea3f..7cc0551a 100644 --- a/device/CMakeLists.txt +++ b/device/CMakeLists.txt @@ -1,25 +1,21 @@ cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(uhk) +project(app) if(NOT CONFIG_DEBUG) add_definitions(-DNDEBUG) endif() -add_subdirectory(src) +target_link_libraries(app PRIVATE + uhk +) -# add the versions.c source file conditionally -if(NOT NOVERSIONS) - target_sources(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../shared/versions.c) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../shared/versions.c PROPERTIES GENERATED TRUE) -endif() - -if(NOT CONFIG_BOARD_UHK_60_RIGHT) - # C headers compiled with C++ give pointer conversion errors, turn them to warnings - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") - - # Link app to c2usb - target_link_libraries(app PRIVATE - c2usb +if(CONFIG_BOARD_UHK_60_RIGHT) + target_sources(app PRIVATE + src/uhk60/main.c + ) +else() + target_sources(app PRIVATE + src/main.c ) endif() diff --git a/device/src/CMakeLists.txt b/device/src/CMakeLists.txt index 46a817c9..adf9d11d 100644 --- a/device/src/CMakeLists.txt +++ b/device/src/CMakeLists.txt @@ -1,8 +1,5 @@ -target_include_directories(app PUBLIC - . - legacy - legacy/config_parser - shared +target_include_directories(${PROJECT_NAME} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} usb ) @@ -19,18 +16,16 @@ set(usb_cpp_sources ) file(GLOB_RECURSE keyboard_sources keyboard/*.c) file(GLOB lvgl_dummy lvgl/*.c) -file(GLOB_RECURSE legacy_sources legacy/*.c) -file(GLOB_RECURSE shared_sources shared/*.c) -if(CONFIG_BOARD_UHK_60_RIGHT) - target_sources(app PRIVATE - uhk60/main.c +if(NOT CONFIG_BOARD_UHK_60_RIGHT) + # C headers compiled with C++ give pointer conversion errors, turn them to warnings + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") + target_link_libraries(${PROJECT_NAME} PRIVATE + c2usb ) -else() - target_sources(app PRIVATE + + target_sources(${PROJECT_NAME} PRIVATE ${usb_cpp_sources} - ${legacy_sources} - ${shared_sources} bt_conn.c bt_manager.c bt_pair.c @@ -38,7 +33,6 @@ else() device_state.c flash.c logger.c - main.c messenger_queue.c messenger.c settings.c @@ -47,27 +41,27 @@ else() state_sync.c ) if(CONFIG_BT_PERIPHERAL) - target_sources(app PRIVATE + target_sources(${PROJECT_NAME} PRIVATE bt_advertise.c nus_server.c ) endif() if(CONFIG_BT_CENTRAL) - target_sources(app PRIVATE + target_sources(${PROJECT_NAME} PRIVATE bt_scan.c nus_client.c ) endif() if(CONFIG_BOARD_UHK_DONGLE) - target_sources(app PRIVATE + target_sources(${PROJECT_NAME} PRIVATE dongle_leds.c ) else() - target_sources(app PRIVATE + target_sources(${PROJECT_NAME} PRIVATE ${keyboard_sources} ) if(CONFIG_BOARD_UHK_80_RIGHT) - target_sources(app PRIVATE + target_sources(${PROJECT_NAME} PRIVATE ${lvgl_dummy} ) endif() diff --git a/device/src/bt_conn.c b/device/src/bt_conn.c index 8e284a0b..037ea907 100644 --- a/device/src/bt_conn.c +++ b/device/src/bt_conn.c @@ -10,7 +10,7 @@ #include "device_state.h" #include "keyboard/oled/screens/screen_manager.h" #include "keyboard/oled/widgets/widget.h" -#include "legacy/host_connection.h" +#include "host_connection.h" #include "nus_client.h" #include "nus_server.h" #include "device.h" diff --git a/device/src/bt_manager.c b/device/src/bt_manager.c index 6ef6684c..7cd68f4d 100644 --- a/device/src/bt_manager.c +++ b/device/src/bt_manager.c @@ -4,7 +4,7 @@ #include "bt_advertise.h" #include "nus_client.h" #include "nus_server.h" -#include "legacy/event_scheduler.h" +#include "event_scheduler.h" #include #include #include diff --git a/device/src/bt_pair.c b/device/src/bt_pair.c index 5fc5f4f3..3f19e7d0 100644 --- a/device/src/bt_pair.c +++ b/device/src/bt_pair.c @@ -7,11 +7,11 @@ #include #include "bt_conn.h" #include "bt_scan.h" -#include "legacy/event_scheduler.h" +#include "event_scheduler.h" #include "zephyr/kernel.h" #include "bt_manager.h" #include "bt_advertise.h" -#include "legacy/host_connection.h" +#include "host_connection.h" #include "settings.h" bool BtPair_LastPairingSucceeded = true; diff --git a/device/src/bt_scan.c b/device/src/bt_scan.c index a0c04de8..572dc550 100644 --- a/device/src/bt_scan.c +++ b/device/src/bt_scan.c @@ -2,7 +2,7 @@ #include "bt_conn.h" #include "bt_pair.h" #include "device.h" -#include "legacy/host_connection.h" +#include "host_connection.h" static void scan_filter_match(struct bt_scan_device_info *device_info, struct bt_scan_filter_match *filter_match, bool connectable) diff --git a/device/src/debug_eventloop_timing.h b/device/src/debug_eventloop_timing.h index 02d0508e..9238a8e1 100644 --- a/device/src/debug_eventloop_timing.h +++ b/device/src/debug_eventloop_timing.h @@ -5,7 +5,7 @@ #include #include - #include "legacy/debug.h" + #include "debug.h" // Macros: diff --git a/device/src/device.h b/device/src/device.h deleted file mode 120000 index 7048efe1..00000000 --- a/device/src/device.h +++ /dev/null @@ -1 +0,0 @@ -../../shared/device.h \ No newline at end of file diff --git a/device/src/device_state.c b/device/src/device_state.c index d4f14d5b..9ed03d17 100644 --- a/device/src/device_state.c +++ b/device/src/device_state.c @@ -3,11 +3,11 @@ #include "device.h" #include "keyboard/uart.h" #include "keyboard/oled/widgets/widgets.h" -#include "legacy/slave_drivers/uhk_module_driver.h" +#include "slave_drivers/uhk_module_driver.h" #include "state_sync.h" #include "shared/slave_protocol.h" -#include "legacy/event_scheduler.h" -#include "legacy/power_mode.h" +#include "event_scheduler.h" +#include "power_mode.h" #include "dongle_leds.h" static connection_type_t isConnected[ConnectionId_Count] = {}; diff --git a/device/src/flash.c b/device/src/flash.c index b6ed6295..903e7ea6 100644 --- a/device/src/flash.c +++ b/device/src/flash.c @@ -1,5 +1,5 @@ #include "flash.h" -#include "legacy/storage.h" +#include "storage.h" #include const struct flash_area *hardwareConfigArea; diff --git a/device/src/keyboard/charger.c b/device/src/keyboard/charger.c index a7f1a1da..2c85073b 100644 --- a/device/src/keyboard/charger.c +++ b/device/src/keyboard/charger.c @@ -4,9 +4,9 @@ #include "charger.h" #include "keyboard/charger.h" #include "shell.h" -#include "legacy/timer.h" +#include "timer.h" #include "attributes.h" -#include "legacy/event_scheduler.h" +#include "event_scheduler.h" #include "state_sync.h" #include #include "device.h" diff --git a/device/src/keyboard/i2c.c b/device/src/keyboard/i2c.c index 30f77cb4..b45106fa 100644 --- a/device/src/keyboard/i2c.c +++ b/device/src/keyboard/i2c.c @@ -2,11 +2,11 @@ #include #include "device.h" #include "i2c_compatibility.h" -#include "legacy/timer.h" +#include "timer.h" #include "shared/slave_protocol.h" -#include "legacy/slave_scheduler.h" -#include "legacy/slave_drivers/uhk_module_driver.h" -#include "legacy/i2c.h" +#include "slave_scheduler.h" +#include "slave_drivers/uhk_module_driver.h" +#include "i2c.h" #include "keyboard/i2c.h" // Thread definitions diff --git a/device/src/keyboard/input_interceptor.h b/device/src/keyboard/input_interceptor.h index 869d7fee..e7f59fa2 100644 --- a/device/src/keyboard/input_interceptor.h +++ b/device/src/keyboard/input_interceptor.h @@ -5,7 +5,7 @@ #include #include - #include "legacy/usb_interfaces/usb_interface_basic_keyboard.h" + #include "usb_interfaces/usb_interface_basic_keyboard.h" // Macros: diff --git a/device/src/keyboard/key_scanner.c b/device/src/keyboard/key_scanner.c index 5b222d72..d85b30d6 100644 --- a/device/src/keyboard/key_scanner.c +++ b/device/src/keyboard/key_scanner.c @@ -11,17 +11,17 @@ #include "logger.h" #include "key_states.h" #include "bool_array_converter.h" -#include "legacy/module.h" +#include "module.h" #include "logger.h" #include "messenger.h" #include "device.h" -#include "legacy/event_scheduler.h" +#include "event_scheduler.h" #include "main.h" -#include "legacy/config_manager.h" -#include "legacy/macros/keyid_parser.h" +#include "config_manager.h" +#include "macros/keyid_parser.h" #include "attributes.h" -#include "legacy/layouts/key_layout.h" -#include "legacy/layouts/key_layout_80_to_universal.h" +#include "layouts/key_layout.h" +#include "layouts/key_layout_80_to_universal.h" // Thread definitions diff --git a/device/src/keyboard/leds.c b/device/src/keyboard/leds.c index ea82d1c8..dcb1ec79 100644 --- a/device/src/keyboard/leds.c +++ b/device/src/keyboard/leds.c @@ -5,8 +5,8 @@ #include "leds.h" #include "shell.h" #include "keyboard/key_scanner.h" -#include "legacy/ledmap.h" -#include "legacy/slave_drivers/is31fl3xxx_driver.h" +#include "ledmap.h" +#include "slave_drivers/is31fl3xxx_driver.h" // Thread definitions diff --git a/device/src/keyboard/legacy_ports.h b/device/src/keyboard/legacy_ports.h deleted file mode 100644 index 466b51f5..00000000 --- a/device/src/keyboard/legacy_ports.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef __LEGACY_PORTS_H__ -#define __LEGACY_PORTS_H__ - -// Typedefs: - -#ifdef __ZEPHYR__ - typedef enum _usb_status - { - kStatus_USB_Success = 0x00U, /*!< Success */ - kStatus_USB_Error, /*!< Failed */ - - kStatus_USB_Busy, /*!< Busy */ - kStatus_USB_InvalidHandle, /*!< Invalid handle */ - kStatus_USB_InvalidParameter, /*!< Invalid parameter */ - kStatus_USB_InvalidRequest, /*!< Invalid request */ - kStatus_USB_ControllerNotFound, /*!< Controller cannot be found */ - kStatus_USB_InvalidControllerInterface, /*!< Invalid controller interface */ - - kStatus_USB_NotSupported, /*!< Configuration is not supported */ - kStatus_USB_Retry, /*!< Enumeration get configuration retry */ - kStatus_USB_TransferStall, /*!< Transfer stalled */ - kStatus_USB_TransferFailed, /*!< Transfer failed */ - kStatus_USB_AllocFail, /*!< Allocation failed */ - kStatus_USB_LackSwapBuffer, /*!< Insufficient swap buffer for KHCI */ - kStatus_USB_TransferCancel, /*!< The transfer cancelled */ - kStatus_USB_BandwidthFail, /*!< Allocate bandwidth failed */ - kStatus_USB_MSDStatusFail, /*!< For MSD, the CSW status means fail */ - } usb_status_t; - - typedef uint8_t usb_hid_protocol_t; -#endif - -#endif diff --git a/device/src/keyboard/oled/framebuffer.h b/device/src/keyboard/oled/framebuffer.h index 660c5ca6..a7fae825 100644 --- a/device/src/keyboard/oled/framebuffer.h +++ b/device/src/keyboard/oled/framebuffer.h @@ -6,7 +6,7 @@ #include "oled_display.h" #include #include - #include "legacy/led_display.h" + #include "led_display.h" #include // Macros: diff --git a/device/src/keyboard/oled/oled.c b/device/src/keyboard/oled/oled.c index 66c6c276..d2c8fb9b 100644 --- a/device/src/keyboard/oled/oled.c +++ b/device/src/keyboard/oled/oled.c @@ -4,9 +4,9 @@ #include "oled_display.h" #include "oled_buffer.h" #include "screens/screen_manager.h" -#include "legacy/event_scheduler.h" -#include "legacy/timer.h" -#include "legacy/led_manager.h" +#include "event_scheduler.h" +#include "timer.h" +#include "led_manager.h" #include "keyboard/oled/screens/screens.h" #if DEVICE_HAS_OLED diff --git a/device/src/keyboard/oled/oled_text_renderer.c b/device/src/keyboard/oled/oled_text_renderer.c index 773a4f02..7fefd1ac 100644 --- a/device/src/keyboard/oled/oled_text_renderer.c +++ b/device/src/keyboard/oled/oled_text_renderer.c @@ -10,7 +10,7 @@ #include "widgets/widget.h" #include #include -#include "legacy/str_utils.h" +#include "str_utils.h" static int16_t computeAlignment(int16_t width, int16_t objectWidth, int16_t alignment) { diff --git a/device/src/keyboard/oled/screens/pairing_screen.c b/device/src/keyboard/oled/screens/pairing_screen.c index f4c2bf80..06962b38 100644 --- a/device/src/keyboard/oled/screens/pairing_screen.c +++ b/device/src/keyboard/oled/screens/pairing_screen.c @@ -4,10 +4,10 @@ #include "keyboard/oled/oled.h" #include "keyboard/oled/oled_buffer.h" #include "logger.h" -#include "legacy/lufa/HIDClassCommon.h" +#include "lufa/HIDClassCommon.h" #include "bt_conn.h" #include "screen_manager.h" -#include "legacy/key_action.h" +#include "key_action.h" static widget_t splitterWidget; static widget_t questionLine; diff --git a/device/src/keyboard/oled/screens/pairing_screen.h b/device/src/keyboard/oled/screens/pairing_screen.h index 2daaa5bb..1115694c 100644 --- a/device/src/keyboard/oled/screens/pairing_screen.h +++ b/device/src/keyboard/oled/screens/pairing_screen.h @@ -6,7 +6,7 @@ #include #include #include "../widgets/widget.h" - #include "legacy/key_action.h" + #include "key_action.h" // Macros: diff --git a/device/src/keyboard/oled/screens/screen_manager.c b/device/src/keyboard/oled/screens/screen_manager.c index 7b23abf4..8c79d9d3 100644 --- a/device/src/keyboard/oled/screens/screen_manager.c +++ b/device/src/keyboard/oled/screens/screen_manager.c @@ -3,11 +3,11 @@ #include "keyboard/oled/widgets/widgets.h" #include "keyboard/oled/screens/screens.h" #include "keyboard/oled/oled.h" -#include "legacy/timer.h" -#include "legacy/event_scheduler.h" -#include "legacy/timer.h" -#include "legacy/event_scheduler.h" -#include "legacy/ledmap.h" +#include "timer.h" +#include "event_scheduler.h" +#include "timer.h" +#include "event_scheduler.h" +#include "ledmap.h" screen_id_t ActiveScreen = ScreenId_Main; diff --git a/device/src/keyboard/oled/widgets/text_widget.c b/device/src/keyboard/oled/widgets/text_widget.c index e3e89e1d..418e8557 100644 --- a/device/src/keyboard/oled/widgets/text_widget.c +++ b/device/src/keyboard/oled/widgets/text_widget.c @@ -2,7 +2,7 @@ #include "keyboard/oled/widgets/widgets.h" #include "keyboard/oled/oled.h" #include -#include "legacy/str_utils.h" +#include "str_utils.h" void TextWidget_Draw(widget_t* self, framebuffer_t* buffer) { diff --git a/device/src/keyboard/oled/widgets/widget.h b/device/src/keyboard/oled/widgets/widget.h index 1a140d0c..69db6eea 100644 --- a/device/src/keyboard/oled/widgets/widget.h +++ b/device/src/keyboard/oled/widgets/widget.h @@ -7,7 +7,7 @@ #include #include "../framebuffer.h" #include "keyboard/oled/fonts/fonts.h" - #include "legacy/str_utils.h" + #include "str_utils.h" // Macros: diff --git a/device/src/keyboard/oled/widgets/widget_store.c b/device/src/keyboard/oled/widgets/widget_store.c index 2d682104..ac4e50d7 100644 --- a/device/src/keyboard/oled/widgets/widget_store.c +++ b/device/src/keyboard/oled/widgets/widget_store.c @@ -8,10 +8,10 @@ #include "keyboard/oled/oled_text_renderer.h" #include "text_widget.h" #include "widget.h" -#include "legacy/keymap.h" -#include "legacy/layer.h" -#include "legacy/layer_switcher.h" -#include "legacy/str_utils.h" +#include "keymap.h" +#include "layer.h" +#include "layer_switcher.h" +#include "str_utils.h" #include "keyboard/uart.h" #include "bt_conn.h" #include "state_sync.h" diff --git a/device/src/keyboard/uart.c b/device/src/keyboard/uart.c index a6a7f362..e38e74f8 100644 --- a/device/src/keyboard/uart.c +++ b/device/src/keyboard/uart.c @@ -1,13 +1,13 @@ #include #include -#include "legacy/timer.h" +#include "timer.h" #include "uart.h" #include "messenger.h" #include "messenger_queue.h" #include "device.h" #include "device_state.h" -#include "legacy/debug.h" -#include "legacy/event_scheduler.h" +#include "debug.h" +#include "event_scheduler.h" // Thread definitions diff --git a/device/src/legacy/arduino_hid/ConsumerAPI.h b/device/src/legacy/arduino_hid/ConsumerAPI.h deleted file mode 120000 index 81839e6f..00000000 --- a/device/src/legacy/arduino_hid/ConsumerAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/arduino_hid/ConsumerAPI.h \ No newline at end of file diff --git a/device/src/legacy/arduino_hid/SystemAPI.h b/device/src/legacy/arduino_hid/SystemAPI.h deleted file mode 120000 index f6a065be..00000000 --- a/device/src/legacy/arduino_hid/SystemAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/arduino_hid/SystemAPI.h \ No newline at end of file diff --git a/device/src/legacy/caret_config.c b/device/src/legacy/caret_config.c deleted file mode 120000 index c4eda29e..00000000 --- a/device/src/legacy/caret_config.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/caret_config.c \ No newline at end of file diff --git a/device/src/legacy/caret_config.h b/device/src/legacy/caret_config.h deleted file mode 120000 index 1b5fa2fb..00000000 --- a/device/src/legacy/caret_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/caret_config.h \ No newline at end of file diff --git a/device/src/legacy/config_manager.c b/device/src/legacy/config_manager.c deleted file mode 120000 index 45403074..00000000 --- a/device/src/legacy/config_manager.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/config_manager.c \ No newline at end of file diff --git a/device/src/legacy/config_manager.h b/device/src/legacy/config_manager.h deleted file mode 120000 index fa3bffa4..00000000 --- a/device/src/legacy/config_manager.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/config_manager.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/basic_types.c b/device/src/legacy/config_parser/basic_types.c deleted file mode 120000 index af120a88..00000000 --- a/device/src/legacy/config_parser/basic_types.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/basic_types.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/basic_types.h b/device/src/legacy/config_parser/basic_types.h deleted file mode 120000 index 49c15dae..00000000 --- a/device/src/legacy/config_parser/basic_types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/basic_types.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/config_globals.c b/device/src/legacy/config_parser/config_globals.c deleted file mode 120000 index a12d48b8..00000000 --- a/device/src/legacy/config_parser/config_globals.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/config_globals.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/config_globals.h b/device/src/legacy/config_parser/config_globals.h deleted file mode 120000 index 5dc84014..00000000 --- a/device/src/legacy/config_parser/config_globals.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/config_globals.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/error_reporting.c b/device/src/legacy/config_parser/error_reporting.c deleted file mode 120000 index fefc4928..00000000 --- a/device/src/legacy/config_parser/error_reporting.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/error_reporting.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/error_reporting.h b/device/src/legacy/config_parser/error_reporting.h deleted file mode 120000 index cad46a08..00000000 --- a/device/src/legacy/config_parser/error_reporting.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/error_reporting.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_config.c b/device/src/legacy/config_parser/parse_config.c deleted file mode 120000 index 9f022856..00000000 --- a/device/src/legacy/config_parser/parse_config.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_config.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_config.h b/device/src/legacy/config_parser/parse_config.h deleted file mode 120000 index a8aecc27..00000000 --- a/device/src/legacy/config_parser/parse_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_config.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_host_connection.c b/device/src/legacy/config_parser/parse_host_connection.c deleted file mode 120000 index 734ff012..00000000 --- a/device/src/legacy/config_parser/parse_host_connection.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_host_connection.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_host_connection.h b/device/src/legacy/config_parser/parse_host_connection.h deleted file mode 120000 index 7155652c..00000000 --- a/device/src/legacy/config_parser/parse_host_connection.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_host_connection.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_keymap.c b/device/src/legacy/config_parser/parse_keymap.c deleted file mode 120000 index 63cf99ff..00000000 --- a/device/src/legacy/config_parser/parse_keymap.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_keymap.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_keymap.h b/device/src/legacy/config_parser/parse_keymap.h deleted file mode 120000 index 5a4447a1..00000000 --- a/device/src/legacy/config_parser/parse_keymap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_keymap.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_macro.c b/device/src/legacy/config_parser/parse_macro.c deleted file mode 120000 index bc869228..00000000 --- a/device/src/legacy/config_parser/parse_macro.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_macro.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_macro.h b/device/src/legacy/config_parser/parse_macro.h deleted file mode 120000 index e3782706..00000000 --- a/device/src/legacy/config_parser/parse_macro.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_macro.h \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_module_config.c b/device/src/legacy/config_parser/parse_module_config.c deleted file mode 120000 index 2fd3971b..00000000 --- a/device/src/legacy/config_parser/parse_module_config.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_module_config.c \ No newline at end of file diff --git a/device/src/legacy/config_parser/parse_module_config.h b/device/src/legacy/config_parser/parse_module_config.h deleted file mode 120000 index 1abf9e4d..00000000 --- a/device/src/legacy/config_parser/parse_module_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/config_parser/parse_module_config.h \ No newline at end of file diff --git a/device/src/legacy/debug.c b/device/src/legacy/debug.c deleted file mode 120000 index 6be27d50..00000000 --- a/device/src/legacy/debug.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/debug.c \ No newline at end of file diff --git a/device/src/legacy/debug.h b/device/src/legacy/debug.h deleted file mode 120000 index cb3eb62d..00000000 --- a/device/src/legacy/debug.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/debug.h \ No newline at end of file diff --git a/device/src/legacy/eeprom.c b/device/src/legacy/eeprom.c deleted file mode 120000 index 1ea632f1..00000000 --- a/device/src/legacy/eeprom.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/eeprom.c \ No newline at end of file diff --git a/device/src/legacy/eeprom.h b/device/src/legacy/eeprom.h deleted file mode 120000 index 7997074c..00000000 --- a/device/src/legacy/eeprom.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/eeprom.h \ No newline at end of file diff --git a/device/src/legacy/event_scheduler.c b/device/src/legacy/event_scheduler.c deleted file mode 120000 index 5774cae3..00000000 --- a/device/src/legacy/event_scheduler.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/event_scheduler.c \ No newline at end of file diff --git a/device/src/legacy/event_scheduler.h b/device/src/legacy/event_scheduler.h deleted file mode 120000 index 6f073e3a..00000000 --- a/device/src/legacy/event_scheduler.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/event_scheduler.h \ No newline at end of file diff --git a/device/src/legacy/host_connection.c b/device/src/legacy/host_connection.c deleted file mode 120000 index 94690908..00000000 --- a/device/src/legacy/host_connection.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/host_connection.c \ No newline at end of file diff --git a/device/src/legacy/host_connection.h b/device/src/legacy/host_connection.h deleted file mode 120000 index bf11f478..00000000 --- a/device/src/legacy/host_connection.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/host_connection.h \ No newline at end of file diff --git a/device/src/legacy/i2c.c b/device/src/legacy/i2c.c deleted file mode 120000 index cf7045b2..00000000 --- a/device/src/legacy/i2c.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/i2c.c \ No newline at end of file diff --git a/device/src/legacy/i2c.h b/device/src/legacy/i2c.h deleted file mode 120000 index 9044e877..00000000 --- a/device/src/legacy/i2c.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/i2c.h \ No newline at end of file diff --git a/device/src/legacy/i2c_error_logger.c b/device/src/legacy/i2c_error_logger.c deleted file mode 120000 index c96f860b..00000000 --- a/device/src/legacy/i2c_error_logger.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/i2c_error_logger.c \ No newline at end of file diff --git a/device/src/legacy/i2c_error_logger.h b/device/src/legacy/i2c_error_logger.h deleted file mode 120000 index f6ca5539..00000000 --- a/device/src/legacy/i2c_error_logger.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/i2c_error_logger.h \ No newline at end of file diff --git a/device/src/legacy/key_action.h b/device/src/legacy/key_action.h deleted file mode 120000 index bbd6a30d..00000000 --- a/device/src/legacy/key_action.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/key_action.h \ No newline at end of file diff --git a/device/src/legacy/key_states.c b/device/src/legacy/key_states.c deleted file mode 120000 index 7f380b22..00000000 --- a/device/src/legacy/key_states.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/key_states.c \ No newline at end of file diff --git a/device/src/legacy/key_states.h b/device/src/legacy/key_states.h deleted file mode 120000 index 621f46b7..00000000 --- a/device/src/legacy/key_states.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/key_states.h \ No newline at end of file diff --git a/device/src/legacy/keymap.c b/device/src/legacy/keymap.c deleted file mode 120000 index d11056c2..00000000 --- a/device/src/legacy/keymap.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/keymap.c \ No newline at end of file diff --git a/device/src/legacy/keymap.h b/device/src/legacy/keymap.h deleted file mode 120000 index 4166ab56..00000000 --- a/device/src/legacy/keymap.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/keymap.h \ No newline at end of file diff --git a/device/src/legacy/layer.c b/device/src/legacy/layer.c deleted file mode 120000 index 2b70d753..00000000 --- a/device/src/legacy/layer.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/layer.c \ No newline at end of file diff --git a/device/src/legacy/layer.h b/device/src/legacy/layer.h deleted file mode 120000 index d071a4f0..00000000 --- a/device/src/legacy/layer.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/layer.h \ No newline at end of file diff --git a/device/src/legacy/layer_stack.c b/device/src/legacy/layer_stack.c deleted file mode 120000 index e8028839..00000000 --- a/device/src/legacy/layer_stack.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/layer_stack.c \ No newline at end of file diff --git a/device/src/legacy/layer_stack.h b/device/src/legacy/layer_stack.h deleted file mode 120000 index ceedd56c..00000000 --- a/device/src/legacy/layer_stack.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/layer_stack.h \ No newline at end of file diff --git a/device/src/legacy/layer_switcher.c b/device/src/legacy/layer_switcher.c deleted file mode 120000 index 39cf6b2e..00000000 --- a/device/src/legacy/layer_switcher.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/layer_switcher.c \ No newline at end of file diff --git a/device/src/legacy/layer_switcher.h b/device/src/legacy/layer_switcher.h deleted file mode 120000 index 873becff..00000000 --- a/device/src/legacy/layer_switcher.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/layer_switcher.h \ No newline at end of file diff --git a/device/src/legacy/layouts/key_layout.c b/device/src/legacy/layouts/key_layout.c deleted file mode 120000 index cebed70f..00000000 --- a/device/src/legacy/layouts/key_layout.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/layouts/key_layout.c \ No newline at end of file diff --git a/device/src/legacy/layouts/key_layout.h b/device/src/legacy/layouts/key_layout.h deleted file mode 120000 index 4a2a0807..00000000 --- a/device/src/legacy/layouts/key_layout.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/layouts/key_layout.h \ No newline at end of file diff --git a/device/src/legacy/layouts/key_layout_60_to_universal.c b/device/src/legacy/layouts/key_layout_60_to_universal.c deleted file mode 120000 index 28f4b7df..00000000 --- a/device/src/legacy/layouts/key_layout_60_to_universal.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/layouts/key_layout_60_to_universal.c \ No newline at end of file diff --git a/device/src/legacy/layouts/key_layout_60_to_universal.h b/device/src/legacy/layouts/key_layout_60_to_universal.h deleted file mode 120000 index 78f0fa4c..00000000 --- a/device/src/legacy/layouts/key_layout_60_to_universal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/layouts/key_layout_60_to_universal.h \ No newline at end of file diff --git a/device/src/legacy/layouts/key_layout_80_to_universal.c b/device/src/legacy/layouts/key_layout_80_to_universal.c deleted file mode 120000 index 745f8a10..00000000 --- a/device/src/legacy/layouts/key_layout_80_to_universal.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/layouts/key_layout_80_to_universal.c \ No newline at end of file diff --git a/device/src/legacy/layouts/key_layout_80_to_universal.h b/device/src/legacy/layouts/key_layout_80_to_universal.h deleted file mode 120000 index 0046c71e..00000000 --- a/device/src/legacy/layouts/key_layout_80_to_universal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/layouts/key_layout_80_to_universal.h \ No newline at end of file diff --git a/device/src/legacy/led_display.c b/device/src/legacy/led_display.c deleted file mode 120000 index 5d4d891f..00000000 --- a/device/src/legacy/led_display.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/led_display.c \ No newline at end of file diff --git a/device/src/legacy/led_display.h b/device/src/legacy/led_display.h deleted file mode 120000 index b7bedb47..00000000 --- a/device/src/legacy/led_display.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/led_display.h \ No newline at end of file diff --git a/device/src/legacy/led_manager.c b/device/src/legacy/led_manager.c deleted file mode 120000 index 6277120f..00000000 --- a/device/src/legacy/led_manager.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/led_manager.c \ No newline at end of file diff --git a/device/src/legacy/led_manager.h b/device/src/legacy/led_manager.h deleted file mode 120000 index 1de3c2d1..00000000 --- a/device/src/legacy/led_manager.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/led_manager.h \ No newline at end of file diff --git a/device/src/legacy/ledmap.c b/device/src/legacy/ledmap.c deleted file mode 120000 index 2e911d84..00000000 --- a/device/src/legacy/ledmap.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/ledmap.c \ No newline at end of file diff --git a/device/src/legacy/ledmap.h b/device/src/legacy/ledmap.h deleted file mode 120000 index 59c7548b..00000000 --- a/device/src/legacy/ledmap.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/ledmap.h \ No newline at end of file diff --git a/device/src/legacy/lufa/HIDClassCommon.h b/device/src/legacy/lufa/HIDClassCommon.h deleted file mode 120000 index b268be5f..00000000 --- a/device/src/legacy/lufa/HIDClassCommon.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/lufa/HIDClassCommon.h \ No newline at end of file diff --git a/device/src/legacy/macro_events.c b/device/src/legacy/macro_events.c deleted file mode 120000 index dacf1fc4..00000000 --- a/device/src/legacy/macro_events.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/macro_events.c \ No newline at end of file diff --git a/device/src/legacy/macro_events.h b/device/src/legacy/macro_events.h deleted file mode 120000 index 4da8f066..00000000 --- a/device/src/legacy/macro_events.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/macro_events.h \ No newline at end of file diff --git a/device/src/legacy/macro_recorder.c b/device/src/legacy/macro_recorder.c deleted file mode 120000 index 9aaa6fdf..00000000 --- a/device/src/legacy/macro_recorder.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/macro_recorder.c \ No newline at end of file diff --git a/device/src/legacy/macro_recorder.h b/device/src/legacy/macro_recorder.h deleted file mode 120000 index 2979f89a..00000000 --- a/device/src/legacy/macro_recorder.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/macro_recorder.h \ No newline at end of file diff --git a/device/src/legacy/macros/commands.c b/device/src/legacy/macros/commands.c deleted file mode 120000 index 5632ee0b..00000000 --- a/device/src/legacy/macros/commands.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/commands.c \ No newline at end of file diff --git a/device/src/legacy/macros/commands.h b/device/src/legacy/macros/commands.h deleted file mode 120000 index 84b66d3e..00000000 --- a/device/src/legacy/macros/commands.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/commands.h \ No newline at end of file diff --git a/device/src/legacy/macros/core.c b/device/src/legacy/macros/core.c deleted file mode 120000 index ced86e04..00000000 --- a/device/src/legacy/macros/core.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/core.c \ No newline at end of file diff --git a/device/src/legacy/macros/core.h b/device/src/legacy/macros/core.h deleted file mode 120000 index c4ec995e..00000000 --- a/device/src/legacy/macros/core.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/core.h \ No newline at end of file diff --git a/device/src/legacy/macros/debug_commands.c b/device/src/legacy/macros/debug_commands.c deleted file mode 120000 index 51f3630d..00000000 --- a/device/src/legacy/macros/debug_commands.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/debug_commands.c \ No newline at end of file diff --git a/device/src/legacy/macros/debug_commands.h b/device/src/legacy/macros/debug_commands.h deleted file mode 120000 index 18963497..00000000 --- a/device/src/legacy/macros/debug_commands.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/debug_commands.h \ No newline at end of file diff --git a/device/src/legacy/macros/key_timing.c b/device/src/legacy/macros/key_timing.c deleted file mode 120000 index 0bd987b5..00000000 --- a/device/src/legacy/macros/key_timing.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/key_timing.c \ No newline at end of file diff --git a/device/src/legacy/macros/key_timing.h b/device/src/legacy/macros/key_timing.h deleted file mode 120000 index f9ff340b..00000000 --- a/device/src/legacy/macros/key_timing.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/key_timing.h \ No newline at end of file diff --git a/device/src/legacy/macros/keyid_parser.c b/device/src/legacy/macros/keyid_parser.c deleted file mode 120000 index 8257aef8..00000000 --- a/device/src/legacy/macros/keyid_parser.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/keyid_parser.c \ No newline at end of file diff --git a/device/src/legacy/macros/keyid_parser.h b/device/src/legacy/macros/keyid_parser.h deleted file mode 120000 index c0c6dc03..00000000 --- a/device/src/legacy/macros/keyid_parser.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/keyid_parser.h \ No newline at end of file diff --git a/device/src/legacy/macros/scancode_commands.c b/device/src/legacy/macros/scancode_commands.c deleted file mode 120000 index d5b2fe4f..00000000 --- a/device/src/legacy/macros/scancode_commands.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/scancode_commands.c \ No newline at end of file diff --git a/device/src/legacy/macros/scancode_commands.h b/device/src/legacy/macros/scancode_commands.h deleted file mode 120000 index d7f2bc7a..00000000 --- a/device/src/legacy/macros/scancode_commands.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/scancode_commands.h \ No newline at end of file diff --git a/device/src/legacy/macros/set_command.c b/device/src/legacy/macros/set_command.c deleted file mode 120000 index 1de4b5b6..00000000 --- a/device/src/legacy/macros/set_command.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/set_command.c \ No newline at end of file diff --git a/device/src/legacy/macros/set_command.h b/device/src/legacy/macros/set_command.h deleted file mode 120000 index a27dede4..00000000 --- a/device/src/legacy/macros/set_command.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/set_command.h \ No newline at end of file diff --git a/device/src/legacy/macros/shortcut_parser.c b/device/src/legacy/macros/shortcut_parser.c deleted file mode 120000 index 98374cde..00000000 --- a/device/src/legacy/macros/shortcut_parser.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/shortcut_parser.c \ No newline at end of file diff --git a/device/src/legacy/macros/shortcut_parser.h b/device/src/legacy/macros/shortcut_parser.h deleted file mode 120000 index 85c1a1f5..00000000 --- a/device/src/legacy/macros/shortcut_parser.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/shortcut_parser.h \ No newline at end of file diff --git a/device/src/legacy/macros/status_buffer.c b/device/src/legacy/macros/status_buffer.c deleted file mode 120000 index 0d4ab7b3..00000000 --- a/device/src/legacy/macros/status_buffer.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/status_buffer.c \ No newline at end of file diff --git a/device/src/legacy/macros/status_buffer.h b/device/src/legacy/macros/status_buffer.h deleted file mode 120000 index 43467817..00000000 --- a/device/src/legacy/macros/status_buffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/status_buffer.h \ No newline at end of file diff --git a/device/src/legacy/macros/string_reader.c b/device/src/legacy/macros/string_reader.c deleted file mode 120000 index 63925fe2..00000000 --- a/device/src/legacy/macros/string_reader.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/string_reader.c \ No newline at end of file diff --git a/device/src/legacy/macros/string_reader.h b/device/src/legacy/macros/string_reader.h deleted file mode 120000 index 42e34ce0..00000000 --- a/device/src/legacy/macros/string_reader.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/string_reader.h \ No newline at end of file diff --git a/device/src/legacy/macros/typedefs.h b/device/src/legacy/macros/typedefs.h deleted file mode 120000 index b2204800..00000000 --- a/device/src/legacy/macros/typedefs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/typedefs.h \ No newline at end of file diff --git a/device/src/legacy/macros/vars.c b/device/src/legacy/macros/vars.c deleted file mode 120000 index 2f8d5d22..00000000 --- a/device/src/legacy/macros/vars.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/vars.c \ No newline at end of file diff --git a/device/src/legacy/macros/vars.h b/device/src/legacy/macros/vars.h deleted file mode 120000 index 995c88ce..00000000 --- a/device/src/legacy/macros/vars.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/macros/vars.h \ No newline at end of file diff --git a/device/src/legacy/module.c b/device/src/legacy/module.c deleted file mode 120000 index 08002209..00000000 --- a/device/src/legacy/module.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/module.c \ No newline at end of file diff --git a/device/src/legacy/module.h b/device/src/legacy/module.h deleted file mode 120000 index 904998ba..00000000 --- a/device/src/legacy/module.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/module.h \ No newline at end of file diff --git a/device/src/legacy/mouse_controller.c b/device/src/legacy/mouse_controller.c deleted file mode 120000 index 44d2a3e3..00000000 --- a/device/src/legacy/mouse_controller.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/mouse_controller.c \ No newline at end of file diff --git a/device/src/legacy/mouse_controller.h b/device/src/legacy/mouse_controller.h deleted file mode 120000 index f78e06ab..00000000 --- a/device/src/legacy/mouse_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/mouse_controller.h \ No newline at end of file diff --git a/device/src/legacy/mouse_keys.c b/device/src/legacy/mouse_keys.c deleted file mode 120000 index d469e303..00000000 --- a/device/src/legacy/mouse_keys.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/mouse_keys.c \ No newline at end of file diff --git a/device/src/legacy/mouse_keys.h b/device/src/legacy/mouse_keys.h deleted file mode 120000 index 6ce6a2ba..00000000 --- a/device/src/legacy/mouse_keys.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/mouse_keys.h \ No newline at end of file diff --git a/device/src/legacy/peripherals/led_driver.h b/device/src/legacy/peripherals/led_driver.h deleted file mode 120000 index bd82f18e..00000000 --- a/device/src/legacy/peripherals/led_driver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/peripherals/led_driver.h \ No newline at end of file diff --git a/device/src/legacy/peripherals/merge_sensor.c b/device/src/legacy/peripherals/merge_sensor.c deleted file mode 120000 index 307d1574..00000000 --- a/device/src/legacy/peripherals/merge_sensor.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/peripherals/merge_sensor.c \ No newline at end of file diff --git a/device/src/legacy/peripherals/merge_sensor.h b/device/src/legacy/peripherals/merge_sensor.h deleted file mode 120000 index ee59348a..00000000 --- a/device/src/legacy/peripherals/merge_sensor.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/peripherals/merge_sensor.h \ No newline at end of file diff --git a/device/src/legacy/peripherals/reset_button.c b/device/src/legacy/peripherals/reset_button.c deleted file mode 120000 index 9b11b027..00000000 --- a/device/src/legacy/peripherals/reset_button.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/peripherals/reset_button.c \ No newline at end of file diff --git a/device/src/legacy/peripherals/reset_button.h b/device/src/legacy/peripherals/reset_button.h deleted file mode 120000 index 1dc4091c..00000000 --- a/device/src/legacy/peripherals/reset_button.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/peripherals/reset_button.h \ No newline at end of file diff --git a/device/src/legacy/postponer.c b/device/src/legacy/postponer.c deleted file mode 120000 index 2cd8a657..00000000 --- a/device/src/legacy/postponer.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/postponer.c \ No newline at end of file diff --git a/device/src/legacy/postponer.h b/device/src/legacy/postponer.h deleted file mode 120000 index 6cee20cb..00000000 --- a/device/src/legacy/postponer.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/postponer.h \ No newline at end of file diff --git a/device/src/legacy/power_mode.c b/device/src/legacy/power_mode.c deleted file mode 120000 index 50912722..00000000 --- a/device/src/legacy/power_mode.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/power_mode.c \ No newline at end of file diff --git a/device/src/legacy/power_mode.h b/device/src/legacy/power_mode.h deleted file mode 120000 index c16be5d9..00000000 --- a/device/src/legacy/power_mode.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/power_mode.h \ No newline at end of file diff --git a/device/src/legacy/secondary_role_driver.c b/device/src/legacy/secondary_role_driver.c deleted file mode 120000 index 8224494e..00000000 --- a/device/src/legacy/secondary_role_driver.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/secondary_role_driver.c \ No newline at end of file diff --git a/device/src/legacy/secondary_role_driver.h b/device/src/legacy/secondary_role_driver.h deleted file mode 120000 index 7c0b4b0c..00000000 --- a/device/src/legacy/secondary_role_driver.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/secondary_role_driver.h \ No newline at end of file diff --git a/device/src/legacy/segment_display.c b/device/src/legacy/segment_display.c deleted file mode 120000 index 5aa96c1b..00000000 --- a/device/src/legacy/segment_display.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/segment_display.c \ No newline at end of file diff --git a/device/src/legacy/segment_display.h b/device/src/legacy/segment_display.h deleted file mode 120000 index aadd3c4c..00000000 --- a/device/src/legacy/segment_display.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/segment_display.h \ No newline at end of file diff --git a/device/src/legacy/slave_drivers/is31fl3xxx_driver.c b/device/src/legacy/slave_drivers/is31fl3xxx_driver.c deleted file mode 120000 index 142e5015..00000000 --- a/device/src/legacy/slave_drivers/is31fl3xxx_driver.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/slave_drivers/is31fl3xxx_driver.c \ No newline at end of file diff --git a/device/src/legacy/slave_drivers/is31fl3xxx_driver.h b/device/src/legacy/slave_drivers/is31fl3xxx_driver.h deleted file mode 120000 index a8695c54..00000000 --- a/device/src/legacy/slave_drivers/is31fl3xxx_driver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/slave_drivers/is31fl3xxx_driver.h \ No newline at end of file diff --git a/device/src/legacy/slave_drivers/touchpad_driver.c b/device/src/legacy/slave_drivers/touchpad_driver.c deleted file mode 120000 index c370498c..00000000 --- a/device/src/legacy/slave_drivers/touchpad_driver.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/slave_drivers/touchpad_driver.c \ No newline at end of file diff --git a/device/src/legacy/slave_drivers/touchpad_driver.h b/device/src/legacy/slave_drivers/touchpad_driver.h deleted file mode 120000 index 34d89302..00000000 --- a/device/src/legacy/slave_drivers/touchpad_driver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/slave_drivers/touchpad_driver.h \ No newline at end of file diff --git a/device/src/legacy/slave_drivers/uhk_module_driver.c b/device/src/legacy/slave_drivers/uhk_module_driver.c deleted file mode 120000 index 166cb876..00000000 --- a/device/src/legacy/slave_drivers/uhk_module_driver.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/slave_drivers/uhk_module_driver.c \ No newline at end of file diff --git a/device/src/legacy/slave_drivers/uhk_module_driver.h b/device/src/legacy/slave_drivers/uhk_module_driver.h deleted file mode 120000 index 99897622..00000000 --- a/device/src/legacy/slave_drivers/uhk_module_driver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/slave_drivers/uhk_module_driver.h \ No newline at end of file diff --git a/device/src/legacy/slave_scheduler.c b/device/src/legacy/slave_scheduler.c deleted file mode 120000 index 012395c2..00000000 --- a/device/src/legacy/slave_scheduler.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/slave_scheduler.c \ No newline at end of file diff --git a/device/src/legacy/slave_scheduler.h b/device/src/legacy/slave_scheduler.h deleted file mode 120000 index d5ae59be..00000000 --- a/device/src/legacy/slave_scheduler.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/slave_scheduler.h \ No newline at end of file diff --git a/device/src/legacy/slot.h b/device/src/legacy/slot.h deleted file mode 120000 index c3d3583e..00000000 --- a/device/src/legacy/slot.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/slot.h \ No newline at end of file diff --git a/device/src/legacy/storage.c b/device/src/legacy/storage.c deleted file mode 120000 index e803bfde..00000000 --- a/device/src/legacy/storage.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/storage.c \ No newline at end of file diff --git a/device/src/legacy/storage.h b/device/src/legacy/storage.h deleted file mode 120000 index 0e878e12..00000000 --- a/device/src/legacy/storage.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/storage.h \ No newline at end of file diff --git a/device/src/legacy/str_utils.c b/device/src/legacy/str_utils.c deleted file mode 120000 index 064f0b95..00000000 --- a/device/src/legacy/str_utils.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/str_utils.c \ No newline at end of file diff --git a/device/src/legacy/str_utils.h b/device/src/legacy/str_utils.h deleted file mode 120000 index c3f84110..00000000 --- a/device/src/legacy/str_utils.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/str_utils.h \ No newline at end of file diff --git a/device/src/legacy/stubs.c b/device/src/legacy/stubs.c deleted file mode 120000 index 6a20b7a4..00000000 --- a/device/src/legacy/stubs.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/stubs.c \ No newline at end of file diff --git a/device/src/legacy/stubs.h b/device/src/legacy/stubs.h deleted file mode 120000 index 631f203a..00000000 --- a/device/src/legacy/stubs.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/stubs.h \ No newline at end of file diff --git a/device/src/legacy/test_switches.c b/device/src/legacy/test_switches.c deleted file mode 120000 index 73ce4626..00000000 --- a/device/src/legacy/test_switches.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/test_switches.c \ No newline at end of file diff --git a/device/src/legacy/test_switches.h b/device/src/legacy/test_switches.h deleted file mode 120000 index f3bed02b..00000000 --- a/device/src/legacy/test_switches.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/test_switches.h \ No newline at end of file diff --git a/device/src/legacy/timer.c b/device/src/legacy/timer.c deleted file mode 120000 index 568d3b27..00000000 --- a/device/src/legacy/timer.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/timer.c \ No newline at end of file diff --git a/device/src/legacy/timer.h b/device/src/legacy/timer.h deleted file mode 120000 index a8f8b9dc..00000000 --- a/device/src/legacy/timer.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/timer.h \ No newline at end of file diff --git a/device/src/legacy/usb_api.h b/device/src/legacy/usb_api.h deleted file mode 120000 index 7b7715fa..00000000 --- a/device/src/legacy/usb_api.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_api.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_apply_config.c b/device/src/legacy/usb_commands/usb_command_apply_config.c deleted file mode 120000 index 783756a7..00000000 --- a/device/src/legacy/usb_commands/usb_command_apply_config.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_apply_config.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_apply_config.h b/device/src/legacy/usb_commands/usb_command_apply_config.h deleted file mode 120000 index 07ee5e33..00000000 --- a/device/src/legacy/usb_commands/usb_command_apply_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_apply_config.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_draw_oled.c b/device/src/legacy/usb_commands/usb_command_draw_oled.c deleted file mode 120000 index 33383383..00000000 --- a/device/src/legacy/usb_commands/usb_command_draw_oled.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_draw_oled.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_draw_oled.h b/device/src/legacy/usb_commands/usb_command_draw_oled.h deleted file mode 120000 index f1c15b43..00000000 --- a/device/src/legacy/usb_commands/usb_command_draw_oled.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_draw_oled.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_exec_macro_command.c b/device/src/legacy/usb_commands/usb_command_exec_macro_command.c deleted file mode 120000 index 487f2146..00000000 --- a/device/src/legacy/usb_commands/usb_command_exec_macro_command.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_exec_macro_command.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_exec_macro_command.h b/device/src/legacy/usb_commands/usb_command_exec_macro_command.h deleted file mode 120000 index e2316a36..00000000 --- a/device/src/legacy/usb_commands/usb_command_exec_macro_command.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_exec_macro_command.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_debug_buffer.c b/device/src/legacy/usb_commands/usb_command_get_debug_buffer.c deleted file mode 120000 index 31e1236a..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_debug_buffer.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_debug_buffer.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_debug_buffer.h b/device/src/legacy/usb_commands/usb_command_get_debug_buffer.h deleted file mode 120000 index a993ff99..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_debug_buffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_debug_buffer.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_device_property.c b/device/src/legacy/usb_commands/usb_command_get_device_property.c deleted file mode 120000 index 1f8cb536..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_device_property.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_device_property.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_device_property.h b/device/src/legacy/usb_commands/usb_command_get_device_property.h deleted file mode 120000 index b7539958..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_device_property.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_device_property.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_device_state.c b/device/src/legacy/usb_commands/usb_command_get_device_state.c deleted file mode 120000 index 94959037..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_device_state.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_device_state.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_device_state.h b/device/src/legacy/usb_commands/usb_command_get_device_state.h deleted file mode 120000 index 3da9110d..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_device_state.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_device_state.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_module_property.c b/device/src/legacy/usb_commands/usb_command_get_module_property.c deleted file mode 120000 index 9551110f..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_module_property.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_module_property.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_module_property.h b/device/src/legacy/usb_commands/usb_command_get_module_property.h deleted file mode 120000 index f4bc42d0..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_module_property.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_module_property.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_new_pairings.c b/device/src/legacy/usb_commands/usb_command_get_new_pairings.c deleted file mode 120000 index 6fa51561..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_new_pairings.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_new_pairings.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_new_pairings.h b/device/src/legacy/usb_commands/usb_command_get_new_pairings.h deleted file mode 120000 index f2611136..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_new_pairings.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_new_pairings.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_variable.c b/device/src/legacy/usb_commands/usb_command_get_variable.c deleted file mode 120000 index e5565115..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_variable.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_variable.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_get_variable.h b/device/src/legacy/usb_commands/usb_command_get_variable.h deleted file mode 120000 index 9a231548..00000000 --- a/device/src/legacy/usb_commands/usb_command_get_variable.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_get_variable.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_launch_storage_transfer.c b/device/src/legacy/usb_commands/usb_command_launch_storage_transfer.c deleted file mode 120000 index 1d463b5b..00000000 --- a/device/src/legacy/usb_commands/usb_command_launch_storage_transfer.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_launch_storage_transfer.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_launch_storage_transfer.h b/device/src/legacy/usb_commands/usb_command_launch_storage_transfer.h deleted file mode 120000 index ca2de206..00000000 --- a/device/src/legacy/usb_commands/usb_command_launch_storage_transfer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_launch_storage_transfer.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_pairing.c b/device/src/legacy/usb_commands/usb_command_pairing.c deleted file mode 120000 index 15aceaa2..00000000 --- a/device/src/legacy/usb_commands/usb_command_pairing.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_pairing.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_pairing.h b/device/src/legacy/usb_commands/usb_command_pairing.h deleted file mode 120000 index d87599a7..00000000 --- a/device/src/legacy/usb_commands/usb_command_pairing.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_pairing.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_read_config.c b/device/src/legacy/usb_commands/usb_command_read_config.c deleted file mode 120000 index 3395bdba..00000000 --- a/device/src/legacy/usb_commands/usb_command_read_config.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_read_config.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_read_config.h b/device/src/legacy/usb_commands/usb_command_read_config.h deleted file mode 120000 index e4149de3..00000000 --- a/device/src/legacy/usb_commands/usb_command_read_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_read_config.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_reenumerate.c b/device/src/legacy/usb_commands/usb_command_reenumerate.c deleted file mode 120000 index 36935f45..00000000 --- a/device/src/legacy/usb_commands/usb_command_reenumerate.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_reenumerate.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_reenumerate.h b/device/src/legacy/usb_commands/usb_command_reenumerate.h deleted file mode 120000 index 79cb2b79..00000000 --- a/device/src/legacy/usb_commands/usb_command_reenumerate.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_reenumerate.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_set_variable.c b/device/src/legacy/usb_commands/usb_command_set_variable.c deleted file mode 120000 index 35afb5da..00000000 --- a/device/src/legacy/usb_commands/usb_command_set_variable.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_set_variable.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_set_variable.h b/device/src/legacy/usb_commands/usb_command_set_variable.h deleted file mode 120000 index 24ebbbc8..00000000 --- a/device/src/legacy/usb_commands/usb_command_set_variable.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_set_variable.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_switch_keymap.c b/device/src/legacy/usb_commands/usb_command_switch_keymap.c deleted file mode 120000 index c5b01a81..00000000 --- a/device/src/legacy/usb_commands/usb_command_switch_keymap.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_switch_keymap.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_switch_keymap.h b/device/src/legacy/usb_commands/usb_command_switch_keymap.h deleted file mode 120000 index 48f75932..00000000 --- a/device/src/legacy/usb_commands/usb_command_switch_keymap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_switch_keymap.h \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_write_config.c b/device/src/legacy/usb_commands/usb_command_write_config.c deleted file mode 120000 index d21fda65..00000000 --- a/device/src/legacy/usb_commands/usb_command_write_config.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_write_config.c \ No newline at end of file diff --git a/device/src/legacy/usb_commands/usb_command_write_config.h b/device/src/legacy/usb_commands/usb_command_write_config.h deleted file mode 120000 index 0da04dc1..00000000 --- a/device/src/legacy/usb_commands/usb_command_write_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_commands/usb_command_write_config.h \ No newline at end of file diff --git a/device/src/legacy/usb_composite_device.h b/device/src/legacy/usb_composite_device.h deleted file mode 120000 index 84bdb4b8..00000000 --- a/device/src/legacy/usb_composite_device.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_composite_device.h \ No newline at end of file diff --git a/device/src/legacy/usb_descriptors/usb_descriptor_basic_keyboard_report.h b/device/src/legacy/usb_descriptors/usb_descriptor_basic_keyboard_report.h deleted file mode 120000 index 0cdb7334..00000000 --- a/device/src/legacy/usb_descriptors/usb_descriptor_basic_keyboard_report.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_descriptors/usb_descriptor_basic_keyboard_report.h \ No newline at end of file diff --git a/device/src/legacy/usb_descriptors/usb_descriptor_configuration.h b/device/src/legacy/usb_descriptors/usb_descriptor_configuration.h deleted file mode 120000 index cc99c778..00000000 --- a/device/src/legacy/usb_descriptors/usb_descriptor_configuration.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_descriptors/usb_descriptor_configuration.h \ No newline at end of file diff --git a/device/src/legacy/usb_descriptors/usb_descriptor_media_keyboard_report.h b/device/src/legacy/usb_descriptors/usb_descriptor_media_keyboard_report.h deleted file mode 120000 index 2d344e12..00000000 --- a/device/src/legacy/usb_descriptors/usb_descriptor_media_keyboard_report.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_descriptors/usb_descriptor_media_keyboard_report.h \ No newline at end of file diff --git a/device/src/legacy/usb_descriptors/usb_descriptor_system_keyboard_report.h b/device/src/legacy/usb_descriptors/usb_descriptor_system_keyboard_report.h deleted file mode 120000 index ef95c0b8..00000000 --- a/device/src/legacy/usb_descriptors/usb_descriptor_system_keyboard_report.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_descriptors/usb_descriptor_system_keyboard_report.h \ No newline at end of file diff --git a/device/src/legacy/usb_device_config.h b/device/src/legacy/usb_device_config.h deleted file mode 120000 index 9b3840b6..00000000 --- a/device/src/legacy/usb_device_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_device_config.h \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.c b/device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.c deleted file mode 120000 index 2d229ba1..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_basic_keyboard.c \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.h b/device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.h deleted file mode 120000 index 1e3dc942..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_basic_keyboard.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_basic_keyboard.h \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_gamepad.c b/device/src/legacy/usb_interfaces/usb_interface_gamepad.c deleted file mode 120000 index c8ab0475..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_gamepad.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_gamepad.c \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_gamepad.h b/device/src/legacy/usb_interfaces/usb_interface_gamepad.h deleted file mode 120000 index c966b7ca..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_gamepad.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_gamepad.h \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_generic_hid.c b/device/src/legacy/usb_interfaces/usb_interface_generic_hid.c deleted file mode 120000 index 5b3188c5..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_generic_hid.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_generic_hid.c \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_generic_hid.h b/device/src/legacy/usb_interfaces/usb_interface_generic_hid.h deleted file mode 120000 index cd0da029..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_generic_hid.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_generic_hid.h \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_media_keyboard.c b/device/src/legacy/usb_interfaces/usb_interface_media_keyboard.c deleted file mode 120000 index d11d00b3..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_media_keyboard.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_media_keyboard.c \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_media_keyboard.h b/device/src/legacy/usb_interfaces/usb_interface_media_keyboard.h deleted file mode 120000 index 7eabcce2..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_media_keyboard.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_media_keyboard.h \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_mouse.c b/device/src/legacy/usb_interfaces/usb_interface_mouse.c deleted file mode 120000 index 2c88cbe3..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_mouse.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_mouse.c \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_mouse.h b/device/src/legacy/usb_interfaces/usb_interface_mouse.h deleted file mode 120000 index 1b75c27c..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_mouse.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_mouse.h \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_system_keyboard.c b/device/src/legacy/usb_interfaces/usb_interface_system_keyboard.c deleted file mode 120000 index 6f410eef..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_system_keyboard.c +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_system_keyboard.c \ No newline at end of file diff --git a/device/src/legacy/usb_interfaces/usb_interface_system_keyboard.h b/device/src/legacy/usb_interfaces/usb_interface_system_keyboard.h deleted file mode 120000 index 0704407e..00000000 --- a/device/src/legacy/usb_interfaces/usb_interface_system_keyboard.h +++ /dev/null @@ -1 +0,0 @@ -../../../../right/src/usb_interfaces/usb_interface_system_keyboard.h \ No newline at end of file diff --git a/device/src/legacy/usb_protocol_handler.c b/device/src/legacy/usb_protocol_handler.c deleted file mode 120000 index 74022275..00000000 --- a/device/src/legacy/usb_protocol_handler.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_protocol_handler.c \ No newline at end of file diff --git a/device/src/legacy/usb_protocol_handler.h b/device/src/legacy/usb_protocol_handler.h deleted file mode 120000 index 54c87023..00000000 --- a/device/src/legacy/usb_protocol_handler.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_protocol_handler.h \ No newline at end of file diff --git a/device/src/legacy/usb_report_updater.c b/device/src/legacy/usb_report_updater.c deleted file mode 120000 index 5f398dd9..00000000 --- a/device/src/legacy/usb_report_updater.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_report_updater.c \ No newline at end of file diff --git a/device/src/legacy/usb_report_updater.h b/device/src/legacy/usb_report_updater.h deleted file mode 120000 index 9a5e6bfd..00000000 --- a/device/src/legacy/usb_report_updater.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/usb_report_updater.h \ No newline at end of file diff --git a/device/src/legacy/user_logic.c b/device/src/legacy/user_logic.c deleted file mode 120000 index eac1ed20..00000000 --- a/device/src/legacy/user_logic.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/user_logic.c \ No newline at end of file diff --git a/device/src/legacy/user_logic.h b/device/src/legacy/user_logic.h deleted file mode 120000 index 135248d0..00000000 --- a/device/src/legacy/user_logic.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/user_logic.h \ No newline at end of file diff --git a/device/src/legacy/utils.c b/device/src/legacy/utils.c deleted file mode 120000 index da84c19b..00000000 --- a/device/src/legacy/utils.c +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/utils.c \ No newline at end of file diff --git a/device/src/legacy/utils.h b/device/src/legacy/utils.h deleted file mode 120000 index 30a01805..00000000 --- a/device/src/legacy/utils.h +++ /dev/null @@ -1 +0,0 @@ -../../../right/src/utils.h \ No newline at end of file diff --git a/device/src/logger.c b/device/src/logger.c index 01dc4d22..57305a83 100644 --- a/device/src/logger.c +++ b/device/src/logger.c @@ -8,7 +8,7 @@ #include "nus_server.h" #include "device.h" #include "messenger.h" -#include "legacy/macros/status_buffer.h" +#include "macros/status_buffer.h" #include "zephyr/device.h" #ifdef DEVICE_HAS_OLED diff --git a/device/src/main.c b/device/src/main.c index 78784be7..3e5650e0 100644 --- a/device/src/main.c +++ b/device/src/main.c @@ -3,8 +3,8 @@ #include "nus_client.h" #include "nus_server.h" #include "bt_manager.h" -#include "legacy/config_parser/config_globals.h" -#include "legacy/ledmap.h" +#include "config_parser/config_globals.h" +#include "ledmap.h" #include "shared/attributes.h" #include "zephyr/kernel.h" #include "zephyr/storage/flash_map.h" @@ -26,12 +26,12 @@ #include "macros/shortcut_parser.h" #include "macros/keyid_parser.h" #include "macros/core.h" -#include "legacy/timer.h" -#include "legacy/user_logic.h" -#include "legacy/config_manager.h" +#include "timer.h" +#include "user_logic.h" +#include "config_manager.h" #include "messenger.h" -#include "legacy/led_manager.h" -#include "legacy/debug.h" +#include "led_manager.h" +#include "debug.h" #include "state_sync.h" #include "keyboard/charger.h" #include @@ -39,7 +39,7 @@ #include "debug_eventloop_timing.h" #include #include "dongle_leds.h" -#include "legacy/usb_protocol_handler.h" +#include "usb_protocol_handler.h" k_tid_t Main_ThreadId = 0; diff --git a/device/src/messenger.c b/device/src/messenger.c index 9727e24c..c84d544a 100644 --- a/device/src/messenger.c +++ b/device/src/messenger.c @@ -11,12 +11,12 @@ #include "usb/usb_compatibility.h" #include "nus_server.h" #include "nus_client.h" -#include "legacy/module.h" -#include "legacy/key_states.h" +#include "module.h" +#include "key_states.h" #include "shared/attributes.h" -#include "legacy/str_utils.h" -#include "legacy/event_scheduler.h" -#include "legacy/slave_drivers/uhk_module_driver.h" +#include "str_utils.h" +#include "event_scheduler.h" +#include "slave_drivers/uhk_module_driver.h" #if DEVICE_IS_KEYBOARD #include "keyboard/uart.h" diff --git a/device/src/nus_client.c b/device/src/nus_client.c index 7f438928..98d42225 100644 --- a/device/src/nus_client.c +++ b/device/src/nus_client.c @@ -4,21 +4,21 @@ #include "bt_scan.h" #include "bt_conn.h" #include "device.h" -#include "legacy/usb_interfaces/usb_interface_basic_keyboard.h" -#include "legacy/usb_interfaces/usb_interface_mouse.h" +#include "usb_interfaces/usb_interface_basic_keyboard.h" +#include "usb_interfaces/usb_interface_mouse.h" #include "messenger.h" #include "nus_client.h" #include "bool_array_converter.h" -#include "legacy/slot.h" +#include "slot.h" #include "shared/bool_array_converter.h" -#include "legacy/module.h" -#include "legacy/key_states.h" +#include "module.h" +#include "key_states.h" #include "keyboard/oled/widgets/console_widget.h" #include "state_sync.h" #include "usb/usb_compatibility.h" #include "link_protocol.h" #include "messenger_queue.h" -#include "legacy/debug.h" +#include "debug.h" #include static struct bt_nus_client nus_client; diff --git a/device/src/nus_server.c b/device/src/nus_server.c index 19f9485c..ec45f292 100644 --- a/device/src/nus_server.c +++ b/device/src/nus_server.c @@ -6,7 +6,7 @@ #include "messenger.h" #include "device.h" #include "messenger_queue.h" -#include "legacy/debug.h" +#include "debug.h" #include "zephyr/bluetooth/addr.h" #define NUS_SLOTS 2 diff --git a/device/src/shared/atomicity.h b/device/src/shared/atomicity.h deleted file mode 120000 index 6e6f4c11..00000000 --- a/device/src/shared/atomicity.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/atomicity.h \ No newline at end of file diff --git a/device/src/shared/attributes.h b/device/src/shared/attributes.h deleted file mode 120000 index df86e53a..00000000 --- a/device/src/shared/attributes.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/attributes.h \ No newline at end of file diff --git a/device/src/shared/bool_array_converter.c b/device/src/shared/bool_array_converter.c deleted file mode 120000 index 77f5ca0f..00000000 --- a/device/src/shared/bool_array_converter.c +++ /dev/null @@ -1 +0,0 @@ -../../../shared/bool_array_converter.c \ No newline at end of file diff --git a/device/src/shared/bool_array_converter.h b/device/src/shared/bool_array_converter.h deleted file mode 120000 index 7e8aabd1..00000000 --- a/device/src/shared/bool_array_converter.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/bool_array_converter.h \ No newline at end of file diff --git a/device/src/shared/buffer.c b/device/src/shared/buffer.c deleted file mode 120000 index 87b66f8a..00000000 --- a/device/src/shared/buffer.c +++ /dev/null @@ -1 +0,0 @@ -../../../shared/buffer.c \ No newline at end of file diff --git a/device/src/shared/buffer.h b/device/src/shared/buffer.h deleted file mode 120000 index 68c7f588..00000000 --- a/device/src/shared/buffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/buffer.h \ No newline at end of file diff --git a/device/src/shared/crc16.c b/device/src/shared/crc16.c deleted file mode 120000 index b4ddbf8d..00000000 --- a/device/src/shared/crc16.c +++ /dev/null @@ -1 +0,0 @@ -../../../shared/crc16.c \ No newline at end of file diff --git a/device/src/shared/crc16.h b/device/src/shared/crc16.h deleted file mode 120000 index a73d7cac..00000000 --- a/device/src/shared/crc16.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/crc16.h \ No newline at end of file diff --git a/device/src/shared/fallback_versions.c b/device/src/shared/fallback_versions.c deleted file mode 120000 index d4f54d7f..00000000 --- a/device/src/shared/fallback_versions.c +++ /dev/null @@ -1 +0,0 @@ -../../../shared/fallback_versions.c \ No newline at end of file diff --git a/device/src/shared/i2c_addresses.h b/device/src/shared/i2c_addresses.h deleted file mode 120000 index 3c544991..00000000 --- a/device/src/shared/i2c_addresses.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/i2c_addresses.h \ No newline at end of file diff --git a/device/src/shared/key_matrix.c b/device/src/shared/key_matrix.c deleted file mode 120000 index 966921f3..00000000 --- a/device/src/shared/key_matrix.c +++ /dev/null @@ -1 +0,0 @@ -../../../shared/key_matrix.c \ No newline at end of file diff --git a/device/src/shared/key_matrix.h b/device/src/shared/key_matrix.h deleted file mode 120000 index 1fd7e18d..00000000 --- a/device/src/shared/key_matrix.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/key_matrix.h \ No newline at end of file diff --git a/device/src/shared/slave_protocol.c b/device/src/shared/slave_protocol.c deleted file mode 120000 index 9f808ac9..00000000 --- a/device/src/shared/slave_protocol.c +++ /dev/null @@ -1 +0,0 @@ -../../../shared/slave_protocol.c \ No newline at end of file diff --git a/device/src/shared/slave_protocol.h b/device/src/shared/slave_protocol.h deleted file mode 120000 index 0ed1b578..00000000 --- a/device/src/shared/slave_protocol.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/slave_protocol.h \ No newline at end of file diff --git a/device/src/shared/versioning.h b/device/src/shared/versioning.h deleted file mode 120000 index 7a1d374f..00000000 --- a/device/src/shared/versioning.h +++ /dev/null @@ -1 +0,0 @@ -../../../shared/versioning.h \ No newline at end of file diff --git a/device/src/shell.c b/device/src/shell.c index dc5b5904..b9c94baa 100644 --- a/device/src/shell.c +++ b/device/src/shell.c @@ -10,8 +10,8 @@ #include #include "bt_conn.h" #include "keyboard/charger.h" -#include "legacy/ledmap.h" -#include "legacy/event_scheduler.h" +#include "ledmap.h" +#include "event_scheduler.h" shell_t Shell = { .keyLog = 0, diff --git a/device/src/state_sync.c b/device/src/state_sync.c index bac8bf47..a6f41caa 100644 --- a/device/src/state_sync.c +++ b/device/src/state_sync.c @@ -4,25 +4,25 @@ #include "event_scheduler.h" #include "keyboard/charger.h" #include "keyboard/oled/widgets/widgets.h" -#include "legacy/config_manager.h" -#include "legacy/config_parser/config_globals.h" -#include "legacy/debug.h" -#include "legacy/event_scheduler.h" -#include "legacy/keymap.h" -#include "legacy/led_manager.h" -#include "legacy/ledmap.h" -#include "legacy/module.h" -#include "legacy/slave_drivers/uhk_module_driver.h" -#include "legacy/slot.h" -#include "legacy/str_utils.h" -#include "legacy/stubs.h" -#include "legacy/utils.h" +#include "config_manager.h" +#include "config_parser/config_globals.h" +#include "debug.h" +#include "event_scheduler.h" +#include "keymap.h" +#include "led_manager.h" +#include "ledmap.h" +#include "module.h" +#include "slave_drivers/uhk_module_driver.h" +#include "slot.h" +#include "str_utils.h" +#include "stubs.h" +#include "utils.h" #include "messenger.h" #include "state_sync.h" #include "usb/usb_compatibility.h" #include #include -#include "legacy/peripherals/merge_sensor.h" +#include "peripherals/merge_sensor.h" #include "power_mode.h" #define STATE_SYNC_SEND_DELAY 2 diff --git a/device/src/state_sync.h b/device/src/state_sync.h index f38554df..a332e581 100644 --- a/device/src/state_sync.h +++ b/device/src/state_sync.h @@ -5,12 +5,12 @@ #include #include - #include "legacy/layer_switcher.h" - #include "legacy/key_action.h" - #include "legacy/module.h" + #include "layer_switcher.h" + #include "key_action.h" + #include "module.h" #include "keyboard/charger.h" #include "shared/attributes.h" - #include "legacy/slave_drivers/uhk_module_driver.h" + #include "slave_drivers/uhk_module_driver.h" #include "versioning.h" // Macros: diff --git a/device/src/usb/command_app.hpp b/device/src/usb/command_app.hpp index d9099b85..a31bfbcc 100644 --- a/device/src/usb/command_app.hpp +++ b/device/src/usb/command_app.hpp @@ -6,7 +6,7 @@ #include "hid/rdf/descriptor.hpp" #include "hid/report_protocol.hpp" #include "report_ids.h" -#include "../device.h" +#include "device.h" namespace hid::page { enum class ugl : uint8_t; diff --git a/device/src/usb/usb.cpp b/device/src/usb/usb.cpp index 22fe34cc..522146f6 100644 --- a/device/src/usb/usb.cpp +++ b/device/src/usb/usb.cpp @@ -4,9 +4,9 @@ extern "C" { #include "key_states.h" #include "keyboard/charger.h" #include "keyboard/key_scanner.h" -#include "legacy/power_mode.h" -#include "legacy/timer.h" -#include "legacy/user_logic.h" +#include "power_mode.h" +#include "timer.h" +#include "user_logic.h" #include "logger.h" #include #include diff --git a/device/src/usb/usb_compatibility.cpp b/device/src/usb/usb_compatibility.cpp index ca1faa94..02f0016c 100644 --- a/device/src/usb/usb_compatibility.cpp +++ b/device/src/usb/usb_compatibility.cpp @@ -1,10 +1,10 @@ extern "C" { #include "usb_compatibility.h" #include "bt_conn.h" -#include "legacy/debug.h" -#include "legacy/event_scheduler.h" -#include "legacy/key_states.h" -#include "legacy/macro_events.h" +#include "debug.h" +#include "event_scheduler.h" +#include "key_states.h" +#include "macro_events.h" #include "link_protocol.h" #include "messenger.h" #include "nus_server.h" diff --git a/right/src/CMakeLists.txt b/right/src/CMakeLists.txt new file mode 100644 index 00000000..785cb8d6 --- /dev/null +++ b/right/src/CMakeLists.txt @@ -0,0 +1,50 @@ +target_include_directories(${PROJECT_NAME} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/arduino_hid +) + +add_subdirectory(config_parser) +add_subdirectory(layouts) +add_subdirectory(macros) +add_subdirectory(peripherals) +add_subdirectory(slave_drivers) +add_subdirectory(usb_commands) +add_subdirectory(usb_interfaces) + +target_sources(${PROJECT_NAME} PRIVATE + caret_config.c + config_manager.c + debug.c + eeprom.c + event_scheduler.c + host_connection.c + i2c.c + i2c_error_logger.c + key_states.c + keymap.c + layer.c + layer_stack.c + layer_switcher.c + led_display.c + led_manager.c + ledmap.c + macro_events.c + macro_recorder.c + mouse_controller.c + mouse_keys.c + module.c + postponer.c + power_mode.c + secondary_role_driver.c + segment_display.c + slave_scheduler.c + storage.c + str_utils.c + stubs.c + test_switches.c + timer.c + usb_protocol_handler.c + usb_report_updater.c + user_logic.c + utils.c +) diff --git a/right/src/buspal/bootloader_common.h b/right/src/buspal/bootloader_common.h index 30932841..6436f158 100644 --- a/right/src/buspal/bootloader_common.h +++ b/right/src/buspal/bootloader_common.h @@ -5,7 +5,6 @@ #include #include #include -#include "bootloader_common.h" #include "fsl_common.h" //////////////////////////////////////////////////////////////////////////////// diff --git a/right/src/config_parser/CMakeLists.txt b/right/src/config_parser/CMakeLists.txt new file mode 100644 index 00000000..0da4b876 --- /dev/null +++ b/right/src/config_parser/CMakeLists.txt @@ -0,0 +1,10 @@ +target_sources(${PROJECT_NAME} PRIVATE + basic_types.c + config_globals.c + error_reporting.c + parse_config.c + parse_host_connection.c + parse_keymap.c + parse_macro.c + parse_module_config.c +) diff --git a/right/src/config_parser/basic_types.h b/right/src/config_parser/basic_types.h index dd44b7e1..c4bfb746 100644 --- a/right/src/config_parser/basic_types.h +++ b/right/src/config_parser/basic_types.h @@ -5,9 +5,6 @@ #include #include -#ifndef __ZEPHYR__ - #include "fsl_common.h" -#endif // Typedefs: diff --git a/right/src/layouts/CMakeLists.txt b/right/src/layouts/CMakeLists.txt new file mode 100644 index 00000000..777c9dec --- /dev/null +++ b/right/src/layouts/CMakeLists.txt @@ -0,0 +1,5 @@ +target_sources(${PROJECT_NAME} PRIVATE + key_layout_60_to_universal.c + key_layout_80_to_universal.c + key_layout.c +) diff --git a/right/src/macros/CMakeLists.txt b/right/src/macros/CMakeLists.txt new file mode 100644 index 00000000..ab8f58a3 --- /dev/null +++ b/right/src/macros/CMakeLists.txt @@ -0,0 +1,13 @@ +target_sources(${PROJECT_NAME} PRIVATE + commands.c + core.c + debug_commands.c + key_timing.c + keyid_parser.c + scancode_commands.c + set_command.c + shortcut_parser.c + status_buffer.c + string_reader.c + vars.c +) diff --git a/right/src/peripherals/CMakeLists.txt b/right/src/peripherals/CMakeLists.txt new file mode 100644 index 00000000..2840cfa2 --- /dev/null +++ b/right/src/peripherals/CMakeLists.txt @@ -0,0 +1,7 @@ +target_sources(${PROJECT_NAME} PRIVATE + #adc.c + #led_driver.c + merge_sensor.c + reset_button.c + #test_led.c +) diff --git a/right/src/slave_drivers/CMakeLists.txt b/right/src/slave_drivers/CMakeLists.txt new file mode 100644 index 00000000..ca9d464a --- /dev/null +++ b/right/src/slave_drivers/CMakeLists.txt @@ -0,0 +1,6 @@ +target_sources(${PROJECT_NAME} PRIVATE + is31fl3xxx_driver.c + #kboot_driver.c + touchpad_driver.c + uhk_module_driver.c +) diff --git a/right/src/usb_api.h b/right/src/usb_api.h index 6f09f24d..25a174de 100644 --- a/right/src/usb_api.h +++ b/right/src/usb_api.h @@ -86,6 +86,33 @@ #define HID_RI_COLLECTION_APPLICATION 0x01 #define HID_RI_COLLECTION_LOGICAL 0x02 +#ifdef __ZEPHYR__ + typedef enum _usb_status + { + kStatus_USB_Success = 0x00U, /*!< Success */ + kStatus_USB_Error, /*!< Failed */ + + kStatus_USB_Busy, /*!< Busy */ + kStatus_USB_InvalidHandle, /*!< Invalid handle */ + kStatus_USB_InvalidParameter, /*!< Invalid parameter */ + kStatus_USB_InvalidRequest, /*!< Invalid request */ + kStatus_USB_ControllerNotFound, /*!< Controller cannot be found */ + kStatus_USB_InvalidControllerInterface, /*!< Invalid controller interface */ + + kStatus_USB_NotSupported, /*!< Configuration is not supported */ + kStatus_USB_Retry, /*!< Enumeration get configuration retry */ + kStatus_USB_TransferStall, /*!< Transfer stalled */ + kStatus_USB_TransferFailed, /*!< Transfer failed */ + kStatus_USB_AllocFail, /*!< Allocation failed */ + kStatus_USB_LackSwapBuffer, /*!< Insufficient swap buffer for KHCI */ + kStatus_USB_TransferCancel, /*!< The transfer cancelled */ + kStatus_USB_BandwidthFail, /*!< Allocate bandwidth failed */ + kStatus_USB_MSDStatusFail, /*!< For MSD, the CSW status means fail */ + } usb_status_t; + + typedef uint8_t usb_hid_protocol_t; +#endif + // Functions: static inline bool test_bit(unsigned nr, const uint8_t *addr) { diff --git a/right/src/usb_commands/CMakeLists.txt b/right/src/usb_commands/CMakeLists.txt new file mode 100644 index 00000000..f545a021 --- /dev/null +++ b/right/src/usb_commands/CMakeLists.txt @@ -0,0 +1,24 @@ +target_sources(${PROJECT_NAME} PRIVATE + usb_command_apply_config.c + usb_command_draw_oled.c + usb_command_exec_macro_command.c + #usb_command_get_adc_value.c + usb_command_get_debug_buffer.c + usb_command_get_device_property.c + usb_command_get_device_state.c + usb_command_get_module_property.c + usb_command_get_new_pairings.c + #usb_command_get_slave_i2c_errors.c + usb_command_get_variable.c + #usb_command_jump_to_module_bootloader.c + usb_command_launch_storage_transfer.c + usb_command_pairing.c + usb_command_read_config.c + usb_command_reenumerate.c + #usb_command_send_kboot_command_to_module.c + #usb_command_set_i2c_baudrate.c + #usb_command_set_led_pwm_brightness.c + usb_command_set_variable.c + usb_command_switch_keymap.c + usb_command_write_config.c +) diff --git a/right/src/usb_commands/usb_command_apply_config.c b/right/src/usb_commands/usb_command_apply_config.c index 03055fcb..06094790 100644 --- a/right/src/usb_commands/usb_command_apply_config.c +++ b/right/src/usb_commands/usb_command_apply_config.c @@ -15,7 +15,7 @@ #ifdef __ZEPHYR__ #include "state_sync.h" -#include "legacy/event_scheduler.h" +#include "event_scheduler.h" #include "main.h" #endif diff --git a/right/src/usb_device_config.h b/right/src/usb_device_config.h index a79f908b..62822884 100644 --- a/right/src/usb_device_config.h +++ b/right/src/usb_device_config.h @@ -1,9 +1,12 @@ #ifndef __USB_DEVICE_CONFIG_H__ #define __USB_DEVICE_CONFIG_H__ +#ifndef __ZEPHYR__ // KHCI instance count #define USB_DEVICE_CONFIG_KHCI 1 +#include "fsl_common.h" +#endif #include "usb_interfaces/usb_interface_basic_keyboard.h" #include "usb_interfaces/usb_interface_mouse.h" #include "usb_interfaces/usb_interface_media_keyboard.h" diff --git a/right/src/usb_interfaces/CMakeLists.txt b/right/src/usb_interfaces/CMakeLists.txt new file mode 100644 index 00000000..148ebfec --- /dev/null +++ b/right/src/usb_interfaces/CMakeLists.txt @@ -0,0 +1,8 @@ +target_sources(${PROJECT_NAME} PRIVATE + usb_interface_basic_keyboard.c + usb_interface_gamepad.c + #usb_interface_generic_hid.c + usb_interface_media_keyboard.c + usb_interface_mouse.c + usb_interface_system_keyboard.c +) diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.h b/right/src/usb_interfaces/usb_interface_basic_keyboard.h index 57c20e16..dac5307c 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.h +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.h @@ -6,12 +6,6 @@ #include #include -#ifndef __ZEPHYR__ - #include "fsl_common.h" -#else - #include "keyboard/legacy_ports.h" -#endif - #include "attributes.h" #include "usb_api.h" #include "usb_descriptors/usb_descriptor_basic_keyboard_report.h" diff --git a/right/src/usb_interfaces/usb_interface_media_keyboard.h b/right/src/usb_interfaces/usb_interface_media_keyboard.h index 97d5387b..9c955cf6 100644 --- a/right/src/usb_interfaces/usb_interface_media_keyboard.h +++ b/right/src/usb_interfaces/usb_interface_media_keyboard.h @@ -3,12 +3,6 @@ // Includes: -#ifndef __ZEPHYR__ - #include "fsl_common.h" -#else - #include "keyboard/legacy_ports.h" -#endif - #include "usb_descriptors/usb_descriptor_media_keyboard_report.h" #include "usb_api.h" diff --git a/right/src/usb_interfaces/usb_interface_mouse.h b/right/src/usb_interfaces/usb_interface_mouse.h index 2403cc0d..fd2fe0b8 100644 --- a/right/src/usb_interfaces/usb_interface_mouse.h +++ b/right/src/usb_interfaces/usb_interface_mouse.h @@ -6,10 +6,6 @@ #include "usb_api.h" // #include "usb_descriptors/usb_descriptor_device.h" -#ifdef __ZEPHYR__ - #include "keyboard/legacy_ports.h" -#endif - // Macros: #define USB_MOUSE_INTERFACE_INDEX 1 diff --git a/right/src/usb_interfaces/usb_interface_system_keyboard.h b/right/src/usb_interfaces/usb_interface_system_keyboard.h index af5b906d..40e5ec7c 100644 --- a/right/src/usb_interfaces/usb_interface_system_keyboard.h +++ b/right/src/usb_interfaces/usb_interface_system_keyboard.h @@ -3,11 +3,6 @@ // Includes: -#ifndef __ZEPHYR__ - #include "fsl_common.h" -#else - #include "keyboard/legacy_ports.h" -#endif #include "usb_descriptors/usb_descriptor_system_keyboard_report.h" #include "attributes.h" #include "usb_api.h" diff --git a/shared/CMakeLists.txt b/shared/CMakeLists.txt new file mode 100644 index 00000000..cf2d301a --- /dev/null +++ b/shared/CMakeLists.txt @@ -0,0 +1,20 @@ +target_include_directories(${PROJECT_NAME} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} + # this really needs to be changed when time and restructuring permits + ${PROJECT_SOURCE_DIR} +) + +target_sources(${PROJECT_NAME}-shared PRIVATE + bool_array_converter.c + buffer.c + crc16.c + fallback_versions.c + key_matrix.c + slave_protocol.c +) + +# add the versions.c source file conditionally +if(NOT NOVERSIONS) + target_sources(${PROJECT_NAME} PRIVATE versions.c) + set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/versions.c PROPERTIES GENERATED TRUE) +endif() diff --git a/zephyr/module.yml b/zephyr/module.yml index f205a997..8a8055aa 100644 --- a/zephyr/module.yml +++ b/zephyr/module.yml @@ -1,6 +1,8 @@ # SPDX-License-Identifier: Apache-2.0 build: + # sharing common uhk source code between zephyr and legacy + cmake: . settings: # hardware model 2 doesn't work with out-of-tree board roots without this: board_root: . From b349a615153356b4ec18e9dde0a5c3acb3bd3d1b Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Wed, 4 Dec 2024 11:39:41 +0100 Subject: [PATCH 28/33] convert version generating scripts to python, generate automatically during build --- scripts/common.py | 17 ++++++++ scripts/generate_versions.py | 11 +++++ scripts/generate_versions_utils.py | 64 ++++++++++++++++++++++++++++++ shared/CMakeLists.txt | 24 +++++++---- shared/fallback_versions.c | 30 -------------- 5 files changed, 108 insertions(+), 38 deletions(-) create mode 100644 scripts/common.py create mode 100644 scripts/generate_versions.py create mode 100644 scripts/generate_versions_utils.py delete mode 100644 shared/fallback_versions.c diff --git a/scripts/common.py b/scripts/common.py new file mode 100644 index 00000000..43f0a0fb --- /dev/null +++ b/scripts/common.py @@ -0,0 +1,17 @@ +import subprocess +import os +import json + +def exec(cmd): + return subprocess.check_output(cmd, shell=True).decode('utf-8').strip() + +def get_git_info(): + return { + 'repo': exec('git remote get-url origin').replace('https://github.com/', '').replace('git@github.com:', '').replace('.git', ''), + 'tag': exec('git tag --points-at HEAD') or exec('git rev-parse --short HEAD'), + 'root': exec('git rev-parse --show-toplevel') + } + +def read_package_json(): + with open(os.path.join(os.path.dirname(__file__), 'package.json'), 'r') as f: + return json.load(f) diff --git a/scripts/generate_versions.py b/scripts/generate_versions.py new file mode 100644 index 00000000..3f1c42da --- /dev/null +++ b/scripts/generate_versions.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 +import sys +from common import get_git_info, read_package_json +from generate_versions_utils import generate_versions + +if __name__ == "__main__": + use_real_data = '--withMd5Sums' in sys.argv + use_zero_versions = '--withZeroVersions' in sys.argv + package_json = read_package_json() + git_info = get_git_info() + generate_versions(package_json, git_info, use_real_data, use_zero_versions) diff --git a/scripts/generate_versions_utils.py b/scripts/generate_versions_utils.py new file mode 100644 index 00000000..60a4cd2d --- /dev/null +++ b/scripts/generate_versions_utils.py @@ -0,0 +1,64 @@ +import hashlib +import os +import json +import shutil + +ZERO_MD5 = '00000000000000000000000000000000' + +version_property_prefixes = ['firmware', 'deviceProtocol', 'moduleProtocol', 'userConfig', 'hardwareConfig', 'smartMacros'] +patch_versions = ['Major', 'Minor', 'Patch'] + +def generate_versions(package_json, git_info, use_real_shas, use_zero_versions): + package_json = json.loads(json.dumps(package_json)) # Deep copy + + if use_zero_versions: + git_info = { + 'repo': '', + 'tag': '' + } + + version_variables = '\n'.join([ + f"const version_t {prefix}Version = {{ {', '.join(['0' if use_zero_versions else package_json[f'{prefix}Version'].split('.')[i] for i in range(len(patch_versions))])} }};" + for prefix in version_property_prefixes + ]) + + device_md5_sums = '\n'.join([ + f' [{device["deviceId"]}] = "{ZERO_MD5 if not use_real_shas else calculate_md5_checksum_of_file(os.path.join(os.path.dirname(__file__), "..", device["source"]))}",' + for device in package_json['devices'] + ]) + + module_md5_sums = '\n'.join([ + f' [{module["moduleId"]}] = "{ZERO_MD5 if not use_real_shas else calculate_md5_checksum_of_file(os.path.join(os.path.dirname(__file__), "..", module["source"]))}",' + for module in package_json['modules'] + ]) + + with open(os.path.join(os.path.dirname(__file__), '..', 'shared', 'versions.c'), 'w') as f: + f.write(f"""// Please do not edit this file by hand! +// It is to be regenerated by /scripts/generate_versions.py +#include "versioning.h" + +{version_variables} + +const char gitRepo[] = "{git_info['repo']}"; +const char gitTag[] = "{git_info['tag']}"; + +#ifdef DEVICE_COUNT +const char *const DeviceMD5Checksums[DEVICE_COUNT + 1] = {{ +{device_md5_sums} +}}; +#endif + +const char *const ModuleMD5Checksums[ModuleId_AllCount] = {{ +{module_md5_sums} +}}; +""") + + return { + 'devices': package_json['devices'], + 'modules': package_json['modules'] + } + +def calculate_md5_checksum_of_file(file_path): + with open(file_path, 'rb') as f: + file_data = f.read() + return hashlib.md5(file_data).hexdigest() diff --git a/shared/CMakeLists.txt b/shared/CMakeLists.txt index cf2d301a..99acfa65 100644 --- a/shared/CMakeLists.txt +++ b/shared/CMakeLists.txt @@ -4,17 +4,25 @@ target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR} ) -target_sources(${PROJECT_NAME}-shared PRIVATE +if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/versions.c") + message(WARNING "Generating missing versions.c for UHK") + find_package(Python 3 REQUIRED) + if(Python_VERSION_MAJOR LESS 3) + message(FATAL_ERROR "Python 3 is required versions generation.") + endif() + add_custom_command( + OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/versions.c" + COMMAND ${Python3_EXECUTABLE} "${PROJECT_SOURCE_DIR}/scripts/generate_versions.py" + DEPENDS "${PROJECT_SOURCE_DIR}/scripts/generate_versions.py" + ) +endif() +set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/versions.c PROPERTIES GENERATED TRUE) + +target_sources(${PROJECT_NAME} PRIVATE bool_array_converter.c buffer.c crc16.c - fallback_versions.c key_matrix.c slave_protocol.c + versions.c ) - -# add the versions.c source file conditionally -if(NOT NOVERSIONS) - target_sources(${PROJECT_NAME} PRIVATE versions.c) - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/versions.c PROPERTIES GENERATED TRUE) -endif() diff --git a/shared/fallback_versions.c b/shared/fallback_versions.c deleted file mode 100644 index 6598e22c..00000000 --- a/shared/fallback_versions.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "attributes.h" -#include "versioning.h" - -// weak definitions of generated variables to be able to build without final artifacts available -const version_t firmwareVersion ATTR_WEAK = {}; -const version_t deviceProtocolVersion ATTR_WEAK = {}; -const version_t moduleProtocolVersion ATTR_WEAK = {}; -const version_t userConfigVersion ATTR_WEAK = {}; -const version_t hardwareConfigVersion ATTR_WEAK = {}; -const version_t smartMacrosVersion ATTR_WEAK = {}; - -const char gitRepo[] ATTR_WEAK = ""; -const char gitTag[] ATTR_WEAK = ""; - -#ifdef DEVICE_COUNT -const char *const DeviceMD5Checksums[DEVICE_COUNT + 1] ATTR_WEAK = { - [1] = "000000000000000000000000000000000", - [2] = "000000000000000000000000000000000", - [3] = "000000000000000000000000000000000", - [4] = "000000000000000000000000000000000", - [5] = "000000000000000000000000000000000", -}; -#endif - -const char *const ModuleMD5Checksums[ModuleId_AllCount] ATTR_WEAK = { - [1] = "000000000000000000000000000000000", - [2] = "000000000000000000000000000000000", - [3] = "000000000000000000000000000000000", - [4] = "000000000000000000000000000000000", -}; From 9e7df3d0899eb1739d130ad622aee3620bcc7357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Tu=C4=8Dek?= Date: Thu, 5 Dec 2024 23:55:23 +0100 Subject: [PATCH 29/33] Update buildscript. --- build.sh | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/build.sh b/build.sh index 7899a322..055c6853 100755 --- a/build.sh +++ b/build.sh @@ -1,9 +1,10 @@ #!/bin/bash -NCS_VERSION=v2.6.1 +NCS_VERSION=v2.8.0 -BUILD_SESSION_NAME="buildsession" -UART_SESSION_NAME="uartsession" +ROOT_HASH=`realpath . | md5sum | sed 's/ .*//g'` +BUILD_SESSION_NAME="buildsession_$ROOT_HASH" +UART_SESSION_NAME="uartsession_$ROOT_HASH" function help() { cat << END @@ -224,6 +225,12 @@ function createCentralCompileCommands() { mv $TEMP_COMMANDS $ROOT/compile_commands.json } +function getExtraConfFiles() { + DEVICE=$1 + EXTRA_CONF_FILES=`jq -r '.configurePresets[] | select(.name == "build/'"$DEVICE"'") | .cacheVariables.EXTRA_CONF_FILE' device/CMakePresets.json` + echo "$EXTRA_CONF_FILES" | sed 's=${sourceDir}='"$ROOT"/device'=g' +} + function performAction() { DEVICE=$1 ACTION=$2 @@ -240,7 +247,7 @@ function performAction() { ./generate-versions.mjs ;; clean) - rm -rf device/build .west bootloader modules nrf nrfxlib test tools zephyr + rm -rf ../bootloader ../c2usb ../hal_nxp ../modules ../nrf ../nrfxlib ../zephyr ../.west ;; setup) # update this according to README @@ -260,8 +267,17 @@ function performAction() { nrfutil toolchain-manager launch --shell --ncs-version $NCS_VERSION << END unset PYTHONPATH unset PYTHONHOME - ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build --build-dir "$ROOT/device/build/$DEVICE" "$ROOT/device" --pristine --board "$DEVICE" --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DEXTRA_CONF_FILE=prj.conf.overlays/$DEVICE.prj.conf -DBOARD_ROOT="$ROOT" -Dmcuboot_OVERLAY_CONFIG="$ROOT/device/child_image/mcuboot.conf;$ROOT/device/child_image/$DEVICE.mcuboot.conf" - + ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build \ + --build-dir "$ROOT/device/build/$DEVICE" "$ROOT/device" \ + --pristine \ + --board "$DEVICE" \ + --no-sysbuild \ + -- \ + -DNCS_TOOLCHAIN_VERSION=NONE \ + -DCONF_FILE="$ROOT/device/prj_release.conf" \ + -DEXTRA_CONF_FILE="`getExtraConfFiles $DEVICE`" \ + -DBOARD_ROOT="$ROOT" \ + -Dmcuboot_OVERLAY_CONFIG="$ROOT/device/child_image/mcuboot.conf;$ROOT/device/child_image/$DEVICE.mcuboot.conf" END createCentralCompileCommands ;; From 7468eb38ddde6a6fc65a92d2f21b4def91d6804a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Tu=C4=8Dek?= Date: Thu, 5 Dec 2024 23:56:18 +0100 Subject: [PATCH 30/33] Fix crashes on thread waking. --- device/src/state_sync.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/device/src/state_sync.c b/device/src/state_sync.c index a6f41caa..bef4b359 100644 --- a/device/src/state_sync.c +++ b/device/src/state_sync.c @@ -25,6 +25,8 @@ #include "peripherals/merge_sensor.h" #include "power_mode.h" +#define WAKE(TID) if (TID != 0) { k_wakeup(TID); } + #define STATE_SYNC_SEND_DELAY 2 #define THREAD_STACK_SIZE 2000 @@ -141,14 +143,14 @@ static void invalidateProperty(state_sync_prop_id_t propId) { bool isRightLeftLink = (stateSyncProps[propId].direction & (SyncDirection_RightToLeft | SyncDirection_LeftToRight)); if (isRightLeftLink && isRightLeftDevice) { - k_wakeup(stateSyncThreadLeftId); + WAKE(stateSyncThreadLeftId); } bool isRightDongleDevice = (DEVICE_ID == DeviceId_Uhk80_Right || DEVICE_ID == DeviceId_Uhk_Dongle); bool isRightDongleLink = (stateSyncProps[propId].direction & (SyncDirection_DongleToRight | SyncDirection_RightToDongle)); if (isRightDongleLink && isRightDongleDevice) { - k_wakeup(stateSyncThreadDongleId); + WAKE(stateSyncThreadDongleId); } } @@ -633,7 +635,7 @@ void StateSync_UpdateLayer(layer_id_t layerId, bool fullUpdate) { stateSyncProps[propId].dirtyState = fullUpdate ? DirtyState_NeedsUpdate : DirtyState_NeedsClearing; stateSyncProps[propId].defaultDirty = stateSyncProps[propId].dirtyState; - k_wakeup(stateSyncThreadLeftId); + WAKE(stateSyncThreadLeftId); } void StateSync_Init() { From 18e6beafddce4371a648ec7a92597e1927901d98 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Fri, 6 Dec 2024 09:32:51 +0100 Subject: [PATCH 31/33] cmake: generate compile commands for clangd intellisense --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 69d1eb99..54a7e43d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,10 @@ +cmake_minimum_required(VERSION 3.20) + # until https://github.com/zephyrproject-rtos/zephyr/pull/69490 is merged set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + # zephyr's build system doesn't define standard build type symbols, fix that here if(NOT CONFIG_DEBUG) add_definitions(-DNDEBUG) From f2ecd6b2a065fd3862b7d1f7174de2620f2a7445 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Mon, 16 Dec 2024 16:00:26 +0100 Subject: [PATCH 32/33] fix wrong stub linking --- device/src/dongle_leds.c | 2 +- device/src/dongle_leds.h | 2 +- right/src/stubs.c | 23 +++++++++++++++++++++ right/src/stubs.h | 44 +++++++++++++++++++--------------------- 4 files changed, 46 insertions(+), 25 deletions(-) diff --git a/device/src/dongle_leds.c b/device/src/dongle_leds.c index 10c9fa34..f423d6e8 100644 --- a/device/src/dongle_leds.c +++ b/device/src/dongle_leds.c @@ -27,7 +27,7 @@ void DongleLeds_Set(bool r, bool g, bool b) { set_dongle_led(&blue_pwm_led, b ? 100 : 0); } -void DongleLeds_Update() { +void DongleLeds_Update(void) { if (DeviceState_IsConnected(ConnectionId_Right)) { DongleLeds_Set(false, true, false); return; diff --git a/device/src/dongle_leds.h b/device/src/dongle_leds.h index a4f15892..a5e1106f 100644 --- a/device/src/dongle_leds.h +++ b/device/src/dongle_leds.h @@ -13,7 +13,7 @@ // Functions: extern void DongleLeds_Set(bool r, bool g, bool b); - extern void DongleLeds_Update(); + extern void DongleLeds_Update(void); extern void set_dongle_led(const struct pwm_dt_spec *device, uint8_t percentage); // Variables: diff --git a/right/src/stubs.c b/right/src/stubs.c index 7ed2ed56..807b12d2 100644 --- a/right/src/stubs.c +++ b/right/src/stubs.c @@ -6,3 +6,26 @@ #include "device.h" #endif +#define ATTRS __attribute__((weak)) + + ATTRS bool SegmentDisplay_NeedsUpdate = false; + ATTRS bool RunningOnBattery = false; + ATTRS bool RightRunningOnBattery = false; + ATTRS void Oled_UpdateBrightness() {}; + ATTRS void Oled_ShiftScreen() {}; + ATTRS void ScreenManager_SwitchScreenEvent() {}; + ATTRS void Charger_UpdateBatteryState() {}; + ATTRS const rgb_t* PairingScreen_ActionColor(key_action_t* action) { return NULL; }; + ATTRS void Uart_Reenable() {}; + ATTRS void Uart_Enable() {}; + ATTRS status_t ZephyrI2c_MasterTransferNonBlocking(i2c_master_transfer_t *transfer) { return kStatus_Fail; }; + ATTRS void Oled_LogConstant(const char* text) {}; + ATTRS void Oled_Log(const char *fmt, ...) {}; + ATTRS void Uart_LogConstant(const char* buffer) {}; + ATTRS void Uart_Log(const char *fmt, ...) {}; + ATTRS void Log(const char *fmt, ...) {}; + ATTRS void LogBt(const char *fmt, ...) {}; + ATTRS void BtPair_EndPairing(bool success, const char* msg) {}; + ATTRS void BtManager_RestartBt() {}; + ATTRS void DongleLeds_Update(void) {}; + ATTRS void BtPair_ClearUnknownBonds() {}; diff --git a/right/src/stubs.h b/right/src/stubs.h index 836802ed..349239c2 100644 --- a/right/src/stubs.h +++ b/right/src/stubs.h @@ -18,33 +18,31 @@ // Macros: -#define ATTRS __attribute__((weak)) __attribute__((unused)) - // Variables: // Functions: - ATTRS bool SegmentDisplay_NeedsUpdate = false; - ATTRS bool RunningOnBattery = false; - ATTRS bool RightRunningOnBattery = false; - ATTRS void Oled_UpdateBrightness() {}; - ATTRS void Oled_ShiftScreen() {}; - ATTRS void ScreenManager_SwitchScreenEvent() {}; - ATTRS void Charger_UpdateBatteryState() {}; - ATTRS const rgb_t* PairingScreen_ActionColor(key_action_t* action) { return NULL; }; - ATTRS void Uart_Reenable() {}; - ATTRS void Uart_Enable() {}; - ATTRS status_t ZephyrI2c_MasterTransferNonBlocking(i2c_master_transfer_t *transfer) { return kStatus_Fail; }; - ATTRS void Oled_LogConstant(const char* text) {}; - ATTRS void Oled_Log(const char *fmt, ...) {}; - ATTRS void Uart_LogConstant(const char* buffer) {}; - ATTRS void Uart_Log(const char *fmt, ...) {}; - ATTRS void Log(const char *fmt, ...) {}; - ATTRS void LogBt(const char *fmt, ...) {}; - ATTRS void BtPair_EndPairing(bool success, const char* msg) {}; - ATTRS void BtManager_RestartBt() {}; - ATTRS void DongleLeds_Update() {}; - ATTRS void BtPair_ClearUnknownBonds() {}; + extern bool SegmentDisplay_NeedsUpdate; + extern bool RunningOnBattery; + extern bool RightRunningOnBattery; + extern void Oled_UpdateBrightness(); + extern void Oled_ShiftScreen(); + extern void ScreenManager_SwitchScreenEvent(); + extern void Charger_UpdateBatteryState(); + extern const rgb_t* PairingScreen_ActionColor(key_action_t* action); + extern void Uart_Reenable(); + extern void Uart_Enable(); + extern status_t ZephyrI2c_MasterTransferNonBlocking(i2c_master_transfer_t *transfer); + extern void Oled_LogConstant(const char* text); + extern void Oled_Log(const char *fmt, ...); + extern void Uart_LogConstant(const char* buffer); + extern void Uart_Log(const char *fmt, ...); + extern void Log(const char *fmt, ...); + extern void LogBt(const char *fmt, ...); + extern void BtPair_EndPairing(bool success, const char* msg); + extern void BtManager_RestartBt(); + extern void DongleLeds_Update(void); + extern void BtPair_ClearUnknownBonds(); #if DEVICE_HAS_OLED #define WIDGET_REFRESH(W) Widget_Refresh(W) From 08d28d9ea0919452f2b070546454ea9ef75bc279 Mon Sep 17 00:00:00 2001 From: Benedek Kupper Date: Wed, 4 Dec 2024 22:08:37 +0100 Subject: [PATCH 33/33] dongle: set regout0 to provide 3.3V from USB (#361) --- boards/ugl/uhk-80/CMakeLists.txt | 4 +++ boards/ugl/uhk-80/board.c | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 boards/ugl/uhk-80/CMakeLists.txt create mode 100644 boards/ugl/uhk-80/board.c diff --git a/boards/ugl/uhk-80/CMakeLists.txt b/boards/ugl/uhk-80/CMakeLists.txt new file mode 100644 index 00000000..1e446521 --- /dev/null +++ b/boards/ugl/uhk-80/CMakeLists.txt @@ -0,0 +1,4 @@ +zephyr_library() +if(CONFIG_DEVICE_ID) # don't add it to bootloader image as well + zephyr_library_sources(board.c) +endif() diff --git a/boards/ugl/uhk-80/board.c b/boards/ugl/uhk-80/board.c new file mode 100644 index 00000000..1f8d0c31 --- /dev/null +++ b/boards/ugl/uhk-80/board.c @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2018 Nordic Semiconductor ASA. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#ifdef CONFIG_BOARD_UHK_DONGLE_NRF52840 +static int board_uhk_dongle_nrf52840_init(void) +{ + /* if the nrf52840dongle_nrf52840 board is powered from USB + * (high voltage mode), GPIO output voltage is set to 1.8 volts by + * default and that is not enough to turn the green and blue LEDs on. + * Increase GPIO voltage to 3.3 volts. */ + if ((nrf_power_mainregstatus_get(NRF_POWER) == + NRF_POWER_MAINREGSTATUS_HIGH) && + ((NRF_UICR->REGOUT0 & UICR_REGOUT0_VOUT_Msk) == + (UICR_REGOUT0_VOUT_DEFAULT << UICR_REGOUT0_VOUT_Pos))) { + + NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos; + while (NRF_NVMC->READY == NVMC_READY_READY_Busy) { + ; + } + + NRF_UICR->REGOUT0 = + (NRF_UICR->REGOUT0 & ~((uint32_t)UICR_REGOUT0_VOUT_Msk)) | + (UICR_REGOUT0_VOUT_3V3 << UICR_REGOUT0_VOUT_Pos); + + NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos; + while (NRF_NVMC->READY == NVMC_READY_READY_Busy) { + ; + } + + /* a reset is required for changes to take effect */ + NVIC_SystemReset(); + } + + return 0; +} + +SYS_INIT(board_uhk_dongle_nrf52840_init, PRE_KERNEL_1, + CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); +#endif