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.