Skip to content

sensing: report camera faults and offer the management channel from the producer - #1469

Closed
gareth-morgan-nv wants to merge 2 commits into
gmorgan/EgoCapVideoStage/Producerfrom
gmorgan/EgoCapVideoStage/ProducerControl
Closed

gareth-morgan-nv wants to merge 2 commits into
gmorgan/EgoCapVideoStage/Producerfrom
gmorgan/EgoCapVideoStage/ProducerControl

Conversation

@gareth-morgan-nv

@gareth-morgan-nv gareth-morgan-nv commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The producer reports camera faults and offers the management channel. A camera that cannot start (no power cable, no GMSL link) no longer ends the producer: a supervisor reports the fault in plain words, retries, and resumes streaming once it is fixed.

  • An optional WebSocket management channel (off unless --control-token-file names a shared secret) reports status and the fault and retargets a stream's direct link to a new PC address at run time. SIPL pipeline notifications are named so the fault table can tell a lost link from a failing sensor, and the driver's own log lines are captured with a start failure.
  • The producer binary links sensing::control and installs under a producer install component, which the deploy script packages.

Depends on two PRs. The management channel and the producer's supervisor are #1465, which is based on the LiveKit producer; this branch is based on the producer PR (#1468), which sends video over the direct link instead. A PR has one base, so the branch carries #1465's library and the same producer wiring ported to this producer's capture backends. What this PR adds to that is the direct link: set_direct_target retargets a stream's direct link to a new PC address at run time, and each stream's status reports its direct host, port, connection and error. After #1465 merges, this branch is rebased and the repeated library and wiring commits are dropped, which will need conflict resolution in main.cpp and the plugin README.

Validation

  • Compiled and linked on a Jetson Orin (SIPL build) with the Jetson Multimedia API and SIPL headers: camera_plugin_sensing built and a release was packaged, not started. The library's sensing_control_tests (90 cases) pass on a PC; pre-commit and clang-format-14 are clean.
  • Not run: the management channel and the fault path have never run on hardware; no camera has been unplugged against it. Only one camera has been streamed to the PC, and no latency claim is made.

🤖 Generated with Claude Code

gareth-morgan-nv and others added 2 commits November 10, 2026 14:40
An authenticated WebSocket server, a JSON request handler, the status a producer reports, a
supervisor that retries a camera that cannot start, a plain-language fault table and a capture of
the camera driver's own log lines. It has no video, camera-SDK or GPU dependency, so it builds
and its unit tests run on a PC with BUILD_SENSING_CONTROL=ON. A standard-library client,
tools/orin_control.py, drives the channel from the command line.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
…he producer

A camera that cannot start (no power cable, no GMSL link) no longer ends the producer: a
supervisor reports the fault in plain words, retries, and resumes streaming once it is fixed.
An optional WebSocket management channel (off unless --control-token-file names a shared secret)
reports status and the fault, and retargets a stream's direct link to a new PC address at run
time. SIPL pipeline notifications are named so the fault table can tell a lost link from a
failing sensor, and the camera driver's own log lines are captured with a start failure.

The producer binary now links sensing::control and installs under a `producer` component.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: Gareth Morgan <gmorgan@nvidia.com>
@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@gareth-morgan-nv

Copy link
Copy Markdown
Contributor Author

Closing as superseded: the camera path is now the camera_streamer architecture (SIPL/Argus sender, AVS1 over TCP, PC receiver and LiveKit bridge; see #1473-#1479). Not merged; the branch and commits are kept.

🤖 Generated with Claude Code

@gareth-morgan-nv

Copy link
Copy Markdown
Contributor Author

This PR is superseded by the camera_streamer PRs:

🤖 Generated with Claude Code

This branch was successfully deployed

1 active deployment
dev — 35771bee Deployed Nov 11, 2026 by gareth-morgan-nv via publish-wheel #6741
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants