/[PAMELA software]/quicklook/dataToXML/Data/compilationInfo/src/INFN/S4_INFN.c
ViewVC logotype

Contents of /quicklook/dataToXML/Data/compilationInfo/src/INFN/S4_INFN.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Tue Apr 25 09:00:20 2006 UTC (18 years, 8 months ago) by kusanagi
Branch: MAIN
CVS Tags: dataToXML1_02/01, dataToXML1_02/00, dataToXML1_03/00, dataToXML1_03/01, dataToXML1_00/00, firstRelease, dataToXML1_01/00, dataToXML1_03_02, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
Error occurred while calculating annotation data.
These program extract in an XML format the info contained into the ROOT files generated by YODA from the PAMELA data. To visualize the XML files in a more human readable format a collection of XSL files are given in the Data subfolder.

1 /****************************************************************************
2 * F i l e D a t a
3 * $Id: S4_INFN.c,v 1.20 2005/03/06 14:54:46 sebastiani Exp $
4 * $Revision: 1.20 $
5 * $Date: 2005/03/06 14:54:46 $
6 * $RCSfile: S4_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: S4_INFN.c,v $
17 * Revision 1.20 2005/03/06 14:54:46 sebastiani
18 * version running on 06 03 2005
19 *
20 * Revision 1.19 2005/02/19 10:19:38 sebastiani
21 * ALM_S4_CALIB_00_HARD,ALM_S4_CALIB_00_SOFT,ALM_S4_128TRIGGER_0 added
22 *
23 * Revision 1.18 2005/01/10 14:02:13 faber
24 * TRG,AC_1,AC_2,TOF Error Handler reviewed
25 *
26 * Revision 1.17 2004/12/20 14:02:04 faber
27 * @LOG entry introduced in all ALM_WriteLog occurrences
28 *
29 * Revision 1.16 2004/11/30 11:51:53 faber
30 * AC+AC2 software moved into AC_1 AC_2
31 * new calibration and initialization for AC
32 * first version,never run
33 *
34 * Revision 1.15 2004/11/19 15:41:50 sebastiani
35 * *** empty log message ***
36 *
37 * Revision 1.14 2004/11/19 15:14:52 sebastiani
38 * PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file
39 *
40 * Revision 1.13 2004/10/05 13:32:41 sebastiani
41 * stupid bugfix
42 *
43 * Revision 1.12 2004/10/04 13:59:05 alfarano
44 * fixed some return code in run manager
45 *
46 * Revision 1.11 2004/10/04 13:42:48 sebastiani
47 * *** empty log message ***
48 *
49 * Revision 1.10 2004/10/04 08:25:06 sebastiani
50 * *** empty log message ***
51 *
52 * Revision 1.9 2004/10/01 13:59:45 sebastiani
53 * some bugfix in calib, but not tested
54 *
55 * Revision 1.8 2004/10/01 11:13:21 sebastiani
56 * TIMEOUT S4 calib fix
57 *
58 * Revision 1.7 2004/10/01 09:20:23 alfarano
59 * AC2 and little bug fix on S4 return code
60 *
61 * Revision 1.6 2004/10/01 08:48:10 sebastiani
62 * TRD alarma renamed TRD_S4 - S4 Alarm renamed S4_POWER
63 * Callback function into DAQ_SendCmd2PIFWaitDAQReply_internal
64 *
65 * Revision 1.5 2004/09/27 15:42:43 alfarano
66 * tracker sensor board functions
67 *
68 * Revision 1.4 2004/09/22 15:54:54 alfarano
69 * S4 functions
70 *
71 * Revision 1.3 2004/08/27 13:30:39 alfarano
72 * cvs header
73 *
74 * Revision 1.1 2003/10/03 16:12:26 faber
75 * *** empty log message ***
76 *
77 *
78 *****************************************************************************/
79 /*============================= Include File ================================*/
80
81
82 #include <src/INFN/LU_SourceFileID_INFN.h>
83 #define __FILEID__ _S4_INFN__c
84
85 #include <src/INFN/PRH_ParamHandler_INFN.h>
86 #include <src/INFN/LU_LogUtility_INFN.h>
87 #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
88 LU_DECL_MASK();
89
90 #include <src/INFN/DAQ_IDAQ_INFN.h>
91 #include <src/INFN/CM_Common_INFN.h>
92 #include <src/INFN/S4_INFN.h>
93 #include <src/INFN/KHB_Driver_INFN.h>
94 #include <src/INFN/CH_CommandHandler_INFN.h>
95 #include <src/INFN/HB_HKBuffer_INFN.h>
96 #include <src/INFN/HK_Manager_INFN.h>
97 #include <src/INFN/ALM_Alarm_INFN.h>
98 #include <src/INFN/RM_RunManager_INFN.h>
99 #include <src/INFN/DAQ_IDAQ_INFN.h>
100
101 /*============================ Global define ================================*/
102
103
104 /*============================== global types ==============================*/
105
106 DAQ_DECLBUF(S4_TempPif0,S4_MAXTEMPBUFFER);
107 DAQ_DECLBUF(daq_reply,S4_MAXTEMPBUFFER);
108 DAQ_DECLBUF(S4_Buffer,S4_MAXTEMPBUFFER);
109
110 #define S4_SKIP_HEADER SM_PKTHEADER_LEN
111
112 /*=========================== Structure define ==============================*/
113
114
115 /*============================ Enumerate define =============================*/
116
117
118 status_code S4_Init_ETOATO()
119 {
120 CH_SetAtoEto(CH_S4_GEN_RESET,2,3);
121 CH_SetAtoEto(CH_S4_READ_CR,2,3);
122 CH_SetAtoEto(CH_S4_ACQUISITION,2,3);
123 }
124
125 status_code S4_Init()
126 {
127 DAQ_BUFFER_INIT(S4_TempPif0);
128 DAQ_BUFFER_INIT(daq_reply);
129 DAQ_BUFFER_INIT(S4_Buffer);
130
131 S4_Init_ETOATO();
132
133 return CM_RC_SUCCESSFUL;
134 }
135
136 status_code S4_Initialization()
137 {
138 status_code status;
139 DAQ_CMD_BUF* auto_buf;
140 UINT16 status_reg;
141 UINT16 combuf,outbuf;
142 DAQ_FE s4_link = DAQ_FE_S4;
143
144 DAQ_ResetPIF(DAQ_DEFAULT_ETO_TICS,DAQ_MAX_DTO_TICS,SM_DAQSETUP,HB_PKTTYPE_S4_INIT);
145 PRH_VAR_S4_WORKING = 1;
146
147 combuf = PRH_VAR_S4_TRH;
148 status = HK_KHB_Cmd2FE(KHB_S4,1,0,&combuf,&outbuf,S4_BOARD_TIMEOUT);
149
150 if (status == CM_RC_SUCCESSFUL)
151 {
152 status = HK_ReadKHBStatusRegister(&status_reg);
153
154 if (status == CM_RC_SUCCESSFUL)
155 {
156 if (status_reg & KHB_STS_ALARM_S4_FE)
157 {
158 /*@LOG S4 Initialization: S4 alarm on KHB status after S4_TRH setting */
159 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_TRH_1_SOFT);
160 PRH_VAR_S4_WORKING = 0;
161 }
162
163 DAQ_Format_CMD_Empty(&S4_TempPif0);
164 CH_GetBuf(CH_S4_GEN_RESET, &auto_buf);
165 DAQ_Format_Fe2Daq(&S4_TempPif0,auto_buf,s4_link);
166
167 DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&S4_TempPif0);
168 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_STORE_MM,NULL,DAQ_NO_STORE_RAM);
169 }
170 else
171 {
172 /*@LOG S4 Initialization: KHB status register reading error after S4_TRH setting */
173 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_TRH_1_HARD);
174 status = CM_RC_DO_POWER_OFF_ON;
175 }
176 }
177 else
178 {
179 /*@LOG S4 Initialization: KHB status eror reading error after S4_TRH setting */
180 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_TRH_1_HARD);
181 status = CM_RC_DO_POWER_OFF_ON;
182 }
183 return status;
184 }
185
186 status_code S4_Calibration()
187 {
188 status_code status;
189 DAQ_CMD_BUF* auto_buf;
190 UINT16 status_reg,i,combuf,outbuf;
191 DAQ_FE s4_link,tb_link;
192
193 s4_link = DAQ_FE_S4;
194 tb_link = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK);
195
196 DAQ_ResetPIF(DAQ_ACQ_ETO_TICS,DAQ_MAX_DTO_TICS,SM_DAQSETUP,HB_PKTTYPE_CALIB_S4);
197 DAQ_Format_CMD_Empty(&S4_TempPif0);
198 DAQ_Format_CMD_Empty(&S4_Buffer);
199
200 CH_GetBuf(CH_TB_OPEN_CALIB_GATE,&auto_buf);
201 DAQ_Format_Cmd2Fe(&S4_TempPif0,auto_buf,tb_link);
202 DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&S4_TempPif0);
203 status = DAQ_SendCmdQueue2CMDIF(SM_CALEXP0);
204
205 if (status)
206 return(status);
207
208
209 combuf = S4_CALIB_00;
210 status = HK_KHB_Cmd2FE(KHB_S4,1,0,&combuf,&outbuf,S4_BOARD_TIMEOUT);
211
212 if(status == CM_RC_SUCCESSFUL) /* calib 00 */
213 {
214
215 status = HK_ReadKHBStatusRegister(&status_reg);
216
217 if (status == CM_RC_SUCCESSFUL) /* calib 00 stw */
218 {
219 if (status_reg & KHB_STS_ALARM_S4_FE)
220 {
221 /*@LOG S4 Calibration: KHB alarm on status register after S4_CALIB_00 setting */
222 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_00_SOFT);
223 PRH_VAR_S4_WORKING = 0;
224
225 }
226 DAQ_Format_CMD_Empty(&S4_TempPif0);
227 DAQ_Format_ReleaseBusy(&S4_TempPif0);
228 CH_GetBuf(CH_S4_ACQUISITION,&auto_buf);
229 DAQ_Format_Fe2Daq(&S4_TempPif0,auto_buf,s4_link);
230 DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&S4_TempPif0);
231 status = DAQ_SendCmd2PIFWaitDAQReply_CallBack(SM_CALEXP0,
232 DAQ_NO_STORE_MM,
233 &daq_reply,
234 DAQ_STORE_RAM,
235 HK_KHBSend128Trigger);
236 LU_EXIT_IFERROR(status);
237
238 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
239
240 if (status == CM_RC_SUCCESSFUL) /* 128_0 */
241 {
242 for(i=0; i < 127; i++)
243 {
244 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_NO_STORE_MM,&daq_reply,DAQ_STORE_RAM);
245 LU_EXIT_IFERROR(status);
246 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
247 }
248
249 combuf = S4_CALIB_01;
250 status = HK_KHB_Cmd2FE(KHB_S4,1,0,&combuf,&outbuf,S4_BOARD_TIMEOUT);
251
252 if (status == CM_RC_SUCCESSFUL) /* calib 01 */
253 {
254 status = HK_ReadKHBStatusRegister(&status_reg);
255
256 if (status == CM_RC_SUCCESSFUL) /* calib 01 stw */
257 {
258 if (status_reg & KHB_STS_ALARM_S4_FE)
259 {
260 /*@LOG S4 Calibration: KHB alarm on status register after S4_CALIB_01 setting */
261 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_01_SOFT);
262 PRH_VAR_S4_WORKING = 0;
263 }
264
265 DAQ_Format_CMD_Empty(&S4_TempPif0);
266 DAQ_Format_ReleaseBusy(&S4_TempPif0);
267 CH_GetBuf(CH_S4_ACQUISITION,&auto_buf);
268 DAQ_Format_Fe2Daq(&S4_TempPif0,auto_buf,s4_link);
269 DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&S4_TempPif0);
270 status = DAQ_SendCmd2PIFWaitDAQReply_CallBack(SM_CALEXP0,
271 DAQ_NO_STORE_MM,
272 &daq_reply,
273 DAQ_STORE_RAM,
274 HK_KHBSend128Trigger);
275 LU_EXIT_IFERROR(status);
276
277 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
278
279 if (status == CM_RC_SUCCESSFUL) /* 128_1 */
280 {
281 for(i=0; i < 127; i++)
282 {
283 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_NO_STORE_MM,&daq_reply,DAQ_STORE_RAM);
284 LU_EXIT_IFERROR(status);
285 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
286 }
287
288 combuf = S4_CALIB_10;
289 status = HK_KHB_Cmd2FE(KHB_S4,1,0,&combuf,&outbuf,S4_BOARD_TIMEOUT);
290
291 if (status == CM_RC_SUCCESSFUL) /* calib 10 */
292 {
293 status = HK_ReadKHBStatusRegister(&status_reg);
294
295 if (status == CM_RC_SUCCESSFUL) /* calib 10 stw */
296 {
297 if (status_reg & KHB_STS_ALARM_S4_FE)
298 {
299 /*@LOG S4 Calibration: S4 alarm on status register after S4_CALIB_02 setting */
300 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_10_SOFT);
301 PRH_VAR_S4_WORKING = 0;
302 }
303
304 status = DAQ_SendCmd2PIFWaitDAQReply_CallBack(SM_CALEXP0,
305 DAQ_NO_STORE_MM,
306 &daq_reply,
307 DAQ_STORE_RAM,
308 HK_KHBSend128Trigger);
309 LU_EXIT_IFERROR(status);
310 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
311
312 if (status == CM_RC_SUCCESSFUL) /* 128_2 */
313 {
314 for(i=0; i < 127; i++)
315 {
316 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_NO_STORE_MM,&daq_reply,DAQ_STORE_RAM);
317 LU_EXIT_IFERROR(status);
318 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
319 }
320
321 combuf = S4_CALIB_11;
322 status = HK_KHB_Cmd2FE(KHB_S4,1,0,&combuf,&outbuf,S4_BOARD_TIMEOUT);
323
324 if (status == CM_RC_SUCCESSFUL) /* calib 11 */
325 {
326 status = HK_ReadKHBStatusRegister(&status_reg);
327
328 if (status == CM_RC_SUCCESSFUL) /* calib 11 stw */
329 {
330 if (status_reg & KHB_STS_ALARM_S4_FE)
331 {
332 /*@LOG S4 Calibration: S4 alarm on status register after S4_CALIB_11 setting */
333 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_11_SOFT);
334 PRH_VAR_S4_WORKING = 0;
335 }
336
337 status = DAQ_SendCmd2PIFWaitDAQReply_CallBack(SM_CALEXP0,
338 DAQ_NO_STORE_MM,
339 &daq_reply,
340 DAQ_STORE_RAM,
341 HK_KHBSend128Trigger);
342
343 LU_EXIT_IFERROR(status);
344 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
345
346 if (status == CM_RC_SUCCESSFUL) /* 128_3 */
347 {
348 for(i=0; i < 127; i++)
349 {
350 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,
351 DAQ_NO_STORE_MM,
352 &daq_reply,
353 DAQ_STORE_RAM);
354 LU_EXIT_IFERROR(status);
355 DAQ_Format_AppendBuffer_offset(&S4_Buffer,&daq_reply,S4_SKIP_HEADER);
356 }
357
358 combuf = PRH_VAR_S4_TRH;
359 status = HK_KHB_Cmd2FE(KHB_S4,1,0,&combuf,&outbuf,S4_BOARD_TIMEOUT);
360
361 if (status == CM_RC_SUCCESSFUL) /* S4_TRH_1 */
362 {
363 status = HK_ReadKHBStatusRegister(&status_reg);
364
365 if (status == CM_RC_SUCCESSFUL) /* S4_TRH_1 stw */
366 {
367 if (status_reg & KHB_STS_ALARM_S4_FE)
368 {
369 /*@LOG S4 Calibration: S4 alarm on status register after S4_TRH setting */
370 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_TRH_2_SOFT);
371 PRH_VAR_S4_WORKING = 0;
372 }
373
374 DAQ_Format_CMD_Empty(&S4_TempPif0);
375 CH_GetBuf(CH_TB_CLOSE_CALIB_GATE,&auto_buf);
376 DAQ_Format_Cmd2Fe(&S4_TempPif0,auto_buf,tb_link);
377 DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&S4_TempPif0);
378 status = DAQ_SendCmdQueue2CMDIF(SM_CALEXP0);
379 LU_EXIT_IFERROR(status);
380 HB_StoreMisc(HB_PKTTYPE_CALIB_S4,&S4_Buffer);
381 RM_WriteHBInfos(FALSE);
382 }
383 else /* S4_TRH_1 stw */
384 {
385 /*@LOG S4 Calibration: S4 KHB status register reading hard error after S4_TRH_1 */
386 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_TRH_1_HARD);
387 status = CM_RC_DO_POWER_OFF_ON;
388 }
389 }
390 else /* S4_TRH_1 */
391 {
392 /*@LOG S4 Calibration: S4 KHB hard error after S4_TRH_1 */
393 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_TRH_1_HARD);
394 status = CM_RC_DO_POWER_OFF_ON;
395 }
396 }
397 else /* 128_3 */
398 {
399 /*@LOG S4 Calibration: S4 KHB 128_3 failed */
400 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_128TRIGGER_3);
401 status = CM_RC_DO_POWER_OFF_ON;
402 }
403 }
404 else /* calib 11 stw */
405 {
406 /*@LOG S4 Calibration: S4 KHB status register reading hard error after S4_TRH_11 */
407 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_11_HARD);
408 status = CM_RC_DO_POWER_OFF_ON;
409 }
410 }
411 else /* calib 11 */
412 {
413 /*@LOG S4 Calibration: S4 KHB hard error after S4_TRH_11 */
414 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_11_HARD);
415 status = CM_RC_DO_POWER_OFF_ON;
416 }
417 }
418 else /* 128_2 */
419 {
420 /*@LOG S4 Calibration: S4 KHB 128_2 failed */
421 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_128TRIGGER_2);
422 status = CM_RC_DO_POWER_OFF_ON;
423 }
424 }
425 else /* calib 10 stw */
426 {
427 /*@LOG S4 Calibration: S4 KHB status register reading hard error after S4_TRH_10 */
428 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_10_HARD);
429 status = CM_RC_DO_POWER_OFF_ON;
430 }
431 }
432 else /* calib 10 */
433 {
434 /*@LOG S4 Calibration: S4 KHB hard error after S4_TRH_10 */
435 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_10_HARD);
436 status = CM_RC_DO_POWER_OFF_ON;
437 }
438 }
439 else /* 128_1 */
440 {
441 /*@LOG S4 Calibration: S4 KHB 128_1 failed */
442 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_128TRIGGER_1);
443 status = CM_RC_DO_POWER_OFF_ON;
444 }
445 }
446 else /*calib 01 stw */
447 {
448 /*@LOG S4 Calibration: S4 KHB status register reading hard error after S4_TRH_01 */
449 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_01_HARD);
450 status = CM_RC_DO_POWER_OFF_ON;
451 }
452 }
453 else /* calib 01 */
454 {
455 /*@LOG S4 Calibration: S4 KHB hard error after S4_TRH_01 */
456 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_01_HARD);
457 status = CM_RC_DO_POWER_OFF_ON;
458 }
459 }else /* 128_0 */
460 {
461 /*@LOG S4 Calibration: S4 KHB 128_1 failed */
462 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_128TRIGGER_0);
463 status = CM_RC_DO_POWER_OFF_ON;
464 }
465 }else /*calib 01 stw */
466 {
467 /*@LOG S4 Calibration: S4 KHB status register reading hard error after S4_TRH_01 */
468 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_00_HARD);
469 status = CM_RC_DO_POWER_OFF_ON;
470 }
471 }else /* calib 01 */
472 {
473 /*@LOG S4 Calibration: S4 KHB hard error after S4_TRH_00 */
474 ALM_WriteLog(ALM_TRACE_ID,ALM_S4_CALIB_00_HARD);
475 status = CM_RC_DO_POWER_OFF_ON;
476 }
477
478 return status;
479 }
480
481 status_code S4_Error_Handler()
482 {
483 status_code status;
484 DAQ_CMD_BUF* auto_buf;
485 PRH_VAR_S4_WORKING = 0;
486
487 DAQ_Format_CMD_Empty(&S4_TempPif0);
488
489 CH_GetBuf(CH_S4_READ_CR,&auto_buf);
490 DAQ_Format_Fe2Daq(&S4_TempPif0,auto_buf,DAQ_FE_S4);
491
492 DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&S4_TempPif0);
493 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_STORE_MM,NULL,DAQ_NO_STORE_RAM);
494 if(status != CM_RC_SUCCESSFUL)
495 status=CM_RC_DO_RESET_IF_ALM;
496 return status;
497 }

  ViewVC Help
Powered by ViewVC 1.1.23