#zenoh #camera #gen-i-cam #vision

viva-zenoh-api

Shared Zenoh API payload types for GenICam camera services (no Zenoh dependency)

4 releases

Uses new Rust 2024

0.2.3 Apr 12, 2026
0.2.2 Apr 12, 2026
0.2.0 Apr 11, 2026
0.1.0 Apr 11, 2026

#15 in #gen-i-cam


Used in viva-service

MIT license

37KB
685 lines

viva-zenoh-api

Shared wire protocol types for GenICam camera services over Zenoh.

This crate defines the data contract between a camera service (viva-service) and its clients (e.g. genicam-studio). It has no Zenoh dependency -- it is a pure data contract built on serde.

Disclaimer -- Independent open-source Rust implementation of GenICam-related standards. Not affiliated with, endorsed by, or the reference implementation of EMVA GenICam. GenICam is a trademark of EMVA.

Features

  • Discovery -- DeviceAnnounce, DeviceStatus
  • Node values -- NodeValueUpdate, NodeSetRequest, NodeOpResponse, bulk read types
  • Acquisition -- AcquisitionCommand, AcquisitionStatus
  • Image framing -- PixelFormat, ImageMeta, FrameHeader (16-byte binary header)
  • Key expressions -- helper functions for building Zenoh topic paths

Usage

[dependencies]
viva-zenoh-api = "0.1"
use viva_zenoh_api::{DeviceAnnounce, NodeValueUpdate, keys};

let key = keys::node_value("camera-01", "ExposureTime");
assert_eq!(key, "viva-genicam/devices/camera-01/nodes/ExposureTime/value");

Documentation

API reference (docs.rs)

Part of the viva-genicam workspace.

Dependencies

~0.5–1.3MB
~28K SLoC