• C++ 67.3%
  • Java 14.3%
  • C 11.7%
  • TypeScript 1.6%
  • CMake 1.6%
  • Other 3.5%
Find a file
2026-08-19 13:10:57 +02:00
.claude/skills/pr-review sharpen review skill 2026-08-12 11:00:08 +02:00
.github ci: install yaml-cpp and nlohmann-json dev packages 2026-07-03 10:43:00 +02:00
build-environment PI4 is not used and also we do not have plans to use it, so lets remove it 2026-05-13 13:55:29 +02:00
cmake fixup yocto-build 2026-07-05 21:42:38 +02:00
configuration fixed chirp info texts to use ascii characters when quoting via escape sequence - reducing build warnings 2026-08-19 11:00:15 +02:00
doc updated doc once more 2024-06-11 15:46:26 +02:00
hooks wip 2026-03-31 12:28:11 +02:00
os PI4 is not used and also we do not have plans to use it, so lets remove it 2026-05-13 13:55:29 +02:00
package Merge pull request #5145 from nonlinear-labs-dev/chirp-gain-before-lp 2026-08-05 16:57:51 +02:00
update let teh device simulate a ethernet device via usb, so we can access it without additional network hardware 2026-05-05 18:09:34 +02:00
.clang-format fix midi timing 2019-03-07 18:57:10 +01:00
.gitattributes finish STM integration for hall-keybed-scanner 2026-03-11 12:01:17 +01:00
.gitignore left-control-panel : fix ADC sampling 2026-04-16 21:06:37 +02:00
.gitmodules use shared compose-lvgl as submodule 2026-07-03 10:23:48 +02:00
AGENTS.md Merge remote-tracking branch 'origin/next-milestone' into stm-cubemx-cleanup 2026-07-04 13:14:30 +02:00
CMakeLists.txt change include catch2 to submodule instead of FetchContent 2025-12-09 13:39:56 +01:00
CMakePresets.json stm-firmware: skip CubeMX generation and cross-build in tests-only host builds 2026-06-10 12:00:20 +02:00
COPYING.md incorporate review comments 2024-07-05 08:51:50 +02:00
dos2unix_all.bat CRLF-->LF conversion stuff 2020-06-10 19:17:56 +02:00
README.md bump reactive and update (ubuntu) package documentation 2026-07-04 15:45:51 +02:00
reformat-all.sh fix reformat-all.sh 2023-04-05 11:10:47 +02:00

Run Unit Tests

nl Firmware

prepare environment

On Ubuntu, install the packages needed to configure and build the project:

sudo apt-get update
sudo apt-get install -y \
  bindfs ccache cmake fuse-overlayfs jq make podman pkg-config \
  build-essential \
  gcc-arm-none-eabi \
  libasound2-dev libboost-all-dev libflac-dev libfreetype6-dev \
  libglibmm-2.4-dev libgtkmm-3.0-dev libpng-dev libpng++-dev \
  libsdl2-dev libsoup2.4-dev libusb-1.0-0-dev \
  libyaml-cpp-dev nlohmann-json3-dev \
  uuid-dev
  • libyaml-cpp-dev and nlohmann-json3-dev are required by compose-lvgl (via pkg-config)
  • gcc-arm-none-eabi is only needed when building STM firmware targets
  • lcov is only needed for coverage builds (see Build Tests with coverage)

Additional setup:

  • edit /etc/fuse.conf: uncomment (or add) user_allow_other
  • for podman rootless builds with fuse-overlayfs, set the storage mount program: echo 'mount_program="/usr/bin/fuse-overlayfs"' | sudo tee /etc/containers/storage.conf

Prepare build directory

  • git clone git@github.com:nonlinear-labs-dev/C15.git C15
  • git submodule update --init --recursive
  • cd C15
  • cmake --preset dev-debug
    • the dev-debug preset already contains default binary and install directories
      • if desired, provide a custom binary directory (-B), e.g. outside the repository folder by adding -B ../build
      • if desired, provide a custom install directory (CMAKE_INSTALL_PREFIX), e.g. outside the repository folder by adding -DCMAKE_INSTALL_PREFIX=../nl-rootfs
    • for building yocto-based updates it is recommended to provide a cache folder by adding -DYOCTO_SHARED_CACHE_DIR="<desired_yocto_cache_dir>"
    • if desired, choose another cmake preset, e.g. dev-release

Build binaries for local development PC

  • cmake --build --preset dev-debug --target install

Build Update for C15

  • cmake --build --preset dev-debug --target update-c15

Build Tests with coverage

  • install lcov
  • configure cmake with -DENABLE_COVERAGE=On
  • build <target>-coverage and inspect results in build-dir/package/<target>/<target>-coverage

For developing the meteor package

  • start either c16-playground or c15-playground
  • make meteor-dev-environment-base
  • wait until settled
  • open with your ide: ...build-folder/package/meteor/ide
  • open in browser: http://localhost:3000/index.html?page=[c16 | c16Debug |nonmaps | nonmapsPresetSearch]
  • if needed for developing NonMaps: see For developing NonMaps

Debugging a remote meteor UI

  • start ssh-tunnel to target ssh -L 9222:localhost:9222 sscl@raspi-ip
  • open chrome on the developer-pc and navigate to chrome://inspect/#devices
  • navigate to Devices and select inspect for the c16 URL below the Remote Target #LOCALHOST heading (this might take a few seconds to show up)

For developing NonMaps

  1. Once: configure using cmake --preset dev-nonmaps --fresh
  2. After every commit:
  3. run cmake --build --preset dev-nonmaps
  4. start the c15-playground
  5. Enable gwt compile as documented here. In short:
  • navigate to package/nonmaps/
  • run mvn gwt:devmode (once install maven if not done yet)
  1. Then, open localhost:8080 in the browser

Useful: Save the following bookmarks to your browser:

  • "nonmaps: enable dev mode": javascript:%7B window.__gwt_bookmarklet_params %3D %7B'server_url'%3A'http%3A%2F%2Flocalhost%3A9876%2F'%7D%3B var s %3D document.createElement('script')%3B s.src %3D 'http%3A%2F%2Flocalhost%3A9876%2Fdev_mode_on.js'%3B void(document.getElementsByTagName('head')%5B0%5D.appendChild(s))%3B%7D
  • "nonmaps: compile": javascript:%7B window.__gwt_bookmarklet_params %3D %7Bserver_url%3A'http%3A%2F%2Flocalhost%3A9876%2F'%2Cmodule_name%3A'nonmaps'%7D%3B var s %3D document.createElement('script')%3B s.src %3D 'http%3A%2F%2Flocalhost%3A9876%2Fdev_mode_on.js'%3B void(document.getElementsByTagName('head')%5B0%5D.appendChild(s))%3B%7D

Show the developer options, if needed:

  1. in the Web UI, enable Setup > GUI Settings > Show Developer Options
  2. scroll to the north where the "Developer Options" box should be shown now