pvxs-client

Implement EPICS PV Access clients in C++ using pvxs for typed operations.

1|1|Updated Apr 14, 2026
One-click install
npx skills add https://github.com/BCDA-APS/opencode-skills --skill pvxs-client
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pvxs-client
Source: https://github.com/BCDA-APS/opencode-skills/tree/main/pvxs-client
Command: npx skills add https://github.com/BCDA-APS/opencode-skills --skill pvxs-client

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It helps you write robust EPICS PV Access (PVA) client applications in C++ using pvxs, handling gets, puts, monitors, and RPC with correct typing and operation lifetimes.

Core Features & Use Cases

  • Typed PV interactions with pvxs::Value: Build and manipulate PV value trees using TypeDef and normative types (NTScalar, NTEnum, NTTable, NTNDArray, NTURI).
  • Get/Put/Monitor/RPC workflows: Perform synchronous and asynchronous operations with proper result handling and timeouts.
  • Efficient updates via field selection and change tracking: Use marked fields so network operations transfer only what changed.
  • Safe monitoring patterns: Subscribe to PV updates, enqueue work from the event callback, and drain updates using pop() with correct exception handling.

Quick Start

Use the pvxs-client skill to write a small C++ program that connects to a PV name from the command line and performs a GET, a PUT, and a continuously running MONITOR until SIGINT is received.

Frequently Asked Questions about pvxs-client

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a C++ EPICS PV Access client to handle Get, Put, and Monitor operations?

Use the pvxs::client API to manage context, build typed pvxs::Value trees, and execute asynchronous PVA operations like Get, Put, Monitor, and RPC with proper lifetime management.

What is the correct way to handle EPICS PV Access monitor callbacks in C++ without blocking?

PV Access monitor callbacks should enqueue work from the event callback and drain updates using pop() with correct exception handling to ensure network operations transfer only changed fields safely.

How do I build pvRequest field selection for EPICS PV Access clients?

Build pvRequest-style field selection and record options to specify exact PV data requirements, enabling efficient network operations by transferring only marked fields and tracked changes.

Can I use normative types like NTScalar and NTEnum with PV Access clients in C++?

Yes, you can build and manipulate PV value trees using TypeDef and normative types including NTScalar, NTEnum, NTTable, NTNDArray, and NTURI for correct typed data interactions.

How do I manage operation lifetimes safely in an EPICS PV Access C++ service?

Manage operation lifetimes safely by leveraging pvxs::client context management and handling asynchronous operation results with appropriate timeouts to prevent premature cleanup.

Does pvxs support asynchronous RPC workflows with EPICS PVs?

Yes, pvxs supports synchronous and asynchronous RPC workflows alongside PVA Get, Put, Monitor, Info, and Connect scenarios, providing proper result handling and timeout management.