1 |
kusanagi |
1.1 |
/**************************************************************************** |
2 |
|
|
* F i l e D a t a |
3 |
|
|
* $Id: TRG_Trigger_INFN.c,v 1.27 2005/03/06 14:54:46 sebastiani Exp $ |
4 |
|
|
* $Revision: 1.27 $ |
5 |
|
|
* $Date: 2005/03/06 14:54:46 $ |
6 |
|
|
* $RCSfile: TRG_Trigger_INFN.c,v $ |
7 |
|
|
* |
8 |
|
|
**************************************************************************** |
9 |
|
|
* S W D e v e l o p m e n t E n v i r o n m e n t |
10 |
|
|
* |
11 |
|
|
* $Author: sebastiani $ |
12 |
|
|
* : |
13 |
|
|
**************************************************************************** |
14 |
|
|
* U p d a t i n g |
15 |
|
|
|
16 |
|
|
* $Log: TRG_Trigger_INFN.c,v $ |
17 |
|
|
* Revision 1.27 2005/03/06 14:54:46 sebastiani |
18 |
|
|
* version running on 06 03 2005 |
19 |
|
|
* |
20 |
|
|
* Revision 1.26 2005/02/22 18:09:25 sebastiani |
21 |
|
|
* various bugfixes |
22 |
|
|
* |
23 |
|
|
* Revision 1.25 2005/01/10 14:02:13 faber |
24 |
|
|
* TRG,AC_1,AC_2,TOF Error Handler reviewed |
25 |
|
|
* |
26 |
|
|
* Revision 1.24 2004/11/19 15:41:50 sebastiani |
27 |
|
|
* *** empty log message *** |
28 |
|
|
* |
29 |
|
|
* Revision 1.23 2004/11/19 15:14:52 sebastiani |
30 |
|
|
* PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file |
31 |
|
|
* |
32 |
|
|
* Revision 1.22 2004/10/18 15:09:24 faber |
33 |
|
|
* *** empty log message *** |
34 |
|
|
* |
35 |
|
|
* Revision 1.21 2004/09/17 15:52:00 faber |
36 |
|
|
* fix command queue Cmd2Fe/Fe2Daq right invocation for Test funcion inf TOF and TRG |
37 |
|
|
* |
38 |
|
|
* Revision 1.20 2004/09/17 15:01:00 faber |
39 |
|
|
* LU_INFN_LOG flags fixing |
40 |
|
|
* |
41 |
|
|
* Revision 1.19 2004/09/13 14:16:53 faber |
42 |
|
|
* ErrorHandler for TOF/TRG + Test function TOF/TRG |
43 |
|
|
* |
44 |
|
|
* Revision 1.18 2004/09/09 14:52:55 sebastiani |
45 |
|
|
* using PreparePage to send cmd to idaq/FE |
46 |
|
|
* added some test |
47 |
|
|
* added trigger param |
48 |
|
|
* added/tested Force Send KHB_to_FE |
49 |
|
|
* added/tested Send Cmd to IDAQ/FE |
50 |
|
|
* |
51 |
|
|
* Revision 1.17 2004/09/09 11:24:10 faber |
52 |
|
|
* *** empty log message *** |
53 |
|
|
* |
54 |
|
|
* Revision 1.16 2004/08/27 13:30:39 alfarano |
55 |
|
|
* cvs header |
56 |
|
|
* |
57 |
|
|
* Revision 1.1 2003/10/03 16:12:26 faber |
58 |
|
|
* *** empty log message *** |
59 |
|
|
* |
60 |
|
|
* |
61 |
|
|
*****************************************************************************/ |
62 |
|
|
|
63 |
|
|
/*============================= Include File ================================*/ |
64 |
|
|
|
65 |
|
|
|
66 |
|
|
#include <src/INFN/LU_SourceFileID_INFN.h> |
67 |
|
|
#define __FILEID__ _TRG_Trigger_INFN__c |
68 |
|
|
#include <src/INFN/PRH_ParamHandler_INFN.h> |
69 |
|
|
#include <src/INFN/LU_LogUtility_INFN.h> |
70 |
|
|
#include <src/INFN/PRH_ParamHandler_INFN_auto.h> |
71 |
|
|
LU_DECL_MASK(); |
72 |
|
|
#include <src/INFN/DAQ_IDAQ_INFN.h> |
73 |
|
|
#include <src/INFN/CM_Common_INFN.h> |
74 |
|
|
#include <src/INFN/CH_CommandHandler_INFN.h> |
75 |
|
|
#include <src/INFN/TRG_Trigger_INFN.h> |
76 |
|
|
#include <src/INFN/KHB_Driver_INFN.h> |
77 |
|
|
#include <src/INFN/HK_Manager_INFN.h> |
78 |
|
|
#include <src/INFN/HB_HKBuffer_INFN.h> |
79 |
|
|
#include <src/INFN/ALM_Alarm_INFN.h> |
80 |
|
|
#include <src/INFN/MH_ModeHandler_INFN.h> |
81 |
|
|
|
82 |
|
|
/*============================ Global define ================================*/ |
83 |
|
|
|
84 |
|
|
|
85 |
|
|
#define TRG_TB_SET_TRIGGER_CONF_BASE_ID CH_TB_SET_TRIGGER_CONF_01 |
86 |
|
|
#define TRG_TB_SET_BUSY_CONTROL_BASE_ID CH_TB_SET_BUSY_CONTROL_0 |
87 |
|
|
|
88 |
|
|
|
89 |
|
|
DAQ_DECLBUF(TRG_TempPif0,TRG_MAXTEMPBUFFER); |
90 |
|
|
|
91 |
|
|
|
92 |
|
|
static DAQ_CMD_BUF TB_SET_ALARM_MASK; |
93 |
|
|
|
94 |
|
|
static DAQ_CMD_BUF TB_SET_PMT_MASK; |
95 |
|
|
|
96 |
|
|
static DAQ_CMD_BUF TB_SET_S4_CAL_MASK; |
97 |
|
|
static DAQ_CMD_BUF TB_SET_BUSY_MASK_IDAQ_HOT; |
98 |
|
|
static DAQ_CMD_BUF TB_SET_BUSY_MASK_IDAQ_COLD; |
99 |
|
|
|
100 |
|
|
static int TB_STATUS; |
101 |
|
|
|
102 |
|
|
|
103 |
|
|
|
104 |
|
|
|
105 |
|
|
status_code Init_ParamBuffers() |
106 |
|
|
{ |
107 |
|
|
DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_ALARM_MASK); |
108 |
|
|
DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_PMT_MASK); |
109 |
|
|
DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_S4_CAL_MASK); |
110 |
|
|
DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_BUSY_MASK_IDAQ_HOT); |
111 |
|
|
DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_BUSY_MASK_IDAQ_COLD); |
112 |
|
|
} |
113 |
|
|
|
114 |
|
|
status_code TRG_Init_ETOATO() |
115 |
|
|
{ |
116 |
|
|
int i; |
117 |
|
|
status_code status; |
118 |
|
|
CH_PARAMBUF_SET_ATO_ETO(TB_SET_ALARM_MASK,0,1); |
119 |
|
|
|
120 |
|
|
|
121 |
|
|
CH_SetAtoEto(CH_TB_READ_ALARM_MASK,1,2); |
122 |
|
|
CH_SetAtoEto(CH_TB_READ_ALARM,1,2); |
123 |
|
|
|
124 |
|
|
CH_PARAMBUF_SET_ATO_ETO(TB_SET_PMT_MASK,0,1); |
125 |
|
|
|
126 |
|
|
CH_SetAtoEto(CH_TB_READ_PMT_MASK,1,2); |
127 |
|
|
|
128 |
|
|
CH_PARAMBUF_SET_ATO_ETO(TB_SET_S4_CAL_MASK,0,1); |
129 |
|
|
|
130 |
|
|
CH_SetAtoEto(CH_TB_READ_S4_CAL_MASK,1,2); |
131 |
|
|
CH_PARAMBUF_SET_ATO_ETO(TB_SET_BUSY_MASK_IDAQ_HOT,0,1); |
132 |
|
|
CH_PARAMBUF_SET_ATO_ETO(TB_SET_BUSY_MASK_IDAQ_COLD,0,1); |
133 |
|
|
|
134 |
|
|
CH_SetAtoEto(CH_TB_READ_BUSY_MASK,1,2); |
135 |
|
|
|
136 |
|
|
for (i=0; i < 31; i++) |
137 |
|
|
CH_SetAtoEto(TRG_TB_SET_TRIGGER_CONF_BASE_ID+i,0,1); |
138 |
|
|
|
139 |
|
|
CH_SetAtoEto(CH_TB_READ_TRIGGER_CONF,1,2); |
140 |
|
|
CH_SetAtoEto(CH_TB_READ_PATTERN_TRIGGER,1,2); |
141 |
|
|
CH_SetAtoEto(CH_TB_GIVE_ME_TRIGGER,0,1); |
142 |
|
|
CH_SetAtoEto(CH_TB_OPEN_CALIB_GATE,0,1); |
143 |
|
|
CH_SetAtoEto(CH_TB_CLOSE_CALIB_GATE,0,1); |
144 |
|
|
CH_SetAtoEto(CH_TB_READ_PATTERN_BUSY,1,2); |
145 |
|
|
|
146 |
|
|
for (i=0; i < 8; i++) |
147 |
|
|
CH_SetAtoEto(TRG_TB_SET_BUSY_CONTROL_BASE_ID+i,0,1); |
148 |
|
|
|
149 |
|
|
CH_SetAtoEto(CH_TB_START_ACQ,0,1); |
150 |
|
|
CH_SetAtoEto(CH_TB_STOP_ACQ,0,1); |
151 |
|
|
CH_SetAtoEto(CH_TB_READ_PMT_COUNT1,1,3); |
152 |
|
|
CH_SetAtoEto(CH_TB_READ_PMT_COUNT2,1,3); |
153 |
|
|
CH_SetAtoEto(CH_TB_READ_S4_CAL_COUNT,1,2); |
154 |
|
|
CH_SetAtoEto(CH_TB_READ_D_L_TIME,1,2); |
155 |
|
|
CH_SetAtoEto(CH_TB_READ_EVENT_COUNT,1,2); |
156 |
|
|
CH_SetAtoEto(CH_TB_READ_PMT_PLANE,1,2); |
157 |
|
|
CH_SetAtoEto(CH_TB_READ_TRIGGER_RATE,1,2); |
158 |
|
|
CH_SetAtoEto(CH_DUMMY_COMMAND,0,1); |
159 |
|
|
} |
160 |
|
|
|
161 |
|
|
status_code TRG_Init() |
162 |
|
|
{ |
163 |
|
|
DAQ_BUFFER_INIT(TRG_TempPif0); |
164 |
|
|
Init_ParamBuffers(); |
165 |
|
|
TRG_Init_ETOATO(); |
166 |
|
|
|
167 |
|
|
return CM_RC_SUCCESSFUL; |
168 |
|
|
} |
169 |
|
|
|
170 |
|
|
status_code TRG_Initialization() |
171 |
|
|
{ |
172 |
|
|
status_code status; |
173 |
|
|
DAQ_CMD_BUF* auto_buf; |
174 |
|
|
CM_HOT_COLD hc; |
175 |
|
|
DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK); |
176 |
|
|
volatile static BOOL do_tb_set_pmt_mask=TRUE; |
177 |
|
|
|
178 |
|
|
TB_STATUS = 1; |
179 |
|
|
#warning perche' e' commentato questo ? |
180 |
|
|
// DAQ_ResetPIF(DAQ_DEFAULT_ETO_TICS,DAQ_DEFAULT_DTO_TICS,SM_DAQSETUP,HB_PKTTYPE_TRG_INIT); |
181 |
|
|
|
182 |
|
|
DAQ_Format_CMD_Empty(&TRG_TempPif0); |
183 |
|
|
|
184 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_ALARM_MASK,fe_tb); |
185 |
|
|
|
186 |
|
|
CH_GetBuf(CH_DUMMY_COMMAND,&auto_buf ); |
187 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE); |
188 |
|
|
|
189 |
|
|
if(do_tb_set_pmt_mask) |
190 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_PMT_MASK,fe_tb); |
191 |
|
|
|
192 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE); |
193 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_S4_CAL_MASK,fe_tb); |
194 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE); |
195 |
|
|
|
196 |
|
|
status=HK_KHB_GetHotCold(&hc); |
197 |
|
|
LU_EXIT_IFERROR(status); |
198 |
|
|
|
199 |
|
|
if(hc == CM_HOT) { |
200 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_HOT,fe_tb); |
201 |
|
|
}else{ |
202 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_COLD,fe_tb); |
203 |
|
|
} |
204 |
|
|
|
205 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE); |
206 |
|
|
|
207 |
|
|
status = DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&TRG_TempPif0); |
208 |
|
|
// if (status) loginternal |
209 |
|
|
LU_EXIT_IFERROR(status); |
210 |
|
|
|
211 |
|
|
status = DAQ_SendCmdQueue2CMDIF(SM_CALEXP0); |
212 |
|
|
LU_EXIT_IFERROR(status); |
213 |
|
|
|
214 |
|
|
TB_STATUS = 0; |
215 |
|
|
|
216 |
|
|
return status; |
217 |
|
|
} |
218 |
|
|
|
219 |
|
|
status_code TRG_Test() |
220 |
|
|
{ |
221 |
|
|
status_code status; |
222 |
|
|
CM_HOT_COLD hc; |
223 |
|
|
DAQ_CMD_BUF* auto_buf, *dummy_cmd; |
224 |
|
|
DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK); |
225 |
|
|
|
226 |
|
|
CH_GetBuf(CH_DUMMY_COMMAND,&dummy_cmd); |
227 |
|
|
|
228 |
|
|
// HK_UpdateKHBMaskRegister(KHB_MASK_ALL,KHB_PRESET); |
229 |
|
|
DAQ_Format_CMD_Empty(&TRG_TempPif0); |
230 |
|
|
|
231 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_ALARM_MASK,fe_tb); |
232 |
|
|
|
233 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE); |
234 |
|
|
|
235 |
|
|
CH_GetBuf(CH_TB_READ_ALARM_MASK,&auto_buf ); |
236 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb); |
237 |
|
|
|
238 |
|
|
|
239 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,&TB_SET_PMT_MASK,fe_tb); |
240 |
|
|
|
241 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE); |
242 |
|
|
|
243 |
|
|
CH_GetBuf(CH_TB_READ_PMT_MASK,&auto_buf); |
244 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb); |
245 |
|
|
|
246 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,&TB_SET_S4_CAL_MASK,fe_tb); |
247 |
|
|
|
248 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE); |
249 |
|
|
|
250 |
|
|
CH_GetBuf(CH_TB_READ_S4_CAL_MASK,&auto_buf ); |
251 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb); |
252 |
|
|
|
253 |
|
|
HK_KHB_GetHotCold(&hc); |
254 |
|
|
LU_EXIT_IFERROR(status); |
255 |
|
|
|
256 |
|
|
if(hc == CM_HOT) { |
257 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_HOT,fe_tb); |
258 |
|
|
}else{ |
259 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_COLD,fe_tb); |
260 |
|
|
} |
261 |
|
|
|
262 |
|
|
DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE); |
263 |
|
|
|
264 |
|
|
CH_GetBuf(CH_TB_READ_BUSY_MASK,&auto_buf ); |
265 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb); |
266 |
|
|
|
267 |
|
|
DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&TRG_TempPif0); |
268 |
|
|
status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_STORE_MM,NULL,DAQ_NO_STORE_RAM); |
269 |
|
|
|
270 |
|
|
return status; |
271 |
|
|
} |
272 |
|
|
|
273 |
|
|
status_code TRG_StartTrigger() |
274 |
|
|
{ |
275 |
|
|
} |
276 |
|
|
|
277 |
|
|
status_code TRG_Error_Handler() |
278 |
|
|
{ |
279 |
|
|
status_code status = CM_RC_SUCCESSFUL; |
280 |
|
|
DAQ_CMD_BUF* auto_buf; |
281 |
|
|
DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK); |
282 |
|
|
UINT16 khb_sr; |
283 |
|
|
|
284 |
|
|
DAQ_Format_CMD_Empty(&TRG_TempPif0); |
285 |
|
|
|
286 |
|
|
CH_GetBuf(CH_TB_READ_ALARM,&auto_buf); |
287 |
|
|
DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb); |
288 |
|
|
|
289 |
|
|
DAQ_StoreCmdQueue2PIF(SM_CALEXP3,&TRG_TempPif0); |
290 |
|
|
|
291 |
|
|
status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP3,DAQ_STORE_MM,&TRG_TempPif0,DAQ_STORE_RAM); |
292 |
|
|
if(status != CM_RC_SUCCESSFUL || TRG_TempPif0.len < SM_PKTHEADER_LEN+3) { |
293 |
|
|
status=CM_RC_DO_RESET_IF_ALM; |
294 |
|
|
}else{ |
295 |
|
|
|
296 |
|
|
if( ((TRG_TempPif0.buf[SM_PKTHEADER_LEN] & 0xFF) != 0) || |
297 |
|
|
((TRG_TempPif0.buf[SM_PKTHEADER_LEN+1] & 0xFC) != 0) |
298 |
|
|
) { |
299 |
|
|
status=HK_ReadKHBStatusRegister(&khb_sr); |
300 |
|
|
if((khb_sr & (KHB_STS_ALARM_IDAQ | KHB_STS_ALARM_TRG)) |
301 |
|
|
|| status!=CM_RC_SUCCESSFUL) |
302 |
|
|
return CM_RC_DO_POWER_OFF_ON; |
303 |
|
|
if( PRH_VAR_GOM_DURING_ALARM == MH_GOM_INITIALIZATION || |
304 |
|
|
PRH_VAR_GOM_DURING_ALARM == MH_GOM_ACQUISITION ) { |
305 |
|
|
return CM_RC_DO_RESET_IF_ALM; |
306 |
|
|
} |
307 |
|
|
} |
308 |
|
|
} |
309 |
|
|
|
310 |
|
|
return status; |
311 |
|
|
} |