5.1.0 v trial#131
Closed
TedSjoblom wants to merge 7 commits into
Closed
Conversation
Rewrite mcap2keelson into a stateful MCAP replay daemon that preserves message timing, stays alive after EOF (optional looping), and exposes a McapReplayControl Zenoh RPC surface. The CLI and README were expanded with realm/entity/source/base-directory flags and runtime semantics; the connector now publishes a keelson.ReplayStatus envelope at 1 Hz. Added interfaces/McapReplayControl.proto and several payload proto messages, updated subjects, and refactored the replayer to use threaded replay/status loops, RPC handlers (load/play/pause/stop/seek/set_speed/set_loop/list_files), and safe publisher/reader management. Tests updated and a new end-to-end RPC test file added to validate the control surface and status broadcast. Minor test tweaks reflect default CLI args and the daemon lifecycle.
Enhance the MCAP replayer with playback controls, richer status, and more robust RPC handling; plus minor Foxglove shutdown fix and a MAVLink docker-compose. Key changes: - Add step, set_segment, and set_channel_filter RPCs and state handling (A-B segments, channel allowlist, step mode). - Make status broadcast richer: daemon info (version, hostname, started_at, base_directory), segment/filter/load progress, last_load_error; publish cadence 5Hz while PLAYING, 1Hz otherwise; RPC mutators emit immediate samples. - Add async load worker with progress reporting and serialized loads (_LOAD_LOCK); load_file now accepts and returns OK while worker performs the load (errors reported via replay_status). - Introduce typed ErrorResponse codes for programmatic error handling and return appropriate codes for common error conditions (INVALID_STATE, OUT_OF_RANGE, PERMISSION_DENIED, NOT_FOUND, INTERNAL). - Improve replay loop: EOF handling, loop-to-segment support, clamp played counts, seek-to-segment bounds, and better logging with [LOAD]/[REPLAY]/[STATE] prefixes. - Add request summarizers and a dispatch wrapper that logs RPC entry/exit and durations; track reply outcomes for better operator-visible audit logs. - Implement immediate status publish helper and global publisher handle to allow RPC threads to push updates. - Make --base-directory default to parent of --mcap-file when given; update CLI help and tests accordingly. - Fix Foxglove websocket publisher shutdown to fully drain queue and use a timed join; remove unused import. - Add connectors/mavlink/docker-compose.mavlink.yml for a recommended MAVLink container setup. - Update tests to cover new CLI help text, daemon info in status, and error-code assertions. Minor: various logging improvements, defensive clamping of counters, and internal refactors to centralize state transitions and logging.
Update astral-sh/setup-uv from v4 to v7 across repository workflows and documentation. Changed references in .github/CLAUDE.md, .github/workflows/ci.yml, and .github/workflows/release.yml so CI, release jobs, and docs use the newer uv installer version for workspace sync, protoc, and language-specific jobs.
Switch the dev container to build from .devcontainer/Dockerfile instead of the base image + features, and ignore the generated devcontainer-lock.json. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PyPI no longer serves any foxglove-sdk 0.4.x (lowest available is 0.5.0), so the old >=0.4.0,<0.5.0 pin made a clean `uv sync --all-packages` and the Docker image build unsatisfiable. Bump to the next minor; the connector's API surface (foxglove.Channel/Schema, foxglove.websocket Capability/ChannelView/Client/ ServerListener, start_server, set_log_level) is unchanged in 0.5.0 and the foxglove connector tests pass. Lockfile update accompanies the next commit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New connector `labjack2keelson` reads analog inputs (AIN registers) from a LabJack T4/T7/T8 over the labjack-ljm library and publishes voltage to the bus. - Per-channel high-voltage scaling: resistor divider (R1/R2) or scale/offset (covers LJTick-Divider ratios and linear sensor calibration). - New generic subject `analog_voltage_v` (keelson.TimestampedFloat); a channel may also target an existing subject (e.g. battery_voltage_v). - JSON config (config-schema.json validated) + live `set_config` RPC. - `--simulate` mode runs without hardware (used by e2e tests); the native LJM library is bundled into the Docker image (headless install, --without-kipling --no-restart-device-rules, BASH_ENV neutralized for the base image's hook). Wires the connector into the uv workspace, root pyproject testpaths, Docker image, CI docker-build smoke test, conftest BINARY_NAME_MAP, and the connector docs table. Also captures the foxglove-sdk 0.5.0 resolution in uv.lock. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Introduce Keelson parameter metadata: add a ParameterMetadata proto, a bundled messages/parameter_definitions.yaml, and register a new "parameter_metadata" subject. Update the Python SDK to load bundled parameter definitions and expose get_parameter_definitions()/get_parameter_definition(). Update the MAVLink connector to guard-import the new proto, build and republish the ParameterMetadataList at startup (and every 30s for late subscribers), and add telemetry subjects for navigation_target_echo, mission_current_seq and fence_enabled (with logic to only emit fence_enabled when a geofence subsystem is present). Add tests covering mapping and parameter metadata encoding/behavior, update docs (README / ZENOH_API) to describe the new subjects, copy parameter_definitions.yaml in the SDK generator, and ignore the generated parameter_definitions in .gitignore. Guards ensure compatibility with older SDK builds that lack the new type.
Contributor
|
Closing — this is the
Every file on this branch is covered by the PRs above except The split also incorporated review fixes (e.g. #147 reworks the shutdown escalation to genuinely double-press-to-force) and notes follow-up bugs on #150. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.