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

Contents of /quicklook/dataToXML/Data/compilationInfo/src/INFN/MH_ModeHandler_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 (19 years, 2 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
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: MH_ModeHandler_INFN.c,v 1.34 2005/03/21 13:46:49 faber Exp $
4 * $Revision: 1.34 $
5 * $Date: 2005/03/21 13:46:49 $
6 * $RCSfile: MH_ModeHandler_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: faber $
12 * :
13 ****************************************************************************
14 * U p d a t i n g
15 *
16 * $Log: MH_ModeHandler_INFN.c,v $
17 * Revision 1.34 2005/03/21 13:46:49 faber
18 * TRIG_II software introeduces as emtpy commands.
19 * DNLK_TIM started at start downlink in order to be sure end of download.
20 *
21 * Revision 1.33 2005/03/06 14:54:46 sebastiani
22 * version running on 06 03 2005
23 *
24 * Revision 1.32 2005/02/21 08:58:29 sebastiani
25 * all log comments completed
26 *
27 * Revision 1.31 2004/12/02 10:43:38 sebastiani
28 * fix AC
29 * fix CAL
30 * fix HK BUFTYPE
31 *
32 * Revision 1.30 2004/11/19 15:14:52 sebastiani
33 * PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file
34 *
35 * Revision 1.29 2004/11/05 16:43:07 sebastiani
36 * *** empty log message ***
37 *
38 * Revision 1.28 2004/11/05 09:36:35 sebastiani
39 * first version of the PM state machine. tried but not deeply tested
40 *
41 * Revision 1.27 2004/09/17 15:01:00 faber
42 * LU_INFN_LOG flags fixing
43 *
44 * Revision 1.26 2004/08/26 16:54:34 sebastiani
45 * version work fine
46 *
47 * Revision 1.25 2004/07/27 10:13:48 faber
48 * LU_ALARM macro introduced,
49 * LU_XXXX bit field "logtype" redefined.
50 * HistoryArea 5 now log a 32 bit word as "info1"
51 * and logging is reformatted.
52 *
53 * Revision 1.24 2004/07/01 14:47:44 sebastiani
54 * add crc_c
55 *
56 * Revision 1.23 2004/06/22 08:57:01 sebastiani
57 * *** empty log message ***
58 *
59 * Revision 1.22 2004/06/15 08:24:37 sebastiani
60 * *** empty log message ***
61 *
62 * Revision 1.21 2004/06/08 14:02:43 alfarano
63 * eeprom functions
64 *
65 * Revision 1.20 2004/06/01 16:41:19 sebastiani
66 * EventReceive ANY
67 *
68 * Revision 1.19 2004/05/20 16:03:52 faber
69 * ACQ flow dev continuing
70 *
71 * Revision 1.18 2004/05/04 17:20:51 sebastiani
72 * new GOM TEST mode introduced. Entry point in TS_RM_Test(c1,c2)
73 *
74 * Revision 1.17 2004/01/12 17:51:28 tassa
75 * manca solo la parte di invio e ricezione sulla/dalla IDAQ
76 *
77 * Revision 1.16 2003/12/15 10:57:16 sebastiani
78 * last changes for the acceptance of TM tests in Rome of 9-12/Dec/2003
79 *
80 * Revision 1.15 2003/12/06 08:32:38 faber
81 * startup procedure tuned. TMTC sampling storing at startup
82 *
83 * Revision 1.14 2003/12/03 14:36:51 faber
84 * more action definition about mcmd (setmode/purge_trd).
85 * SSt word better defined
86 *
87 * Revision 1.13 2003/12/01 15:44:09 faber
88 * Donwlink duration field is a 16 bit word, not 32 (only HSB)
89 *
90 * Revision 1.12 2003/11/19 15:48:37 faber
91 * *** empty log message ***
92 *
93 * Revision 1.11 2003/10/17 10:01:55 sebastiani
94 * MC_piSetState introduced in all cases of MH_SetGOM
95 *
96 * Revision 1.10 2003/09/25 09:47:20 faber
97 * donwlink time/duration *= --> /=
98 *
99 * Revision 1.9 2003/09/24 14:52:59 carota
100 * bug fix again (like before)
101 *
102 * Revision 1.8 2003/09/24 14:06:43 faber
103 * fix: 2 words mcmcd scanning skippend
104 *
105 * Revision 1.7 2003/09/22 09:59:35 faber
106 * new select mode definitions
107 *
108 * Revision 1.6 2003/09/19 15:57:35 faber
109 * Large development update INFN software
110 *
111 * Revision 1.5 2003/09/12 10:57:41 faber
112 * development in proress (Working schedule module)
113 *
114 * Revision 1.4 2003/09/10 16:15:52 faber
115 * PRH_EXTERN_VAR(XX_LOGMASK) removed (not needed any more)
116 *
117 * Revision 1.3 2003/09/10 11:55:07 faber
118 * LU_MASK introduced. Log mask for module is now an unique array (PRH_ARR_LOG_MASK) indexed by __FILEID__
119 *
120 * Revision 1.2 2003/09/10 10:32:37 faber
121 * Large implementation of PamManager/RunManager Pam Sowfare. (compiled,never run)
122 *
123 * Revision 1.1.1.1 2003/08/04 09:40:22 sebastiani
124 * Imported sources laben rel. 19.06.2003 integrated with pam2
125 *
126 * Revision 1.4 2003/07/17 11:15:52 sebastiani
127 * idaq manager
128 * new print for logging in minicom
129 *
130 * Revision 1.3 2003/07/03 12:39:29 sebastiani
131 * *** empty log message ***
132 *
133 * Revision 1.2 2003/06/18 16:53:19 sebastiani
134 * Pam/Run Manager development update. ExpSeq sequence is receiven from the RunManager (simulator mode)
135 *
136 * Revision 1.1 2003/06/12 15:17:21 sebastiani
137 * first ModeHandler update
138 *
139 *
140 *****************************************************************************/
141
142
143 /*============================= Include File ================================*/
144
145 #include <src/INFN/LU_SourceFileID_INFN.h>
146 #define __FILEID__ _MH_ModeHandler_INFN__c
147
148
149 #ifdef TEST_I
150 // #include <src/INFN/TS_Test_INFN.h>
151 #endif // TEST_I
152
153 #include <src/INFN/LU_LogUtility_INFN.h>
154 #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
155 LU_DECL_MASK();
156
157 #include <src/INFN/PM_PamManager_INFN.h>
158 #include <src/INFN/RM_RunManager_INFN.h>
159
160 #include <src/BasicSW/RTEMSInterface/OS_rtems_p.h>
161 #include <src/INFN/MH_ModeHandler_INFN.h>
162 #include <src/INFN/SMH_SelectModeHandler_INFN.h>
163
164 #include <src/ModeManager/ModeCoordinator/MC_ModeCoordinator_p.h>
165 #include <src/HKManager/HistoryArea/HA_HistoryArea_p.h>
166 #include <src/FileManager/MMSUManager/FT_MMSUManager_p.h>
167 #include <src/FileManager/MMSUManager/FT_MMSUManager_int.h>
168 #include <src/INFN/WS_WorkingSchedule_INFN.h>
169
170 /*============================ Global define ================================*/
171
172
173 /*============================== global types ==============================*/
174
175
176
177 /*****************************************************************************/
178 /*=========================== Structure define ==============================*/
179
180
181 /*****************************************************************************/
182 /*============================ Enumerate define =============================*/
183
184 /*****************************************************************************/
185
186 /*=== Mode Handler O P E R A T I O N E N V I R O N M ==*/
187
188 /*****************************************************************************/
189
190 /* the General Operation Mode of Pamela. What pamela is doing */
191 static MH_GOM MH_GOM_Mode,MH_Saved_GOM_Mode;
192 static RM_OPCODES MH_LastIgnoredOpDuringDownload;
193 static UINT32 MH_test_c1,MH_test_c2,MH_test_c3;
194 static UINT32 MH_SubMode;
195
196 /* annouce donwload infos: (B1 MCMD) */
197 static TI_TIME MH_DownlinkStart;
198 static TI_TIME MH_DownlinkDuration;
199 static BOOL MH_DownlinkInfo=FALSE;
200 static BOOL MH_DownloadIsInProgress_flag=FALSE;
201
202
203 UINT32 MH_GetSubMode() {
204 return MH_SubMode;
205 }
206
207 status_code MH_Init() {
208 MH_SubMode = 0;
209 MH_Saved_GOM_Mode=MH_GOM_NULL;
210 MH_GOM_Mode=MH_GOM_NULL;
211 MH_test_c1=0;
212 MH_test_c2=0;
213 MH_test_c3=0;
214 MH_DownlinkInfo = FALSE;
215 return SUCCESSFUL;
216 }
217
218 MH_GOM MH_GetGOM() {
219 MH_GOM m;
220 UINT32 level;
221 OS_PROTECTED_INT(level,m=MH_GOM_Mode);
222 return m;
223 }
224
225 MH_GOM MH_GetSavedGOM() {
226 MH_GOM m;
227 UINT32 level;
228 OS_PROTECTED_INT(level,m=MH_Saved_GOM_Mode);
229 return m;
230 }
231
232 /*
233 MH_GetDownlinkInfo.
234
235 the function return the downlink start time and duration.
236 times are in 1/8 of seconds.
237 if DownlinkInfo is not available (B1 not called) it returns
238 an error.
239 the function also automatically clear the DownlinkInfo, so
240 another successfull call of the function must wait for another
241 downlink info to come.
242 */
243 status_code MH_GetDownlinkInfo(TI_TIME* start,TI_TIME* duration) {
244 status_code status;
245 if(MH_DownlinkInfo) {
246 /* return infos: */
247 *start = MH_DownlinkStart;
248 *duration = MH_DownlinkDuration;
249 /* clean information flag */
250 MH_DownlinkInfo=FALSE;
251 status=SUCCESSFUL;
252 }else
253 status=MH_INFN_NODOWNLINKINFO;
254 return status;
255 }
256
257 status_code MH_SetModeFromMCMD(BYTE Mode,MA_HEADER_MCMD *headerMcmd) {
258 status_code status=CM_RC_SUCCESSFUL;
259 static MsgTsk ActiveMsg;
260 unsigned int code;
261 unsigned int timetagFlag;
262 unsigned short* pMcmdInfo;
263 unsigned int CurrentState;
264
265
266 MsgTsk SndMsg;
267
268
269
270 //MC_piSetState(MC_ACTIVE_STATE);
271 // Delete MCMD from partition
272
273
274 switch(Mode)
275 {
276 case SMH_SUBMODEA0:
277 // MH_SetGOM(MH_GOM_MAINTENANCE);
278 PM_SetGom(PM_STOP_AND_WAIT,SCM_NO_ACTION);
279 MH_SubMode = Mode;
280 break;
281 case SMH_SUBMODEB1:
282 MH_PrepareDownlink(headerMcmd);
283 MH_SubMode = Mode;
284 break;
285 case SMH_SUBMODEB2:
286 WS_SetFavouriteWorkingSchedule(WS_3);
287 MH_SubMode = Mode;
288 break;
289 case SMH_SUBMODEB3:
290 WS_SetFavouriteWorkingSchedule(WS_0);
291 MH_SubMode = Mode;
292 break;
293 case SMH_SUBMODEB41:
294 WS_SetFavouriteWorkingSchedule(WS_1);
295 MH_SubMode = Mode;
296 break;
297 case SMH_SUBMODEB42:
298 WS_SetFavouriteWorkingSchedule(WS_2);
299 MH_SubMode = Mode;
300 break;
301 default :
302 /*@LOG unrecognized SUBMODE in SetModeFromMCMD - Mode */
303 LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,Mode);
304 break;
305 }
306 /*@LOG Trace: SubMode */
307 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,Mode);
308 return (status);
309
310 }
311
312 status_code MH_PrepareDownlink(MA_HEADER_MCMD* headerMcmd) {
313 UINT16 start_l,start_h,duration_l,duration_h;
314 UINT16 *usp;
315 MC_STATE CurrentState;
316 /* prepare DOWNLINK */
317 MC_piGetState(&CurrentState);
318 /* get information from the MCMD: */
319 usp = SMH_GETPTR_BODYAREA(headerMcmd->PtrMCMD);
320 /* skip select mode info: SUBMODE & LEN */
321 usp+=2;
322 /* get the start time info: */
323 start_h = *usp;
324 usp++;
325 start_l = *usp;
326 usp++;
327 /* get the duration info: */
328 duration_h = *usp;
329 usp++;
330 duration_l = *usp;
331 /* TBD: stop acq here */
332 MH_DownlinkStart =
333 (unsigned int)start_h << 16 |
334 (unsigned int)start_l;
335 /*
336 MH_DownlinkDuration =
337 (unsigned int)duration_h << 16 |
338 (unsigned int)duration_l;
339 */
340 MH_DownlinkDuration =
341 (unsigned int)duration_h;
342
343 /* because we have times in units of 0.125 seconds in the MCMDs,
344 we multiply the value by 8
345 */
346
347 MH_DownlinkInfo=TRUE;
348
349 MH_DownlinkStart /= 8;
350 MH_DownlinkDuration /= 8;
351 /*@LOG Downlink Start */
352 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,MH_DownlinkStart);
353 /*@LOG Downlink Dowlink Duration */
354 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,MH_DownlinkDuration);
355
356 MH_SetGOM(MH_GOM_DOWNLOAD);
357 }
358
359 status_code MH_SetTestParam(UINT32 c1,UINT32 c2,UINT32 c3) {
360 MH_test_c1=c1;
361 MH_test_c2=c2;
362 MH_test_c3=c3;
363 }
364
365 void MH_SetLastIgnoredOpDuringDownload(RM_OPCODES m) {
366 UINT32 level;
367 OS_PROTECTED_INT(level,MH_LastIgnoredOpDuringDownload=m);
368 }
369
370
371 MH_GOM MH_GetLastIgnoredOpDuringDownload() {
372
373 static MH_GOM MH_RMOPCODES_2_GOM [RM_OP_MAX] = {
374 /* RM_OP_NULL -> */ MH_GOM_MAINTENANCE ,
375 /* RM_OP_IDLE -> */ MH_GOM_MAINTENANCE ,
376 /* RM_OP_INITIALIZATION -> */ MH_GOM_INITIALIZATION ,
377 /* RM_OP_CALIBRATION -> */ MH_GOM_CALIBRATION,
378 /* RM_OP_ACQUISITION -> */ MH_GOM_ACQUISITION,
379 /* RM_OP_FLUSH_HB -> */ MH_GOM_FLUSH_HB, // not sure here!
380 /* RM_OP_FORCE_IDAQCMD -> */ MH_GOM_FORCE_IDAQCMD,
381 /* RM_OP_TEST -> */ MH_GOM_TEST,
382 /* RM_OP_SINT -> */ MH_GOM_NULL
383 };
384
385 UINT32 level;
386 RM_OPCODES m;
387 OS_PROTECTED_INT(level,m=MH_LastIgnoredOpDuringDownload);
388 return MH_RMOPCODES_2_GOM[m];
389 }
390
391 void MH_EndOfDownload() {
392 UINT32 level;
393 OS_PROTECTED_INT(level,MH_DownloadIsInProgress_flag=FALSE);
394 }
395
396 BOOL MH_DownloadIsInProgress() {
397 UINT32 level;
398 BOOL b;
399 OS_PROTECTED_INT(level,b=MH_DownloadIsInProgress_flag);
400 return b;
401 }
402
403 status_code MH_SetGOM(MH_GOM newmode) {
404 rtems_event_set unused;
405 status_code status;
406 PM_INFN_STATUS s;
407 UINT32 level;
408 /* stop the run manager: */
409 status = PM_StopRunManager();
410 if(status == SUCCESSFUL) {
411 switch(newmode) {
412 case MH_GOM_INITIALIZATION:
413 MH_Saved_GOM_Mode = MH_GOM_Mode;
414 RM_SendCodeRunManager(RM_OP_INITIALIZATION);
415 break;
416 case MH_GOM_CALIBRATION:
417 MH_Saved_GOM_Mode = MH_GOM_Mode;
418 RM_SendCodeRunManager(RM_OP_CALIBRATION);
419 break;
420 case MH_GOM_ACQUISITION:
421 MH_Saved_GOM_Mode = MH_GOM_Mode;
422 RM_SendCodeRunManager(RM_OP_ACQUISITION);
423 break;
424 case MH_GOM_DOWNLOAD:
425
426 {
427 RM_OPCODES rmopcode=RM_OP_NULL;
428 OS_PROTECTED_INT(level,MH_DownloadIsInProgress_flag=TRUE);
429 switch(MH_GOM_Mode) {
430 case MH_GOM_INITIALIZATION:
431 rmopcode=RM_OP_INITIALIZATION;
432 break;
433 case MH_GOM_CALIBRATION:
434 rmopcode=RM_OP_CALIBRATION ;
435 break;
436 case MH_GOM_ACQUISITION:
437 rmopcode=RM_OP_ACQUISITION;
438 break;
439 }
440 if(rmopcode!=RM_OP_NULL)
441 RM_SendCodeRunManager(rmopcode);
442
443 /* this is to be sure a stop downlink will occur in case no download MCMD arrive. Timeout one minute */
444 status = OS_piStartTimer_INFN(DNLK_TIM,PRH_VAR_MH_END_OF_DOWNLOAD_TIMEOUT,
445 FT_ifStopDownLink_CallBack, NULL);
446 }
447
448 // OS_PROTECTED_INT(level,MH_DownloadIsInProgress_flag=TRUE);
449 // RM_SendCodeRunManager(MH_GOM_Mode); /* make the RM remember what is doing */
450 break;
451 case MH_GOM_MAINTENANCE:
452 MH_Saved_GOM_Mode = MH_GOM_Mode;
453 break;
454 case MH_GOM_FLUSH_HB:
455 RM_SendCodeRunManager(RM_OP_FLUSH_HB); /* */
456 break;
457 case MH_GOM_FORCE_IDAQCMD:
458 RM_SendCodeRunManager(RM_OP_FORCE_IDAQCMD);
459 break;
460 case MH_GOM_TEST:
461 RM_SendTest(MH_test_c1,MH_test_c2,MH_test_c3);
462 break;
463 default:
464 /*@LOG MH_SetGOM: unrecognized newmode - newmode */
465 LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,newmode);
466 MH_GOM_Mode=MH_GOM_MAINTENANCE;
467 break;
468 }
469 MH_GOM_Mode = newmode;
470 }else {
471 /*@LOG MH_SetGOM: error in stopping run manager - status */
472 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
473 }
474
475 }
476
477
478

  ViewVC Help
Powered by ViewVC 1.1.23