What problem does it solve?
It helps you design and implement EPICS areaDetector camera/detector drivers that acquire hardware images, package them as NDArray objects, and expose standard detector controls to the IOC ecosystem.
Core Features & Use Cases
- ADDriver-based detector implementation: Create a C++ driver class inheriting from ADDriver (via asynNDArrayDriver/asynPortDriver) to provide a consistent control and data publication model.
- NDArray allocation, metadata, and publication: Allocate NDArray buffers from the NDArrayPool, fill image data, set array-level parameters (dimensions, datatype, color mode, timestamps), publish to downstream plugins, and correctly release buffers to avoid pool exhaustion.
- Acquisition and threading pattern: Implement a robust acquisition thread pattern driven by PV writes (e.g., ADAcquire), including correct lock/unlock behavior around blocking hardware I/O and handling single/multiple/continuous acquisition modes.
- IOCDB template and iocsh registration support: Define driver-specific records via templates and register an IOC shell configuration function so the driver can be instantiated reliably.
Quick Start
Ask the AI to generate a skeleton ADDriver-based C++ class (headers, constructor, acquisition thread, NDArray publish path, writeInt32 handling for ADAcquire) for your detector, including the matching Makefile DBD registrar snippet and a minimal .template file for one driver parameter.