Radio Link Tester
Projekt embedded do testowania linku radiowego, bazowany na:
CMake jako system builda
czysta architektura (core / app / platform)
testy hostowe (PC)
brak zależności od vendor IDE
Struktura projektu .
├── core/ # logika niezależna od sprzętu (C)
├── app/ # warstwa orchestration (C)
├── platform/ # implementacje dla MCU (BlueNRG-LP)
├── tests/ # testy hostowe (C++)
├── cmake/ # toolchainy i konfiguracja
└── CMakeLists.txt
Architektura
Pipeline przetwarzania:
bytes → radio_frame → tester_protocol → tester_sm → state radio_frame – parsowanie i walidacja ramki tester_protocol – mapowanie ramki na event tester_sm – state machine testera app_controller – spina całość
Wymagania Linux
Zainstaluj:
sudo apt install cmake ninja-build gcc g++ git ARM toolchain sudo apt install gcc-arm-none-eabi
Build i testy (host) cmake -S . -B build -G Ninja -DBUILD_TESTS=ON -DBUILD_FIRMWARE=OFF cmake --build build ctest --test-dir build --output-on-failure
Build firmware (BlueNRG-LP)
cmake -S . -B build-fw -G Ninja
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/arm-gcc.cmake
-DBUILD_TESTS=OFF
-DBUILD_FIRMWARE=ON
cmake --build build-fw
Wyniki builda firmware
Po buildzie:
build-fw/platform/bluenrg_lp/
├── bluenrg_lp_firmware # ELF
├── bluenrg_lp_firmware.bin
├── bluenrg_lp_firmware.hex
├── bluenrg_lp_firmware.map
Przydatne komendy Rozmiar firmware arm-none-eabi-size build-fw/platform/bluenrg_lp/bluenrg_lp_firmware Sekcje arm-none-eabi-objdump -h build-fw/platform/bluenrg_lp/bluenrg_lp_firmware
Testowanie
Testy działają na PC i obejmują:
parser ramek state machine protokół pełny flow (app_controller)
Status
Aktualnie:
✔ działający build hostowy
✔ testy jednostkowe
✔ firmware target dla BlueNRG-LP
✔ generowanie ELF / BIN / HEX
✔ podstawowa architektura
TODO platform layer (UART / radio input) integracja BLE stack CI (GitHub Actions) kolejne platformy (STM32WB)
Założenia projektowe brak overengineeringu testowalność od początku separacja logiki od hardware CMake jako jedyny system builda
Licencja
TBD