epics-device-support

Implement EPICS device support with dset tables and DBD registration.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It helps you implement EPICS device support that correctly connects record types to your hardware driver logic, including synchronous and asynchronous I/O, scan/event integration, and IOC shell configuration.

Core Features & Use Cases

  • Device support entry tables (dset): Define record-to-driver function pointer tables for supported EPICS record types (e.g., ai/ao/bi/bo/longin/stringin/waveform and more).
  • DBD declarations and IOC shell registration: Publish device support choices via DBD and register configuration commands and variables for use in st.cmd.
  • Async and I/O Intr scanning patterns: Implement non-blocking read/write flows using PACT and callbacks, plus event-driven updates using "I/O Intr" scan lists.

Quick Start

Use this skill to write the C/C++ device support for an ai record by defining an init_record that parses the INP link, a read_ai function that reads hardware (optionally asynchronously), and a matching dset exported from your support module.

Frequently Asked Questions about epics-device-support

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

FAQPage Schema
How do I write EPICS device support for an ai record?

To implement EPICS device support for an ai record, define an init_record function to parse the INP link and a read_ai function to handle hardware reads, then map these functions into a device support entry table (dset) exported from your support module.

How does asynchronous I/O work in EPICS device drivers?

Asynchronous I/O in EPICS device drivers uses the PACT flag to manage non-blocking read and write operations, allowing the record processing to yield and resume later when hardware communication finishes via callback-driven record reprocessing.

How do I trigger EPICS record processing using I/O Intr scanning?

I/O Intr scanning triggers EPICS record processing through event-driven updates, where your device driver uses safe callbacks to reprocess records only when new hardware data arrives, rather than relying on periodic timed scanning.

How do I register custom device support and IOC shell commands in EPICS?

You register custom device support and IOC shell commands in EPICS by publishing device support choices via DBD declarations and registering configuration commands and variables for use in st.cmd, ensuring correct epicsExport include ordering.

What is a dset table in EPICS and when do I need it?

A dset table in EPICS is a structure of function pointers that connects database record types like ai, ao, and waveform to your custom hardware driver logic. You need it whenever you integrate new hardware with EPICS database records.

Why are my EPICS device support callbacks causing record processing issues?

EPICS device support callbacks cause record processing issues when return-value conventions are ignored or dpvt private data is improperly initialized, leading to unsafe callback-driven record reprocessing during non-blocking operations.