Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ name: Assembly
# builds them together — the cross-component integration each component's own
# CI cannot catch on its own. The assembled set is the components whose
# renames/migrations are mutually consistent (ADR 0003 lockstep):
# - xmBase + xmDriver build; xmTelemetry is cloned (pin/wiring validated)
# but stays TELEMETRY=OFF until the pinned xmBase carries the telemetry
# API it builds against (xmBase PR #18).
# - xmBase + xmTelemetry + xmDriver build together (the telemetry wave:
# xmBase v0.3.0, the SDK, and the instrumented drivers).
# - xmNavigation returns when its HAL migration lands (it still includes
# pre-redesign xmDriver headers, e.g. xmdriver/hal/*_interface.hpp).

Expand All @@ -21,7 +20,7 @@ env:

jobs:
assemble:
name: Assemble (base + driver)
name: Assemble (base + telemetry + driver)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -57,12 +56,12 @@ jobs:
- name: Install dependencies (union of component deps)
run: |
sudo apt-get update && sudo apt-get install -y \
libeigen3-dev libspdlog-dev libasio-dev libmodbus-dev libevent-dev \
libeigen3-dev libasio-dev libmodbus-dev libevent-dev \
libevdev-dev libgl1-mesa-dev libglfw3-dev libcairo2-dev libtbb-dev \
libboost-all-dev libgsl-dev libopencv-dev libyaml-cpp-dev \
libncurses-dev libpcl-dev libglm-dev

- name: Configure assembly (base + driver)
- name: Configure assembly (base + telemetry + driver)
run: >
cmake -S . -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE
-DXMOTION_WITH_NAVIGATION=OFF -DENABLE_VISUALIZATION=OFF
Expand Down
4 changes: 1 addition & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# -- Options ----------------------------------------------------------------
# xmBase (foundation) is always built. The rest are opt-in so a consumer only
# pays for the dependency footprint it actually needs.
# xmTelemetry stays OFF until the pinned xmBase carries the telemetry API it
# builds against (xmBase PR #18 / ABI v3) — flip ON at the next re-pin wave.
option(XMOTION_WITH_TELEMETRY "Build xmTelemetry (observability SDK)" OFF)
option(XMOTION_WITH_TELEMETRY "Build xmTelemetry (observability SDK)" ON)
option(XMOTION_WITH_DRIVER "Build xmDriver (host hardware drivers)" ON)
option(XMOTION_WITH_NAVIGATION "Build xmNavigation (motion algorithms)" ON)
option(XMOTION_WITH_VIEWER "Build xmViewer (visualization)" OFF)
Expand Down
4 changes: 2 additions & 2 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ The task tracker for the family. Cross-repo sequencing lives here; each componen

- [x] xmBase: merge PR [#18](https://github.com/rxdu/xmBase/pull/18) (telemetry docs package + examples + ABI v3)
- [x] xmBase: cut v0.3.0 (telemetry API baseline — released 2026-07-05)
- [ ] xmDriver: migrate `XLOG_*` → `XM_*` telemetry API (one-touch, clean break); adopt driver signals (FreshnessMonitor age, tx-queue depth, fault counters, DeviceHealth) through the API
- [ ] Umbrella: re-pin xmBase + xmDriver after the migration; flip `XMOTION_WITH_TELEMETRY=ON` in the assembly
- [x] xmDriver: migrate `XLOG_*` → `XM_*` telemetry API + adopt driver signals through the API (PRs #29 + #30)
- [~] Umbrella: re-pin xmBase + xmDriver + telemetry; `XMOTION_WITH_TELEMETRY=ON` (PR #16, awaiting merge)
- [x] xmBase: replace the interim spdlog binding with the permanent dependency-free console binding (shipped in v0.3.0 — spdlog left the foundation)
- [ ] xmNavigation: HAL migration + telemetry-instrumented refactor (includes ADR 0002 Phase-2 decoupling: drop bundled `third_party/xmMu`/`xmSigma` copies, depend on the renamed components)
- [ ] Umbrella: re-pin xmNavigation; flip `XMOTION_WITH_NAVIGATION=ON` — full assembly returns
Expand Down
2 changes: 1 addition & 1 deletion components/base
Submodule base updated 62 files
+10 −12 .github/workflows/cpp.yml
+2 −3 .github/workflows/release.yml
+1 −1 .github/workflows/ros.yml
+30 −65 CLAUDE.md
+19 −38 CMakeLists.txt
+16 −18 README.md
+0 −1 cmake/xmBaseConfig.cmake.in
+138 −0 docs/telemetry/guide.md
+92 −0 docs/telemetry/reference.md
+4 −3 docs/xmbase.svg
+17 −8 examples/CMakeLists.txt
+15 −0 examples/README.md
+0 −64 examples/ctrl_logger_example.cpp
+162 −0 examples/custom_binding_example.cpp
+101 −0 examples/device_health_example.cpp
+103 −0 examples/instrumented_control_loop_example.cpp
+0 −52 examples/mpsc_rt_logger_example.cpp
+0 −40 examples/rt_logger_example.cpp
+95 −0 examples/trace_pipeline_example.cpp
+7 −7 examples/types_example.cpp
+130 −0 examples/worker_pool_context_example.cpp
+0 −55 examples/xlogger_example.cpp
+54 −0 examples/xm_logging_example.cpp
+4 −4 include/xmbase/container/ring_buffer.hpp
+0 −60 include/xmbase/logging/csv_logger.hpp
+0 −54 include/xmbase/logging/ctrl_logger.hpp
+0 −29 include/xmbase/logging/details/default_logger.hpp
+0 −50 include/xmbase/logging/details/logger_interface.hpp
+0 −71 include/xmbase/logging/details/logger_vendor_spdlog.hpp
+0 −130 include/xmbase/logging/details/logging_utils.hpp
+0 −16 include/xmbase/logging/details/spdlog_headers.hpp
+0 −63 include/xmbase/logging/details/specialized_logger.hpp
+0 −77 include/xmbase/logging/event_logger.hpp
+0 −213 include/xmbase/logging/rt_logger.hpp
+0 −123 include/xmbase/logging/rt_logger_mpsc.hpp
+0 −129 include/xmbase/logging/xlogger.hpp
+318 −0 include/xmbase/telemetry/binding.hpp
+123 −0 include/xmbase/telemetry/context.hpp
+262 −0 include/xmbase/telemetry/event.hpp
+118 −0 include/xmbase/telemetry/handles.hpp
+36 −0 include/xmbase/telemetry/health.hpp
+116 −0 include/xmbase/telemetry/span.hpp
+30 −0 include/xmbase/telemetry/telemetry.hpp
+29 −0 include/xmbase/telemetry/time.hpp
+1 −1 include/xmbase/types/scalar.hpp
+1 −1 include/xmbase/types/time.hpp
+0 −116 src/ctrl_logger.cpp
+0 −29 src/default_logger.cpp
+0 −126 src/logger_vendor_spdlog.cpp
+0 −92 src/rt_logger.cpp
+0 −99 src/rt_logger_mpsc.cpp
+597 −0 src/telemetry_console_binding.cpp
+205 −0 src/telemetry_unbound.cpp
+7 −23 test/CMakeLists.txt
+0 −109 test/test_csv_logger.cpp
+0 −94 test/test_ctrl_logger.cpp
+0 −80 test/test_event_logger.cpp
+375 −0 test/test_logging.cpp
+0 −267 test/test_mpsc_rt_logger.cpp
+0 −409 test/test_rt_logger.cpp
+398 −0 test/test_telemetry_api.cpp
+0 −142 test/test_xlogger.cpp
2 changes: 1 addition & 1 deletion components/driver
Submodule driver updated 44 files
+12 −12 .github/workflows/cpp.yml
+3 −4 .github/workflows/release.yml
+2 −2 .github/workflows/ros.yml
+1 −1 CLAUDE.md
+10 −1 CMakeLists.txt
+3 −3 README.md
+2 −2 TODO.md
+1 −1 docs/LESSONS.md
+1 −1 docs/adr/0003-hal-completion-and-hardening.md
+4 −3 docs/xmdriver.svg
+11 −0 src/devices/input_hid/include/input_hid/evdev_joystick.hpp
+11 −0 src/devices/input_hid/include/input_hid/evdev_keyboard.hpp
+11 −4 src/devices/input_hid/src/evdev_joystick.cpp
+11 −5 src/devices/input_hid/src/evdev_keyboard.cpp
+8 −8 src/devices/input_hid/src/evdev_reader.cpp
+13 −0 src/devices/input_sbus/include/input_sbus/sbus_receiver.hpp
+30 −20 src/devices/input_sbus/src/sbus_receiver.cpp
+2 −2 src/devices/input_sbus/test/test_sbus.cpp
+9 −0 src/devices/motor_akelc/include/motor_akelc/motor_akelc.hpp
+31 −16 src/devices/motor_akelc/src/motor_akelc.cpp
+18 −18 src/devices/motor_akelc/src/motor_akelc_modbus.cpp
+10 −0 src/devices/motor_vesc/include/motor_vesc/vesc_can_interface.hpp
+11 −0 src/devices/motor_vesc/include/motor_vesc/vesc_motor.hpp
+21 −26 src/devices/motor_vesc/src/vesc_can_interface.cpp
+24 −13 src/devices/motor_vesc/src/vesc_motor.cpp
+1 −1 src/devices/motor_vesc/test/devel/test_vesc_driver.cpp
+14 −0 src/devices/motor_waveshare/include/motor_waveshare/ddsm_210.hpp
+21 −10 src/devices/motor_waveshare/src/ddsm_210.cpp
+5 −5 src/devices/motor_waveshare/src/ddsm_210_frame.cpp
+3 −1 src/devices/motor_waveshare/src/servo/SCSerial.cpp
+36 −13 src/devices/motor_waveshare/src/sms_sts_servo_impl.cpp
+13 −0 src/devices/sensor_imu/include/sensor_imu/imu_hipnuc.hpp
+1 −1 src/devices/sensor_imu/src/ch_serial.c
+21 −10 src/devices/sensor_imu/src/imu_hipnuc.cpp
+96 −0 src/hal/include/xmdriver/hal/health_telemetry.hpp
+7 −0 src/hal/test/CMakeLists.txt
+140 −0 src/hal/test/test_health_telemetry.cpp
+12 −0 src/transport/async_port/include/async_port/async_can.hpp
+13 −0 src/transport/async_port/include/async_port/async_serial.hpp
+17 −9 src/transport/async_port/src/async_can.cpp
+20 −13 src/transport/async_port/src/async_serial.cpp
+9 −0 src/transport/modbus_rtu/include/modbus_rtu/modbus_rtu_port.hpp
+20 −15 src/transport/modbus_rtu/src/modbus_rtu_port.cpp
+1 −1 third_party/xmBase
2 changes: 1 addition & 1 deletion components/telemetry