Skip to content

refactor(gateway): the core captures entity freeze frames - #761

Open
bburda wants to merge 5 commits into
feat/gateway-core-9-core-sampling-bulkdatafrom
feat/gateway-core-10-core-freeze-frames
Open

bburda wants to merge 5 commits into
feat/gateway-core-9-core-sampling-bulkdatafrom
feat/gateway-core-10-core-freeze-frames

Conversation

@bburda

@bburda bburda commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

Pull Request

Summary

FreezeFrameCapture in the core captures the data of the entity a fault belongs to when the fault is confirmed, and serves it through FreezeFrameSource (environment_data of the fault). It is fed by a FaultEventSource and reads data the way the data route does. The node's EntityFreezeFrameCapture is now an adapter over it and keeps its parameters and behaviour.

FaultEventFanOut lets one FaultEventSource serve several subscribers, for example the fault SSE stream and the capture, because subscribe replaces an earlier callback.


Issue


Type

  • Bug fix
  • New feature or tests
  • Breaking change
  • Documentation only

Testing

  • scripts/check_cores_without_ros/run.sh: a confirmation captures the value at the moment of confirmation, the bound evicts the oldest fault, and one event source shared through the fan-out reaches both the SSE stream and the capture.
  • ./scripts/test.sh integ --packages-select ros2_medkit_integration_tests covers the node path (test_entity_freeze_frame, test_standing_fault_freeze_frame).

Checklist

  • Breaking changes are clearly described (and announced in docs / changelog if needed)
  • Tests were added or updated if needed
  • Docs were updated if behavior or public API changed

A program that hosts the core attaches FreezeFrameCapture to its own fault events and gets freeze frames in the fault detail, read through the same plugin data path as GET /{entity}/data. The ROS node keeps its parameters and frames and feeds the same class from the fault manager's events topic.
…ateway-core-10-core-freeze-frames

# Conflicts:
#	src/ros2_medkit_gateway/README.md
FaultEventFanOut subscribes upstream once and gives each consumer its own branch, so the fault SSE stream and the freeze-frame capture can share a host's single FaultEventSource. The ROS-free check drives both from one source and requires the confirmation in the SSE stream and as a freeze frame.
…s deleted

The branch is held by pointer and registered by address, so copying or moving it is never valid.
@bburda bburda self-assigned this Oct 26, 2026
@bburda
bburda added this pull request to stack #759 October 26, 2026 19:47

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant