ACQ400_XRM (xrmIoc)
Loading...
Searching...
No Matches
acq400_PM.h File Reference

handles Post Mortem, one ADDRESS per PMBUF More...

#include "acq400_asyn_common.h"
#include "SamplePrams.h"
#include "epicsRingBytes.h"
#include <algorithm>
#include <iostream>
#include <numeric>
#include <string>
#include <deque>

Go to the source code of this file.

Classes

struct  BufferPair
class  acq400_PM
struct  acq400_PM::PM_COLS

Macros

#define MAX_PM_BUFFERS   32
#define PS_NBUF   "NBUF" /* asynInt32, r, number of buffers */
#define PS_PM_COL_ROWNUM   "PM_COL_ROWNUM"
#define PS_PM_COL_IBLIVE   "PM_COL_IBLIVE"
#define PS_PM_COL_IBSTORE   "PM_COL_IBSTORE"
#define PS_PM_COL_TS   "PM_COL_TS"
#define PS_PM_COL_SP0   "PM_COL_SP0"
#define PS_PM_COL_SP1   "PM_COL_SP1"
#define PS_PM_COL_SP2   "PM_COL_SP2"
#define PS_PM_COL_SP3   "PM_COL_SP3"
#define PS_PM_COL_WRVS   "PM_COL_WRVS"
#define PS_PM_COL_WRVT   "PM_COL_WRVT"
#define PS_PM_COL_WRUS   "PM_COL_WRUS"
#define PS_RAWBUF   "RAWBUF" /* addr 0..32 */

Detailed Description

handles Post Mortem, one ADDRESS per PMBUF

: acq400_PM : Post Mortem class.

  • ACQ400 has supplied PM data from the start "TRANSIENT".
  • however, TRANSIENT is a one shot, start, stop, off-load
  • XRM calls for a "live PM" that allows the capture to continue.
    • We do this by copying EVERY capture buffer, maintaining a ring-buffer of the previous second.
    • The previous second is presented as :PM:00 latest .. PM:19: oldest
    • acq400_PM has a RUNSTOP paramter. On run, the ring-buffer is maintained as normal
    • on STOP, the PM buffers are published for external client use.

      Created on: 6 Mar 2026 Author: pgm