MIDAS
Loading...
Searching...
No Matches
deferredfe.cxx File Reference
#include <stdio.h>
#include <stdlib.h>
#include "midas.h"
#include "mfe.h"
Include dependency graph for deferredfe.cxx:

Go to the source code of this file.

Macros

#define N_ADC   4
 
#define N_TDC   8
 
#define N_SCLR   4
 
#define CRATE   0
 
#define SLOT_IO   23
 
#define SLOT_ADC   1
 
#define SLOT_TDC   2
 
#define SLOT_SCLR   3
 

Functions

INT frontend_init ()
 Frontend initialization.
 
INT frontend_exit ()
 Frontend exit.
 
INT begin_of_run (INT run_number, char *error)
 Begin of Run.
 
INT end_of_run (INT run_number, char *error)
 End of Run.
 
INT pause_run (INT run_number, char *error)
 Pause Run.
 
INT resume_run (INT run_number, char *error)
 Resume Run.
 
INT frontend_loop ()
 Frontend loop.
 
INT read_deferred_event (char *pevent, INT off)
 
BOOL wait_end_cycle (int transition, BOOL first)
 
INT poll_event (INT source, INT count, BOOL test)
 
INT interrupt_configure (INT cmd, INT source, PTYPE adr)
 

Variables

const charfrontend_name = "deferredfe"
 
const charfrontend_file_name = __FILE__
 
BOOL frontend_call_loop = FALSE
 
INT display_period = 000
 
INT max_event_size = 10000
 
INT max_event_size_frag = 5 * 1024 * 1024
 
INT event_buffer_size = 10 * 10000
 
BOOL equipment_common_overwrite = FALSE
 
EQUIPMENT equipment []
 
int pseudo_delay = 0
 
BOOL transition_PS_requested = FALSE
 
BOOL end_of_mcs_cycle = FALSE
 

Macro Definition Documentation

◆ CRATE

#define CRATE   0

Definition at line 50 of file deferredfe.cxx.

◆ N_ADC

#define N_ADC   4

Definition at line 45 of file deferredfe.cxx.

◆ N_SCLR

#define N_SCLR   4

Definition at line 47 of file deferredfe.cxx.

◆ N_TDC

#define N_TDC   8

Definition at line 46 of file deferredfe.cxx.

◆ SLOT_ADC

#define SLOT_ADC   1

Definition at line 52 of file deferredfe.cxx.

◆ SLOT_IO

#define SLOT_IO   23

Definition at line 51 of file deferredfe.cxx.

◆ SLOT_SCLR

#define SLOT_SCLR   3

Definition at line 54 of file deferredfe.cxx.

◆ SLOT_TDC

#define SLOT_TDC   2

Definition at line 53 of file deferredfe.cxx.

Function Documentation

◆ begin_of_run()

INT begin_of_run ( INT  run_number,
char error 
)

Begin of Run.

Called every run start transition. Set equipment status in ODB, start acquisition on the modules.

Parameters
[in]run_numberNumber of the run being started
[out]errorCan be used to write a message string to midas.log

Definition at line 169 of file deferredfe.cxx.

170{
171 /* put here clear scalers etc. */
172 pseudo_delay = 0;
173 return SUCCESS;
174}
int pseudo_delay
#define SUCCESS
Definition mcstd.h:54

◆ end_of_run()

INT end_of_run ( INT  run_number,
char error 
)

End of Run.

Called every stop run transition. Set equipment status in ODB, stop acquisition on the modules.

Parameters
[in]run_numberNumber of the run being ended
[out]errorCan be used to write a message string to midas.log

Definition at line 178 of file deferredfe.cxx.

179{
180 return SUCCESS;
181}

◆ frontend_exit()

INT frontend_exit ( void  )

Frontend exit.

Runs at frontend shutdown. Disconnect hardware and set equipment status in ODB

Returns
Midas status code

Definition at line 162 of file deferredfe.cxx.

163{
164 return SUCCESS;
165}

◆ frontend_init()

INT frontend_init ( void  )

Frontend initialization.

Runs once at application startup. We initialize the hardware and optical interfaces and set the equipment status in ODB. We also lock the frontend to once physical cpu core.

Returns
Midas status code

Definition at line 148 of file deferredfe.cxx.

149{
150 // register for deferred transition
153
154
155 /* hardware initialization */
156
157 return SUCCESS;
158}
BOOL wait_end_cycle(int transition, BOOL first)
INT cm_register_deferred_transition(INT transition, BOOL(*func)(INT, BOOL))
Definition midas.cxx:3837
#define TR_PAUSE
Definition midas.h:407
#define TR_STOP
Definition midas.h:406
Here is the call graph for this function:

◆ frontend_loop()

INT frontend_loop ( void  )

Frontend loop.

If frontend_call_loop is true, this routine gets called when the frontend is idle or once between every event.

Returns
Midas status code

Definition at line 199 of file deferredfe.cxx.

200{
201 /* if frontend_call_loop is true, this routine gets called when
202 the frontend is idle or once between every event */
203 return SUCCESS;
204}

◆ interrupt_configure()

INT interrupt_configure ( INT  cmd,
INT  source,
PTYPE  adr 
)

Definition at line 238 of file deferredfe.cxx.

239{
240 switch (cmd) {
242 break;
244 break;
246 break;
248 break;
249 }
250 return SUCCESS;
251}
#define CMD_INTERRUPT_ATTACH
Definition midas.h:822
#define CMD_INTERRUPT_DISABLE
Definition midas.h:821
#define CMD_INTERRUPT_ENABLE
Definition midas.h:820
#define CMD_INTERRUPT_DETACH
Definition midas.h:823

◆ pause_run()

INT pause_run ( INT  run_number,
char error 
)

Pause Run.

Called every pause run transition.

Parameters
[in]run_numberNumber of the run being ended
[out]errorCan be used to write a message string to midas.log
Returns
Midas status code

Definition at line 185 of file deferredfe.cxx.

186{
187 return SUCCESS;
188}

◆ poll_event()

INT poll_event ( INT  source,
INT  count,
BOOL  test 
)

Definition at line 216 of file deferredfe.cxx.

220{
221 int i;
222 DWORD flag;
223
224 for (i = 0; i < count; i++) {
225 /* poll hardware and set flag to TRUE if new event is available */
226 flag = TRUE;
227
228 if (flag)
229 if (!test)
230 return TRUE;
231 }
232
233 return 0;
234}
unsigned int DWORD
Definition mcstd.h:51
double count
Definition mdump.cxx:33
INT i
Definition mdump.cxx:32
#define TRUE
Definition midas.h:182
program test
Definition miniana.f:6
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
Here is the call graph for this function:

◆ read_deferred_event()

INT read_deferred_event ( char pevent,
INT  off 
)

Definition at line 254 of file deferredfe.cxx.

255{
256 DWORD *pdata, a;
257
258 /* init bank structure */
259 bk_init(pevent);
260
261
262 /* create SCLR bank */
263 bk_create(pevent, "SCLR", TID_DWORD, (void **) &pdata);
264
265 /* read scaler bank */
266 for (a = 0; a < N_SCLR; a++)
267 *pdata++ = rand()%1024 + rand()%1024 + rand()%1024 + rand()%1024;
268
269 bk_close(pevent, pdata);
270
272 // transition acknowledged, but...
273 // carry on until hardware condition satisfied
274 // ...
275 if (pseudo_delay++ < 5) {
276 // Ignore transition
277 printf("Transition ignored, ");
278 } else {
279 // Time to do transition
280 printf("End of cycle... perform transition\n");
282 }
283 }
284 printf("Event ID:%d - Event#: %d\n", EVENT_ID(pevent), SERIAL_NUMBER(pevent));
285 return bk_size(pevent);
286}
BOOL transition_PS_requested
BOOL end_of_mcs_cycle
#define N_SCLR
INT bk_close(void *event, void *pdata)
Definition midas.cxx:16780
void bk_init(void *event)
Definition midas.cxx:16406
void bk_create(void *event, const char *name, WORD type, void **pdata)
Definition midas.cxx:16561
INT bk_size(const void *event)
Definition midas.cxx:16495
#define TID_DWORD
Definition midas.h:336
#define SERIAL_NUMBER(e)
Definition midas.h:880
#define EVENT_ID(e)
Definition midas.h:873
Here is the call graph for this function:

◆ resume_run()

INT resume_run ( INT  run_number,
char error 
)

Resume Run.

Called every resume run transition.

Parameters
[in]run_numberNumber of the run being ended
[out]errorCan be used to write a message string to midas.log
Returns
Midas status code

Definition at line 192 of file deferredfe.cxx.

193{
194 return SUCCESS;
195}

◆ wait_end_cycle()

BOOL wait_end_cycle ( int  transition,
BOOL  first 
)

Definition at line 125 of file deferredfe.cxx.

126{
127 // Get there after every
128 if (first) {
129 // Get there as soon as transition is requested
131 printf("Transition requested...\n");
132 // Defer the transition now
133 return FALSE;
134 }
135 // Check user flag
136 if (end_of_mcs_cycle) {
137 // User flag set, ready to perform deferred transition now
140 return TRUE;
141 } else {
142 // User not ready for transition, defers it...
143 return FALSE;
144 }
145}
#define FALSE
Definition cfortran.h:309
Here is the caller graph for this function:

Variable Documentation

◆ display_period

INT display_period = 000

Definition at line 33 of file deferredfe.cxx.

◆ end_of_mcs_cycle

BOOL end_of_mcs_cycle = FALSE

Definition at line 122 of file deferredfe.cxx.

◆ equipment

EQUIPMENT equipment[]
Initial value:
= {
{"Deferred",
{2, 0,
"SYSTEM",
0,
"MIDAS",
TRUE,
2000,
0,
0,
0,
"", "", "",},
},
{""}
}
INT read_deferred_event(char *pevent, INT off)
#define RO_ODB
Definition midas.h:438
#define EQ_PERIODIC
Definition midas.h:414
#define RO_RUNNING
Definition midas.h:426

Definition at line 73 of file deferredfe.cxx.

73 {
74
75 {"Deferred", /* equipment name */
76 {2, 0, /* event ID, trigger mask */
77 "SYSTEM", /* event buffer */
78 EQ_PERIODIC, /* equipment type */
79 0, /* event source */
80 "MIDAS", /* format */
81 TRUE, /* enabled */
82 RO_RUNNING | /* read when running */
83 RO_ODB, /* and update ODB */
84 2000, /* read every 2 sec */
85 0, /* stop run after this event limit */
86 0, /* number of sub events */
87 0, /* log history */
88 "", "", "",},
89 read_deferred_event, /* readout routine */
90 },
91 {""}
92 };

◆ equipment_common_overwrite

BOOL equipment_common_overwrite = FALSE

Definition at line 71 of file deferredfe.cxx.

◆ event_buffer_size

INT event_buffer_size = 10 * 10000

Definition at line 42 of file deferredfe.cxx.

◆ frontend_call_loop

BOOL frontend_call_loop = FALSE

Definition at line 30 of file deferredfe.cxx.

◆ frontend_file_name

const char* frontend_file_name = __FILE__

Definition at line 27 of file deferredfe.cxx.

◆ frontend_name

const char* frontend_name = "deferredfe"

Definition at line 24 of file deferredfe.cxx.

◆ max_event_size

INT max_event_size = 10000

Definition at line 36 of file deferredfe.cxx.

◆ max_event_size_frag

INT max_event_size_frag = 5 * 1024 * 1024

Definition at line 39 of file deferredfe.cxx.

◆ pseudo_delay

int pseudo_delay = 0

Definition at line 120 of file deferredfe.cxx.

◆ transition_PS_requested

BOOL transition_PS_requested = FALSE

Definition at line 121 of file deferredfe.cxx.