5ed07253d8d981f3874d047d02aa158e06448764
Allow repeated speed-mileage time-segmented schemes to use either the original start-boundary timestamp form or the segment-end timestamp form emitted by older clients. For RSMT schemes whose first time segment starts at zero, keep switching against the next segment boundary. For schemes whose first time is non-zero, treat each timestamp as the current segment's end time so payloads such as 120/240/360 are accepted and scheduled correctly. Defer eligible time-segment changes until the track mileage reaches the configured line-length boundary after movement, matching the legacy app-track behavior that avoided mid-line speed pattern changes. Add runtime tests covering line-end switching and non-zero first time segment acceptance. Verification: cmake --build build && ctest --test-dir build --output-on-failure
track-core
Standalone C++ core for TrackBackFwd track simulation and strip rendering.
This library is intentionally platform-neutral. It does not depend on ESP-IDF, FreeRTOS, protobuf/nanopb, BLE, or hardware LED drivers.
Build
cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failure
When used inside an ESP-IDF project under components/track-core, the same
CMakeLists.txt registers an IDF component.
Python bindings
The Python package builds a nanobind extension for the emulator-facing API:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e ".[emulator,test]"
python -m pytest python/tests
python -m track_core.emulator
The DearPyGui emulator can either render a manual static report for boundary checks or load an SM, MT, ST, or RSMT scheme and tick the portable training runtime with explicit frame deltas. Both paths render pixels through the same C++ planner used by firmware adapters.
Description
Languages
C++
70.6%
Python
28.3%
CMake
1.1%