MIDAS
Loading...
Searching...
No Matches
largefe.cxx
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: largefe.c
4 Created by: Stefan Ritt
5
6 Contents: Experiment specific readout code (user part) of
7 Midas frontend. This example demonstrates the
8 implementation of the large fragmented event.
9
10 $Id:$
11
12\********************************************************************/
13
14#include <stdio.h>
15#include <stdlib.h>
16#include "midas.h"
17#include "mfe.h"
18
19/*-- Globals -------------------------------------------------------*/
20/* The frontend name (client name) as seen by other MIDAS clients */
21const char *frontend_name = "largefe";
22
23/* The frontend file name, don't change it */
24const char *frontend_file_name = __FILE__;
25
26/* frontend_loop is called periodically if this variable is TRUE */
28
29/* a frontend status page is displayed with this frequency in ms */
31
32/* maximum event size produced by this frontend */
34
35/* maximum event size for fragmented events (EQ_FRAGMENTED) */
36INT max_event_size_frag = 5 * 1024 * 1024;
37
38/* buffer size to hold events */
40
41/*-- Function declarations -----------------------------------------*/
42
45INT begin_of_run(INT run_number, char *error);
46INT end_of_run(INT run_number, char *error);
47INT pause_run(INT run_number, char *error);
48INT resume_run(INT run_number, char *error);
50INT read_large_event(char *pevent, INT off);
51/*-- Equipment list ------------------------------------------------*/
52
53#undef USE_INT
55
57
58 {"large", /* equipment name */
59 {3, 0, /* event ID, trigger mask */
60 "SYSTEM", /* event buffer */
61 EQ_PERIODIC | EQ_FRAGMENTED, /* equipment type */
62 0, /* event source */
63 "MIDAS", /* format */
64 TRUE, /* enabled */
65 RO_ALWAYS, /* read when running and on transitions */
66 2000, /* read every 2 sec */
67 0, /* stop run after this event limit */
68 0, /* number of sub events */
69 0, /* log history */
70 "", "", ""},
71 read_large_event, /* readout routine */
72 NULL, NULL, /* keep null */
73 NULL, /* init string */
74 },
75
76 {""}
77};
78
79/********************************************************************\
80 Callback routines for system transitions
81
82 These routines are called whenever a system transition like start/
83 stop of a run occurs. The routines are called on the following
84 occations:
85
86 frontend_init: When the frontend program is started. This routine
87 should initialize the hardware.
88
89 frontend_exit: When the frontend program is shut down. Can be used
90 to releas any locked resources like memory, commu-
91 nications ports etc.
92
93 begin_of_run: When a new run is started. Clear scalers, open
94 rungates, etc.
95
96 end_of_run: Called on a request to stop a run. Can send
97 end-of-run event and close run gates.
98
99 pause_run: When a run is paused. Should disable trigger events.
100
101 resume_run: When a run is resumed. Should enable trigger events.
102
103 \********************************************************************//*-- Frontend Init -------------------------------------------------*/
105{
106 return SUCCESS;
107}
108
109/*-- Frontend Exit -------------------------------------------------*/
110
112{
113 return SUCCESS;
114}
115
116/*-- Begin of Run --------------------------------------------------*/
117
119{
120 return SUCCESS;
121}
122
123/*-- End of Run ----------------------------------------------------*/
124
126{
127 return SUCCESS;
128}
129
130/*-- Pause Run -----------------------------------------------------*/
131
133{
134 return SUCCESS;
135}
136
137/*-- Resuem Run ----------------------------------------------------*/
138
140{
141 return SUCCESS;
142}
143
144/*-- Frontend Loop -------------------------------------------------*/
146{
147 return SUCCESS;
148}
149
150/*------------------------------------------------------------------*/
151
152/********************************************************************\
153
154 Readout routines for different events
155
156\********************************************************************/
157
158/*-- Trigger event routines ----------------------------------------*/
159
161/* Polling routine for events. Returns TRUE if event
162 is available. If test equals TRUE, don't return. The test
163 flag is used to time the polling */
164{
165
166 /* Example for camac
167 int i;
168 DWORD lam;
169
170 for (i = 0; i < count; i++) {
171 cam_lam_read(LAM_SOURCE_CRATE(source), &lam);
172
173 if (lam & LAM_SOURCE_STATION(source))
174 if (!test)
175 return lam;
176 }
177 */
178
179 return 0;
180}
181
182/*-- Interrupt configuration ---------------------------------------*/
183
185{
186 switch (cmd) {
188 break;
190 break;
192 break;
194 break;
195 }
196 return SUCCESS;
197}
198
199
200/*-- Large event --------------------------------------------------*/
201INT read_large_event(char *pevent, INT off)
202{
203 DWORD *pddata;
204
205 /* init bank structure */
206 bk_init32(pevent);
207
208 bk_create(pevent, "BIGG", TID_DWORD, (void **) &pddata);
209 memset((char *) pddata, 0x0000, 100);
210 pddata += 1000000;
211 memset((char *) pddata - 100, 0xFFFF, 100);
212 bk_close(pevent, pddata);
213
214 return bk_size(pevent);
215}
#define FALSE
Definition cfortran.h:309
INT bk_close(void *event, void *pdata)
Definition midas.cxx:16780
void bk_init32(void *event)
Definition midas.cxx:16469
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 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
unsigned int DWORD
Definition mcstd.h:51
#define SUCCESS
Definition mcstd.h:54
#define EQ_PERIODIC
Definition midas.h:414
#define EQ_FRAGMENTED
Definition midas.h:420
#define RO_ALWAYS
Definition midas.h:436
#define TID_DWORD
Definition midas.h:336
BOOL frontend_call_loop
Definition largefe.cxx:27
const char * frontend_file_name
Definition largefe.cxx:24
INT max_event_size
Definition largefe.cxx:33
INT frontend_exit()
Frontend exit.
Definition largefe.cxx:111
INT read_large_event(char *pevent, INT off)
Definition largefe.cxx:201
INT frontend_init()
Frontend initialization.
Definition largefe.cxx:104
INT event_buffer_size
Definition largefe.cxx:39
INT max_event_size_frag
Definition largefe.cxx:36
INT interrupt_configure(INT cmd, INT source, PTYPE adr)
Definition largefe.cxx:184
BOOL equipment_common_overwrite
Definition largefe.cxx:54
INT poll_event(INT source, INT count, BOOL test)
Definition largefe.cxx:160
EQUIPMENT equipment[]
Definition largefe.cxx:56
const char * frontend_name
Definition largefe.cxx:21
INT display_period
Definition largefe.cxx:30
INT begin_of_run(INT run_number, char *error)
Begin of Run.
Definition largefe.cxx:118
INT frontend_loop()
Frontend loop.
Definition largefe.cxx:145
INT end_of_run(INT run_number, char *error)
End of Run.
Definition largefe.cxx:125
INT run_number[2]
Definition mana.cxx:246
double count
Definition mdump.cxx:33
DWORD BOOL
Definition midas.h:105
int INT
Definition midas.h:129
#define PTYPE
Definition midas.h:170
#define TRUE
Definition midas.h:182
#define resume_run
#define pause_run
program test
Definition miniana.f:6