ACQ400_XRM (xrmIoc)
Loading...
Searching...
No Matches
acq400_FMT_sim.h
Go to the documentation of this file.
1/** @file acq400_FMT_sim.h
2 * @brief FMT simulator: sends FMT timed to CYCLE
3 * - requires CYCLE input on FP TRG
4 * - requires WR
5 * - local network MUST allow multicast to proceed
6 *
7 * Created on: 9 Feb 2026
8 * Author: pgm
9 */
10
11#ifndef XRMIOCAPP_SRC_ACQ400_FMT_SIM_H_
12#define XRMIOCAPP_SRC_ACQ400_FMT_SIM_H_
13
14#include "acq400_FMT.h"
15
16/** REDIT : Row EDIT */
17#define PS_FMT_REDIT_ROW "FMT_REDIT_ROW" /* edit this row */
18#define PS_FMT_REDIT_ROWCOUNT "FMT_REDIT_ROWCOUNT" /* for this many rows */
19#define PS_FMT_REDIT_EVENT "FMT_REDIT_EVENT" /* set this event */
20#define PS_FMT_REDIT_EVENT_STEP "FMT_REDIT_EVENT_STEP" /* adding to subsequent rows */
21#define PS_FMT_REDIT_CLIDAT "FMT_REDIT_CLIDAT"
22#define PS_FMT_REDIT_CLIDAT_STEP "FMT_REDIT_CLIDAT_STEP"
23
24#define PS_FMT_REDIT_COMMIT "FMT_REDIT_COMMIT"
25#define PS_FMT_DELAY "FMT_DELAY" /* hold back the FMT (msec) */
26
28 virtual epicsInt64 time_now() = 0; /* time in usec since epoch. Blocks until time available */
29};
30
31
32class acq400_FMT_Sim: public acq400_FMT_abc {
33 virtual void update_fmt(FMT& fmt, bool first_time = false);
34
35 void redit(); /* Row EDIT */
36
37 TimeProvider& timeProvider;
38 int delay_ms;
39protected:
40 virtual void task();
41
42 int P_FMT_REDIT_ROW;
43 int P_FMT_REDIT_ROWCOUNT;
44 int P_FMT_REDIT_EVENT;
45 int P_FMT_REDIT_EVENT_STEP;
46 int P_FMT_REDIT_CLIDAT;
47 int P_FMT_REDIT_CLIDAT_STEP;
48 int P_FMT_REDIT_COMMIT;
49 int P_FMT_DELAY;
50
51public:
52 acq400_FMT_Sim(const char* portName, TimeProvider& _timeProvider);
53 virtual ~acq400_FMT_Sim() {}
54
55 asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
56
57};
58
59
60#endif /* XRMIOCAPP_SRC_ACQ400_FMT_SIM_H_ */
Fermi Multicast Table Abstract Base Class Created on: 16 Feb 2026 Author: pgm.
Definition acq400_FMT_sim.h:27
struct FMT_ROW FMT[FMT_ROWS]
FMT : FNAL Multicast Table.
Definition xrm_structs.h:57