Skip to content
This repository has been archived by the owner on Dec 18, 2024. It is now read-only.

NCS 2.8.0 plus my USB changes again #353

Merged
merged 33 commits into from
Dec 16, 2024
Merged

NCS 2.8.0 plus my USB changes again #353

merged 33 commits into from
Dec 16, 2024

Conversation

benedekkupper
Copy link
Contributor

Repeating #347, which itself was a combination of #319, #331 and #346

@benedekkupper
Copy link
Contributor Author

@mondalaci please test all outstanding USB issues with this branch: mouse stuck, wakeup, text macros garbled

@mondalaci
Copy link
Member

mondalaci commented Nov 10, 2024

I get the following, and it keeps crashing in every second:

uhReading hardware config
Reading user config
Applying user config
Flashed User Config version: 8.3.0
E: ***** USAGE FAULT *****
E:   Unaligned memory access
E: r0/a1:  0x00000018  r1/a2:  0x00000001  r2/a3:  0x00000000
E: r3/a4:  0x00003569 r12/ip:  0x00000000 r14/lr:  0x00064e3d
E:  xpsr:  0x81000200
E: r4/v1:  0x00000018  r5/v2:  0x00000000  r6/v3:  0x00000004
E: r7/v4:  0x00000004  r8/v5:  0x00000004  r9/v6:  0x00000001
E: r10/v7: 0x00000005  r11/v8: 0x2000532a    psp:  0x200320b0
E: EXC_RETURN: 0xfffffffd
E: Faulting instruction address (r15/pc): 0x00064c40
E: >>> ZEPHYR FATAL ERROR 31: Unknown error on CPU 0
E: Current thread: 0x2000e400 (main)
E: Resetting system

Can you reproduce it?

@benedekkupper
Copy link
Contributor Author

I need more information on how exactly you have performed the programming. For me the right half is working, but I'm using simple west flash command.

Sidenote: The "factory default" config is producing false key presses (at least a month or so before, when I pressed the keys, the right characters were sent, now they have been mixed/shifted around).

@mondalaci
Copy link
Member

Thanks for revealing UltimateHackingKeyboard/firmware#967! We'll fix it, and then the factory keymap's scancodes will be as expected. In the meantime, you can use Agent to save the user configuration, which fixes the scancodes on your UHK 80, although I think you only use it for development.

All things considered, this PR is a huge step forward.

The good:

  • Garbled text macro characters fixed
  • Sleep-wake fixed
  • The mouse interface freeze fixed (although I could only test it with the dongle)

The bad:

  • BLE pairing doesn't work anymore. On my Android phone, when I tap on the UHK 80, the phone displays the pairing code, but the UHK doesn't detect pairing. Nothing appears on the OLED display or in the Zephyr console.
  • Upon wake up, if I move the mouse pointer with any right module, such as the trackpoint module, the mouse pointer moves very quickly. If I stop moving the trackpoint, the mouse keeps moving in the last direction until I press a key or trigger a mouse action with a mouse key (on the mouse layer). I can only fix this behavior by resetting the right keyboard half.

@mondalaci
Copy link
Member

I forgot to tell that I did a nrfjprog -f NRF52 --eraseall and then flashed the firmware to make this PR work. Given that the hardware config and user config flash partitions contain the same data as before, there must have been some data on the settings partition that made the firmware crash.

@mondalaci
Copy link
Member

@benedekkupper Please let me know when I can re-test this issue.

The mentioned "BLE pairing doesn't work anymore" issue may not be an actual issue and may be due to UltimateHackingKeyboard/firmware#1022.

The mouse pointer issue, however, is an actual issue that must be fixed.

@benedekkupper
Copy link
Contributor Author

@mondalaci please go ahead and give this a try.

Further development:

  • NCS is now bumped to 2.8.0 directly. There is more to do on the whole Kconfig side to really better split the configurations for left, right and dongle, because e.g. left is BLE peripheral only, dongle is BLE central only, they need only one connection, while the right is dual-role with additional HID connections. And this is only the BLE side, I'm sure there's more to split on other areas as well, I just don't have the full picture. - Bumping to 2.9.0 will also not be straightforward, first we will need to switch to sysbuild to build mcuboot.
  • VSCode is working now, with the latest version of the extension, with the exception of creating build configurations - unfortunately the initial build must be done via command line. Everything else will show up in the GUI afterwards. Use the added VSCode tasks to perform the initial build.
  • c2usb library management became easier, now it's a zephyr submodule, so west update pulls in the correct version for it. Patching it is possible with our west patch tool just like the other zephyr libraries.
  • I fixed the stuck BLE input report issue, please retest it.

@mondalaci
Copy link
Member

I checked out the repo using the usual steps in the README, but right after cloning it, I switched to this PR.

The "Build UHK 80 right firmware" task failed:

Executing task: nrfutil toolchain-manager launch -shell -- west build --build-dir /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right /home/laci/projects/firmware-uhk80/firmware-uhk80/device --pristine --board uhk-80-right --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DCONF_FILE=/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf -DEXTRA_CONF_FILE=/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/nrf_shared.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/c2usb.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/uhk-80.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/ble-hid.conf -DBOARD_ROOT=/home/laci/projects/firmware-uhk80/firmware-uhk80 -Dmcuboot_OVERLAY_CONFIG=/home/laci/projects/firmware-uhk80/firmware-uhk80/device/child_image/mcuboot.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/child_image/uhk-80-right.mcuboot.conf 

 *  The terminal process failed to launch: Path to shell executable "nrfutil toolchain-manager launch -shell -- west" does not exist.

--shell should be used instead of -shell, but even then, it seems like nrfutil toolchain-manager launch -shell -- west is considered the command name instead of nrfutil, which should be fixed somehow.

Even from the command line, the build failed:

laci@lian:~/projects/firmware-uhk80/firmware-uhk80/device$ nrfutil toolchain-manager launch --shell -- west build --build-dir /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right /home/laci/projects/firmware-uhk80/firmware-uhk80/device --pristine --board uhk-80-right --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DCONF_FILE=/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf -DEXTRA_CONF_FILE=/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/nrf_shared.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/c2usb.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/uhk-80.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/ble-hid.conf -DBOARD_ROOT=/home/laci/projects/firmware-uhk80/firmware-uhk80 -Dmcuboot_OVERLAY_CONFIG=/home/laci/projects/firmware-uhk80/firmware-uhk80/device/child_image/mcuboot.conf;/home/laci/projects/firmware-uhk80/firmware-uhk80/device/child_image/uhk-80-right.mcuboot.conf
-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: /home/laci/projects/firmware-uhk80/firmware-uhk80/device
-- CMake version: 3.21.0
-- Found Python3: /home/laci/ncs/toolchains/b81a7cd864/usr/local/bin/python3.12 (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
-- Cache files will be written to: /home/laci/.cache/zephyr
-- Zephyr version: 3.7.99 (/home/laci/projects/firmware-uhk80/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: uhk-80-right, qualifiers: nrf52840
-- Found host-tools: zephyr 0.16.8 (/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.8 (/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk)
-- Found Dtc: /home/laci/ncs/toolchains/b81a7cd864/usr/bin/dtc (found suitable version "1.5.0", minimum required is "1.4.6") 
-- Found BOARD.dts: /home/laci/projects/firmware-uhk80/firmware-uhk80/boards/ugl/uhk-80/uhk-80-right.dts
-- Generated zephyr.dts: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/devicetree_generated.h
-- Including generated dts.cmake file: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/dts.cmake
Parsing /home/laci/projects/firmware-uhk80/firmware-uhk80/device/Kconfig
Loaded configuration '/home/laci/projects/firmware-uhk80/firmware-uhk80/boards/ugl/uhk-80/uhk-80-right_defconfig'
Merged configuration '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf'
Merged configuration '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/nrf_shared.conf'
Configuration saved to '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/.config'
Kconfig header saved to '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h'
-- Found GnuLd: /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd (found version "2.38") 
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
Zephyr build without C++ support, skipping c2usb build
-- Found Python3: /home/laci/ncs/toolchains/b81a7cd864/usr/local/bin/python3.12 (found version "3.12.4") found components: Interpreter 

=== child image mcuboot -  begin ===
loading initial cache file /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/child_image_preload.cmake
Loading Zephyr default modules (Zephyr base).
-- Application: /home/laci/projects/firmware-uhk80/bootloader/mcuboot/boot/zephyr
-- CMake version: 3.21.0
-- Found Python3: /home/laci/ncs/toolchains/b81a7cd864/usr/local/bin/python3.12 (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
-- Cache files will be written to: /home/laci/.cache/zephyr
-- Zephyr version: 3.7.99 (/home/laci/projects/firmware-uhk80/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: uhk-80-right, qualifiers: nrf52840
-- Found host-tools: zephyr 0.16.8 (/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.8 (/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk)
-- Found Dtc: /home/laci/ncs/toolchains/b81a7cd864/usr/bin/dtc (found suitable version "1.5.0", minimum required is "1.4.6") 
-- Found BOARD.dts: /home/laci/projects/firmware-uhk80/firmware-uhk80/boards/ugl/uhk-80/uhk-80-right.dts
-- Found devicetree overlay: /home/laci/projects/firmware-uhk80/bootloader/mcuboot/boot/zephyr/app.overlay
-- Found devicetree overlay: /home/laci/projects/firmware-uhk80/nrf/modules/mcuboot/usb.overlay
-- Generated zephyr.dts: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/include/generated/zephyr/devicetree_generated.h
-- Including generated dts.cmake file: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/dts.cmake
Parsing /home/laci/projects/firmware-uhk80/bootloader/mcuboot/boot/zephyr/Kconfig
Loaded configuration '/home/laci/projects/firmware-uhk80/firmware-uhk80/boards/ugl/uhk-80/uhk-80-right_defconfig'
Merged configuration '/home/laci/projects/firmware-uhk80/bootloader/mcuboot/boot/zephyr/prj.conf'
Merged configuration '/home/laci/projects/firmware-uhk80/nrf/subsys/partition_manager/partition_manager_enabled.conf'
Merged configuration '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/child_image/mcuboot.conf'
Merged configuration '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/.config'
Kconfig header saved to '/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/include/generated/zephyr/autoconf.h'
-- Found GnuLd: /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd (found version "2.38") 
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
Zephyr build without C++ support, skipping c2usb build
CMake Deprecation Warning at /home/laci/projects/firmware-uhk80/nrf/cmake/partition_manager.cmake:32 (message):
  

            ---------------------------------------------------------------------
            --- WARNING: Child and parent image functionality is deprecated   ---
            --- and should be replaced with sysbuild. Child and parent image  ---
            --- support remains only to allow existing customer applications  ---
            --- to build and allow porting to sysbuild, it is no longer       ---
            --- receiving updates or new features and it will not be possible ---
            --- to build using child/parent image at all in nRF Connect SDK   ---
            --- version 2.9 onwards.                                          ---
            ---------------------------------------------------------------------
Call Stack (most recent call first):
  /home/laci/projects/firmware-uhk80/zephyr/cmake/modules/kernel.cmake:255 (include)
  /home/laci/projects/firmware-uhk80/zephyr/cmake/modules/zephyr_default.cmake:142 (include)
  /home/laci/projects/firmware-uhk80/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
  /home/laci/projects/firmware-uhk80/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
  CMakeLists.txt:12 (find_package)


MCUBoot bootloader key file: /home/laci/projects/firmware-uhk80/bootloader/mcuboot/root-ec-p256.pem
-- Configuring done
-- Generating done
-- Build files have been written to: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot
=== child image mcuboot -  end ===

-- Found partition manager static configuration: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/pm_static.yml
Partition 'mcuboot' is not included in the dynamic resolving since it is statically defined.
Partition 'mcuboot_pad' is not included in the dynamic resolving since it is statically defined.
Partition 'mcuboot_primary' is not included in the dynamic resolving since it is statically defined.
Partition 'mcuboot_primary_app' is not included in the dynamic resolving since it is statically defined.
Partition 'settings_storage' is not included in the dynamic resolving since it is statically defined.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right
-- west build: building application
[1/451] Preparing syscall dependency handling

[9/451] Generating include/generated/zephyr/version.h
-- Zephyr version: 3.7.99 (/home/laci/projects/firmware-uhk80/zephyr), build: v3.7.99-ncs1-2-g335167a95972
[10/451] Performing build step for 'mcuboot_subimage'
[1/232] Preparing syscall dependency handling

[7/232] Generating include/generated/zephyr/version.h
-- Zephyr version: 3.7.99 (/home/laci/projects/firmware-uhk80/zephyr), build: v3.7.99-ncs1-2-g335167a95972
[232/232] Linking C executable zephyr/zephyr.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:       53300 B        64 KB     81.33%
             RAM:      101120 B     262143 B     38.57%
     RetainedMem:          0 GB          1 B      0.00%
        IDT_LIST:          0 GB        32 KB      0.00%
Generating files from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/mcuboot/zephyr/zephyr.elf for board: uhk-80-right
[20/451] Building CXX object CMakeFiles/app.dir/src/usb/mouse_app.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/mouse_app.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/mouse_app.cpp.obj -MF CMakeFiles/app.dir/src/usb/mouse_app.cpp.obj.d -o CMakeFiles/app.dir/src/usb/mouse_app.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/mouse_app.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/mouse_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/mouse_app.cpp:1:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/app_base.hpp:4:10: fatal error: hid/application.hpp: No such file or directory
    4 | #include "hid/application.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[21/451] Building CXX object CMakeFiles/app.dir/src/usb/keyboard_app.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/keyboard_app.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/keyboard_app.cpp.obj -MF CMakeFiles/app.dir/src/usb/keyboard_app.cpp.obj.d -o CMakeFiles/app.dir/src/usb/keyboard_app.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/keyboard_app.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/keyboard_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/keyboard_app.cpp:1:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/app_base.hpp:4:10: fatal error: hid/application.hpp: No such file or directory
    4 | #include "hid/application.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[22/451] Building CXX object CMakeFiles/app.dir/src/usb/controls_app.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/controls_app.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/controls_app.cpp.obj -MF CMakeFiles/app.dir/src/usb/controls_app.cpp.obj.d -o CMakeFiles/app.dir/src/usb/controls_app.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/controls_app.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/controls_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/controls_app.cpp:1:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/app_base.hpp:4:10: fatal error: hid/application.hpp: No such file or directory
    4 | #include "hid/application.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[23/451] Building CXX object CMakeFiles/app.dir/src/usb/app_base.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/app_base.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/app_base.cpp.obj -MF CMakeFiles/app.dir/src/usb/app_base.cpp.obj.d -o CMakeFiles/app.dir/src/usb/app_base.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/app_base.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/app_base.cpp:1:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/app_base.hpp:4:10: fatal error: hid/application.hpp: No such file or directory
    4 | #include "hid/application.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[24/451] Building CXX object CMakeFiles/app.dir/src/usb/command_app.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/command_app.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/command_app.cpp.obj -MF CMakeFiles/app.dir/src/usb/command_app.cpp.obj.d -o CMakeFiles/app.dir/src/usb/command_app.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/command_app.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/command_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/command_app.cpp:1:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/double_buffer.hpp:6:10: fatal error: c2usb.hpp: No such file or directory
    6 | #include <c2usb.hpp>
      |          ^~~~~~~~~~~
compilation terminated.
[26/451] Building CXX object CMakeFiles/app.dir/src/usb/gamepad_app.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/gamepad_app.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/gamepad_app.cpp.obj -MF CMakeFiles/app.dir/src/usb/gamepad_app.cpp.obj.d -o CMakeFiles/app.dir/src/usb/gamepad_app.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/gamepad_app.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/gamepad_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/gamepad_app.cpp:1:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/double_buffer.hpp:6:10: fatal error: c2usb.hpp: No such file or directory
    6 | #include <c2usb.hpp>
      |          ^~~~~~~~~~~
compilation terminated.
[27/451] Building CXX object CMakeFiles/app.dir/src/usb/hid_battery_app.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/hid_battery_app.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/hid_battery_app.cpp.obj -MF CMakeFiles/app.dir/src/usb/hid_battery_app.cpp.obj.d -o CMakeFiles/app.dir/src/usb/hid_battery_app.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/hid_battery_app.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/hid_battery_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/hid_battery_app.cpp:5:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/double_buffer.hpp:6:10: fatal error: c2usb.hpp: No such file or directory
    6 | #include <c2usb.hpp>
      |          ^~~~~~~~~~~
compilation terminated.
[28/451] Building CXX object CMakeFiles/app.dir/src/usb/usb.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/usb.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/usb.cpp.obj -MF CMakeFiles/app.dir/src/usb/usb.cpp.obj.d -o CMakeFiles/app.dir/src/usb/usb.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/usb.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/command_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/usb.cpp:14:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/double_buffer.hpp:6:10: fatal error: c2usb.hpp: No such file or directory
    6 | #include <c2usb.hpp>
      |          ^~~~~~~~~~~
compilation terminated.
[31/451] Building CXX object CMakeFiles/app.dir/src/usb/usb_compatibility.cpp.obj
FAILED: CMakeFiles/app.dir/src/usb/usb_compatibility.cpp.obj 
ccache /home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-g++ -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DNRF52840_XXAA -DPICOLIBC_LONG_LONG_PRINTF_SCANF -DUSE_PARTITION_MANAGER=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/legacy/config_parser -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/shared -I/home/laci/projects/firmware-uhk80/nrf/drivers/mpsl/clock_control -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr -I/home/laci/projects/firmware-uhk80/zephyr/include -I/home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic -I/home/laci/projects/firmware-uhk80/zephyr/lib/posix/options/getopt -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/nrf52/. -I/home/laci/projects/firmware-uhk80/zephyr/soc/nordic/common/. -I/home/laci/projects/firmware-uhk80/zephyr/subsys/bluetooth -I/home/laci/projects/firmware-uhk80/zephyr/subsys/settings/include -I/home/laci/projects/firmware-uhk80/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/laci/projects/firmware-uhk80/nrf/include -I/home/laci/projects/firmware-uhk80/nrf/lib/multithreading_lock/. -I/home/laci/projects/firmware-uhk80/nrf/subsys/bluetooth/controller/. -I/home/laci/projects/firmware-uhk80/zephyr/drivers/flash -I/home/laci/projects/firmware-uhk80/nrf/tests/include -I/home/laci/projects/firmware-uhk80/modules/hal/cmsis/CMSIS/Core/Include -I/home/laci/projects/firmware-uhk80/zephyr/modules/cmsis/. -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/drivers/include -I/home/laci/projects/firmware-uhk80/modules/hal/nordic/nrfx/mdk -I/home/laci/projects/firmware-uhk80/zephyr/modules/hal_nordic/nrfx/. -I/home/laci/projects/firmware-uhk80/modules/debug/segger/SEGGER -I/home/laci/projects/firmware-uhk80/modules/debug/segger/Config -I/home/laci/projects/firmware-uhk80/modules/crypto/tinycrypt/lib/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/common/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf21540_gpio_spi/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2220/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf2240/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/nrf22xx/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/simple_gpio/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/fem/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include -I/home/laci/projects/firmware-uhk80/nrfxlib/mpsl/include/protocol -I/home/laci/projects/firmware-uhk80/nrfxlib/softdevice_controller/include -isystem /home/laci/projects/firmware-uhk80/zephyr/lib/libc/common/include -isystem /home/laci/projects/firmware-uhk80/nrfxlib/crypto/nrf_cc310_platform/include -fpermissive -fno-strict-aliasing -Og -fcheck-new -fno-exceptions -fno-rtti -imacros /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m4 -mthumb -mabi=aapcs -mfp16-format=ieee -mtp=soft --sysroot=/home/laci/ncs/toolchains/b81a7cd864/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/laci/projects/firmware-uhk80/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wno-unused-but-set-variable -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/firmware-uhk80/device=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/laci/projects/firmware-uhk80/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/laci/projects/firmware-uhk80=WEST_TOPDIR -ffunction-sections -fdata-sections --specs=picolibc.specs -D_POSIX_THREADS -MD -MT CMakeFiles/app.dir/src/usb/usb_compatibility.cpp.obj -MF CMakeFiles/app.dir/src/usb/usb_compatibility.cpp.obj.d -o CMakeFiles/app.dir/src/usb/usb_compatibility.cpp.obj -c /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/usb_compatibility.cpp
In file included from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/command_app.hpp:4,
                 from /home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/usb_compatibility.cpp:17:
/home/laci/projects/firmware-uhk80/firmware-uhk80/device/src/usb/double_buffer.hpp:6:10: fatal error: c2usb.hpp: No such file or directory
    6 | #include <c2usb.hpp>
      |          ^~~~~~~~~~~
compilation terminated.
[52/451] Building C object CMakeFiles/app.dir/src/logger.c.obj
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /home/laci/ncs/toolchains/b81a7cd864/usr/local/bin/cmake --build /home/laci/projects/firmware-uhk80/firmware-uhk80/device/build/uhk-80-right
Error: Launched process exited with non-zero status: 1
bash: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/c2usb.conf: Permission denied
bash: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/uhk-80.conf: Permission denied
bash: /home/laci/projects/firmware-uhk80/firmware-uhk80/device/prj.conf.overlays/ble-hid.conf: Permission denied

@benedekkupper
Copy link
Contributor Author

I added some changes to address this, please check again.

@mondalaci
Copy link
Member

The build succeeded and after flashing it, my UHK kept crashing:

*** Booting nRF Connect SDK v2.8.0-6ceaf16786d1 ***
*** Using Zephyr OS v3.7.99-783916b3dc2e ***
----------
UHK 80 right half started
Enabling UART

uhk8Reading hardware config
Reading user config
Applying user config
Flashed User Config version: 8.3.0
Resetting left right link! Unidirectional
User config applied
ASSERTION FAIL @ WEST_TOPDIR/zephyr/lib/libc/picolibc/libc-hooks.c:224
E: r0/a1:  0x00000004  r1/a2:  0x000000e0  r2/a3:  0x00000000
E: r3/a4:  0x00000004 r12/ip:  0xaaaaaaaa r14/lr:  0x0004cea7
E:  xpsr:  0x21000000
E: r4/v1:  0x0009ac04  r5/v2:  0x000852c3  r6/v3:  0x00000000
E: r7/v4:  0x00000000  r8/v5:  0x00000000  r9/v6:  0x00000008
E: r10/v7: 0x00000000  r11/v8: 0x00000000    psp:  0x200349d8
E: EXC_RETURN: 0x0
E: Faulting instruction address (r15/pc): 0x000766c2
E: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
E: Current thread: 0x2000f570 (c2usb)
E: Resetting system

Then I ran nrfjprog --eraseall and reflashed the firmware. The firmware still keeps crashing:

*** Booting nRF Connect SDK v2.8.0-6ceaf16786d1 ***
*** Using Zephyr OS v3.7.99-783916b3dc2e ***
----------
UHK 80 right half started
Enabling UART

uhk8Reading hardware config
Reading user config
Applying user config
Resetting left right link! Unidirectional
Resetting left right link! Bidirectional
User config applied
ASSERTION FAIL @ WEST_TOPDIR/zephyr/lib/libc/picolibc/libc-hooks.c:224
E: r0/a1:  0x00000004  r1/a2:  0x000000e0  r2/a3:  0x00000000
E: r3/a4:  0x00000004 r12/ip:  0xaaaaaaaa r14/lr:  0x0004cea7
E:  xpsr:  0x21000000
E: r4/v1:  0x0009ac04  r5/v2:  0x000852c3  r6/v3:  0x00000000
E: r7/v4:  0x00000000  r8/v5:  0x00000000  r9/v6:  0x00000008
E: r10/v7: 0x00000000  r11/v8: 0x00000000    psp:  0x200349d8
E: EXC_RETURN: 0x0
E: Faulting instruction address (r15/pc): 0x000766c2
E: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
E: Current thread: 0x2000f570 (c2usb)
E: Resetting system

merged.hex.zip

@benedekkupper
Copy link
Contributor Author

This is not happening on my side, so if you can share more details about your setup that would be great. I pushed a commit that should help print where the assert() is coming from.

@mondalaci
Copy link
Member

*** Booting nRF Connect SDK v2.8.0-6ceaf16786d1 ***
*** Using Zephyr OS v3.7.99-783916b3dc2e ***
----------
UHK 80 right half started
Enabling UART

uhk8Reading hardware config
Reading user config
Applying user config
Flashed User Config version: 8.3.0
Resetting left right link! Unidirectional
User config applied
assertion "mac != nullptr" failed: file "WEST_TOPDIR/c2usb/c2usb/port/zephyr/udc_mac.cpp", line 383, function: static int usb::zephyr::udc_mac::event_callback(const udc_event&)
abort()
E: r0/a1:  0x00000004  r1/a2:  0x00000000  r2/a3:  0x00000000
E: r3/a4:  0x00000004 r12/ip:  0x00086719 r14/lr:  0x0004d1d1
E:  xpsr:  0x21000000
E: r4/v1:  0x000a58e0  r5/v2:  0x000a539c  r6/v3:  0x00000000
E: r7/v4:  0x00000000  r8/v5:  0x00000000  r9/v6:  0x00000000
E: r10/v7: 0x00000000  r11/v8: 0x00000000    psp:  0x20034a50
E: EXC_RETURN: 0x0
E: Faulting instruction address (r15/pc): 0x0004d1e0
E: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
E: Current thread: 0x2000f5e8 (c2usb)
E: Resetting system

@benedekkupper
Copy link
Contributor Author

Thanks for the log, this helped me pinpoint and fix the issue. Care to take another shot at it? :)

@mondalaci
Copy link
Member

Crashing has been fixed, and the good and bad mentioned in #353 (comment) is unchanged.

According to Android, the UHK is connected after pairing, but the UHK displays Disconnected, and UHK key presses don't affect my phone.

This persists: Upon wake up, if I move the mouse pointer with any right module, such as the trackpoint module, the mouse pointer moves very quickly. If I stop moving the trackpoint, the mouse keeps moving in the last direction until I press a key or trigger a mouse action with a mouse key (on the mouse layer). I can only fix this behavior by resetting the right keyboard half.

@mondalaci
Copy link
Member

@benedekkupper Is there any reason why you can't test the persisting issues?

I'm asking because testing them is time-consuming. It would be much better if you could test them and only let me know when they're resolved.

@benedekkupper
Copy link
Contributor Author

The reason I ask you to test is because I don't experience the issues that you report (anymore), there was a problem with the BLE report sending similar to what you saw, that I fixed. I myself don't have any modules to test mouse movement with, so if you have a suggestion how to simulate it, then I can check it.

I have tried the BLE connection with Windows and Android, both are fine for me now.

This persists: Upon wake up, if I move the mouse pointer with any right module, such as the trackpoint module, the mouse pointer moves very quickly. If I stop moving the trackpoint, the mouse keeps moving in the last direction until I press a key or trigger a mouse action with a mouse key (on the mouse layer). I can only fix this behavior by resetting the right keyboard half.

Is this something that affects both BLE and USB, or only BLE?

@mondalaci
Copy link
Member

@kareltucek I can't use this branch with BLE. Please test BLE. I'm asking because I suspect a higher-level firmware issue is the culprit, not c2usb.

@benedekkupper We'll ship you modules.

@benedekkupper benedekkupper changed the title NCS 2.7.0 plus my USB changes again NCS 2.8.0 plus my USB changes again Nov 21, 2024
@kareltucek
Copy link
Contributor

kareltucek commented Nov 21, 2024

@kareltucek I can't use this branch with BLE. Please test BLE. I'm asking because I suspect a higher-level firmware issue is the culprit, not c2usb.

I can connect to Android phone, and input works, except cursor movement tears very much and the phone as a whole becomes laggy.

When trying to connect from a linux laptop, UHK disconnects:

Bt connected to unknown (98:5f:41:d2:92:3a)
Bt security failed: unknown (98:5f:41:d2:92:3a), level 1, err 9, disconnecting
Bt disconnected from unknown (98:5f:41:d2:92:3a), reason 35
NUS and HID advertising successfully started
W: opcode 0x200a status 0x0d
Bt connected to unknown (98:5f:41:d2:92:3a)
Bt security failed: unknown (98:5f:41:d2:92:3a), level 1, err 9, disconnecting
Bt disconnected from unknown (98:5f:41:d2:92:3a), reason 35
NUS and HID advertising successfully started
W: opcode 0x200a status 0x0d
Bt connected to unknown (98:5f:41:d2:92:3a)
Bt security failed: unknown (98:5f:41:d2:92:3a), level 1, err 9, disconnecting
Bt disconnected from unknown (98:5f:41:d2:92:3a), reason 35
NUS and HID advertising successfully started
W: opcode 0x200a status 0x0d
Bt connected to unknown (66:bc:e6:4a:4a:13)
Received passkey pairing inquiry.
Passkey for unknown (66:bc:e6:4a:4a:13): 107145
Type `uhk btacc 1/0` to accept/reject
Numeric Match, conn 0x2000d008
Bt connection secured: unknown (66:bc:e6:4a:4a:13), level 4, peerId -1
Pairing completed: unknown (d0:9c:ae:c8:28:cf), bonded 1
--- Pairing ended, success = 1: Successfuly bonded! ---
Advertising successfully stopped
Starting bluetooth services.
W: opcode 0x200a status 0x0d
E: Failed to start advertiser
NUS and HID advertising failed to start (err -12)
Scanning successfully started
I: starting HID app 1: 1

The first three attempts are from laptop, the last one is from the phone.

I am not sure why security fails with error 9 from laptop, but upon receiving the security_changed with level 1, we are indeed disconnecting - both because of security level 1, and because of receiving an error.

Is that what you asked about? Otherwise, please clarify your question.

@benedekkupper
Copy link
Contributor Author

Actually the most recent nRF Connect VSCode extension is able to do the whole build flow for me. Two things to pay attention to when setting up the build configuration:

  • uhk-80-right is the board that is always selected from any preset, this has to be manually corrected (the /nrf52840 at the end of the board name is nothing to worry about)
  • Choose no sysbuild option

Since I have no leads on what's wrong (I got the modules, but the cursor movement seems fine for me on Android, behaves just like a normal mouse cursor), instead I started to trim down on which BT features are active for which board. For that I needed to also modify the source code with precompiler switches, and more targeted cmake configuration (though this is not complete work, device/src/CMakeLists.txt should have no GLOBs in the final solution). For some reason the disabling of the USB interface during BLE HID operation was removed, I restored it. There's a lot of new things going on with the BT connection management since I last saw it, probably coming from the OOB pairing implementation?

@kareltucek
Copy link
Contributor

kareltucek commented Nov 26, 2024

For some reason the disabling of the USB interface during BLE HID operation was removed, I restored it.

Current bt code naively assumes that whenever a BLE connection is unidentified, it is a BLE HID connection. This is not always the case. If a dongle bonding gets removed/corrupted on right half side, then dongle is identified as a BLE HID connection.

When this happens, we want to recover the dongle via Agent, but disabling USB HID instantly disconnects Agent on dongle connection, which makes it impossible to recover such a dongle.

(Less importantly, the same goes for establishing a new BLE HID connection - we want to register it in host connections, but that is not easily possible since (again) when the BLE HID connection is established, Agent gets cut off.)

I am not at all clear on why we would want to disable USB HID when BLE HID gets connected. Maybe the USB_DisableHid is just badly named, or some important comment is missing (explaining some internal context)?

There's a lot of new things going on with the BT connection management since I last saw it, probably coming from the OOB pairing implementation?

Yes. They mostly deal with following:

  • ability to load and apply new settings
  • ability to stop a thing and then start it again
  • reliability - a lot of things used to (and some still do) report unclear error messages when asked to stop or restart

(Up until OOB pairing implementation, new settings were done by rebooting the board.)

(Definitely feel free to refactor / fix them. I know my bt code is not a very good one.)

@mondalaci
Copy link
Member

Now, I can connect via BLE to my phone.

The pointer drifting issue persists. Here's how to reproduce it:

  1. Connect your UHK 80 to a Linux computer or a MacBook.
  2. Put your computer to sleep using the UHK.
  3. Wait until the LEDs of the UHK go out, which typically takes several seconds or a minute.
  4. Wake the computer with a keypress. At the same time, circle around the pointer with the trackpoint module.
  5. Wait until the computer is awake and release the trackpoint.
  6. At this point, the mouse pointer keeps moving in the last direction which was active when releasing the trackpoint. You can move the pointer in another direction, and it'll keep moving when releasing the trackpoint.

@benedekkupper
Copy link
Contributor Author

@kareltucek can you instruct me on how to test this scenario of dongle connection corrupted, and manually reestablishing paired state with it?

benedekkupper and others added 25 commits December 16, 2024 15:40
also update battery level on BLE
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.
@benedekkupper
Copy link
Contributor Author

I think I fixed the dongle LED problem (I also moved the LED voltage fix to this branch), please check it.

@mondalaci mondalaci merged commit 83fc6be into master Dec 16, 2024
1 check failed
@mondalaci mondalaci deleted the usb-battery-if-2.7.0 branch December 16, 2024 18:20
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants