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

Contents of /quicklook/dataToXML/Data/compilationInfo/src/INFN/PM_PamManager_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: PM_PamManager_INFN.c,v 1.102 2005/03/23 10:22:14 sebastiani Exp $
4 * $Revision: 1.102 $
5 * $Date: 2005/03/23 10:22:14 $
6 * $RCSfile: PM_PamManager_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: PM_PamManager_INFN.c,v $
17 * Revision 1.102 2005/03/23 10:22:14 sebastiani
18 * *** empty log message ***
19 *
20 * Revision 1.101 2005/03/20 18:23:04 sebastiani
21 * old code for timers calcelled an Gas system
22 *
23 * Revision 1.100 2005/03/13 18:12:46 sebastiani
24 * better logging in status, SetActiveState in correct position
25 *
26 * Revision 1.99 2005/03/06 14:54:46 sebastiani
27 * version running on 06 03 2005
28 *
29 * Revision 1.98 2005/02/21 14:26:01 sebastiani
30 * TSB bugfixes.
31 *
32 * Revision 1.97 2005/02/21 08:58:29 sebastiani
33 * all log comments completed
34 *
35 * Revision 1.96 2005/02/19 10:19:38 sebastiani
36 * ALM_S4_CALIB_00_HARD,ALM_S4_CALIB_00_SOFT,ALM_S4_128TRIGGER_0 added
37 *
38 * Revision 1.95 2005/01/28 11:27:11 sebastiani
39 * CM_RC_DO_AGAINACQ added in the DecodeCode
40 *
41 * Revision 1.94 2005/01/26 18:46:48 sebastiani
42 * new bug fixes for WS
43 *
44 * Revision 1.93 2005/01/10 09:48:34 sebastiani
45 * fix warning
46 *
47 * Revision 1.92 2004/12/20 14:02:04 faber
48 * @LOG entry introduced in all ALM_WriteLog occurrences
49 *
50 * Revision 1.91 2004/12/17 12:46:40 faber
51 * ALARM REGISTER aligned to be 32 bit. memory aling core dump (should be) fixed
52 *
53 * Revision 1.90 2004/12/15 09:26:40 sebastiani
54 * better use of PRH_VAR_AUTO_SCM_MODE and new log entry PAMELA_STATUS, shows
55 * all status of PM,RM,SCM
56 *
57 * Revision 1.89 2004/11/23 22:54:06 sebastiani
58 * *** empty log message ***
59 *
60 * Revision 1.88 2004/11/23 15:42:31 faber
61 * *** empty log message ***
62 *
63 * Revision 1.87 2004/11/23 12:24:57 sebastiani
64 * fixed dcdcon procedure
65 *
66 * Revision 1.86 2004/11/19 15:14:52 sebastiani
67 * PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file
68 *
69 * Revision 1.85 2004/11/18 17:51:53 sebastiani
70 * added CAL_WRITE_FPGA_REG_I341_x
71 *
72 * Revision 1.84 2004/11/18 16:02:34 sebastiani
73 * GAS/TRD removed
74 *
75 * Revision 1.83 2004/11/10 17:00:00 sebastiani
76 * - GS_COMPILE directive introduced and be undef by default
77 * - automatic flush mechanism by run manager mailbox timeout
78 *
79 * Revision 1.82 2004/11/05 16:43:07 sebastiani
80 * *** empty log message ***
81 *
82 * Revision 1.81 2004/11/05 09:36:35 sebastiani
83 * first version of the PM state machine. tried but not deeply tested
84 *
85 * Revision 1.80 2004/11/02 15:41:39 faber
86 * *** empty log message ***
87 *
88 * Revision 1.79 2004/10/22 16:05:06 sebastiani
89 * *** empty log message ***
90 *
91 * Revision 1.78 2004/10/19 16:59:27 sebastiani
92 * first text for IPM/ciclyc
93 *
94 * Revision 1.77 2004/10/18 15:09:24 faber
95 * *** empty log message ***
96 *
97 * Revision 1.76 2004/10/18 14:11:37 faber
98 * *** empty log message ***
99 *
100 * Revision 1.75 2004/10/15 11:19:36 sebastiani
101 * *** empty log message ***
102 *
103 * Revision 1.74 2004/10/04 13:59:05 alfarano
104 * fixed some return code in run manager
105 *
106 * Revision 1.73 2004/09/28 15:36:25 sebastiani
107 * interrupt manager fix
108 *
109 * Revision 1.72 2004/09/28 08:52:04 alfarano
110 * disabletmtc/savetmtc funciont call fix
111 *
112 * Revision 1.71 2004/09/27 15:42:43 alfarano
113 * tracker sensor board functions
114 *
115 * Revision 1.70 2004/09/17 15:01:00 faber
116 * LU_INFN_LOG flags fixing
117 *
118 * Revision 1.69 2004/09/14 13:05:37 alfarano
119 * update TM constants and definitions
120 *
121 * Revision 1.68 2004/09/13 16:07:46 alfarano
122 * *** empty log message ***
123 *
124 * Revision 1.67 2004/09/09 14:52:55 sebastiani
125 * using PreparePage to send cmd to idaq/FE
126 * added some test
127 * added trigger param
128 * added/tested Force Send KHB_to_FE
129 * added/tested Send Cmd to IDAQ/FE
130 *
131 * Revision 1.66 2004/09/08 10:39:12 faber
132 * *** empty log message ***
133 *
134 * Revision 1.65 2004/08/31 09:08:35 sebastiani
135 * fix warning
136 *
137 * Revision 1.64 2004/08/30 07:08:18 sebastiani
138 * little modify
139 *
140 * Revision 1.63 2004/08/27 13:13:49 alfarano
141 * High voltage functions
142 *
143 * Revision 1.62 2004/08/26 16:54:34 sebastiani
144 * version work fine
145 *
146 * Revision 1.61 2004/08/05 16:19:07 sebastiani
147 * fix close run
148 * add cal handler error
149 * fix tmtc
150 * ok protocol betwen pm-rm-scm
151 *
152 * Revision 1.60 2004/08/04 13:25:21 sebastiani
153 * first fix allarm procedure
154 *
155 * Revision 1.59 2004/08/02 15:49:47 alfarano
156 * alarm handling , scm & pm communication rewrite
157 *
158 * Revision 1.58 2004/08/02 12:20:24 sebastiani
159 * re-engeenering sw
160 *
161 * Revision 1.57 2004/08/02 09:28:29 faber
162 * Stamp management into SMH_SetParam
163 * TS_PamManger TM_RMTest moved respectively into PM and RM as PM_MCMDTest and
164 * RM_MCMDTEst. TS_Test_INFN.c will be deleted soon.
165 *
166 * Revision 1.56 2004/07/28 17:19:01 sebastiani
167 * better loggin status
168 *
169 * Revision 1.55 2004/07/27 17:30:17 faber
170 * OBT can be now in second or milliseconds, depending of the situazion.
171 * OBT_s is used for FM compatibility, OBT_ms basically for MM infos
172 *
173 * Revision 1.54 2004/07/21 14:08:32 sebastiani
174 * Fix close RUN we wait a event to close the run
175 * PM send Sint and don't wait for SintOK
176 * Header'Trailer Initialization
177 * FixPacketCounter
178 *
179 * Revision 1.53 2004/07/20 14:36:26 sebastiani
180 * AC/CAL/TRK/TOF/TRG unmaksed all KHB alarms
181 * RM: Close Run before RunTrailer (send page 2)
182 *
183 * Revision 1.52 2004/07/15 10:39:42 faber
184 * *** empty log message ***
185 *
186 * Revision 1.51 2004/07/14 13:02:35 alfarano
187 * update calorimeter func
188 *
189 * Revision 1.50 2004/07/12 09:51:49 faber
190 * external_data dir added with all commands inside. tgz creation rules remove.
191 * AUTO mode introduced:
192 *
193 * Revision 1.49 2004/07/06 15:21:49 sebastiani
194 * some daq_reply inserted, MAX_TEMP_.... from 16K to 32K
195 *
196 * Revision 1.48 2004/07/02 11:58:48 faber
197 * implemented intellingent http from the web: update_http_from_web.tgz added to the repository.
198 * update_commands_from_web.sh works now in 2 modes.
199 *
200 * Revision 1.47 2004/06/22 08:57:01 sebastiani
201 * *** empty log message ***
202 *
203 * Revision 1.46 2004/06/15 08:24:37 sebastiani
204 * *** empty log message ***
205 *
206 * Revision 1.45 2004/06/04 14:24:38 sebastiani
207 * clear some files
208 *
209 * Revision 1.44 2004/06/01 16:41:19 sebastiani
210 * EventReceive ANY
211 *
212 * Revision 1.43 2004/05/26 17:48:25 sebastiani
213 * *** empty log message ***
214 *
215 * Revision 1.42 2004/05/25 14:07:18 faber
216 * *** empty log message ***
217 *
218 * Revision 1.41 2004/05/20 16:03:52 faber
219 * ACQ flow dev continuing
220 *
221 * Revision 1.40 2004/05/12 14:46:14 faber
222 * *** empty log message ***
223 *
224 * Revision 1.39 2004/04/29 07:46:29 sebastiani
225 * compilation ok
226 *
227 * Revision 1.38 2004/04/26 10:56:04 faber
228 * imported diffs from TM branch (PWR_ module)
229 *
230 * Revision 1.37 2004/04/23 14:37:30 tassa
231 * ops fix compilation!
232 *
233 * Revision 1.36 2004/04/22 14:50:30 faber
234 * Purge TRD bad pointer bug fix
235 *
236 * Revision 1.35 2004/03/08 15:49:09 alfarano
237 * improved handling functions for FE
238 *
239 * Revision 1.34 2004/03/03 11:13:18 sebastiani
240 * gen_mcmd.pl bugfixes,other bugfixes
241 *
242 * Revision 1.33 2004/03/01 17:46:45 tassa
243 * Non testato:
244 * TMTC sample e STORE in SCM
245 * send FECMD bloccante
246 * aggiunto MCMD to send FECMD
247 *
248 * Revision 1.32 2004/02/27 15:40:46 tassa
249 * TMTC function moved in SCM MANAGER
250 * add function blocking to send FE command in HK MANAGER
251 *
252 * Revision 1.31 2004/02/13 10:11:30 alfarano
253 * calorimeter initialization func and more
254 *
255 * Revision 1.30 2004/01/28 12:50:26 alfarano
256 * *** empty log message ***
257 *
258 * Revision 1.29 2004/01/22 08:58:30 sebastiani
259 * WAIT time introduced between DAQ and CMD/IF DMA programming
260 *
261 * Revision 1.28 2003/12/19 11:05:37 faber
262 * TS_PamManager invoked from the PAM Manager
263 *
264 * Revision 1.27 2003/12/11 18:39:37 alfarano
265 * bug fix GS_GasResume
266 *
267 * Revision 1.26 2003/12/07 15:07:11 sebastiani
268 * GAS_TEST renamed to GAS_CONTAINER_PURGE
269 *
270 * Revision 1.25 2003/12/06 10:53:41 alfarano
271 * update
272 *
273 * Revision 1.24 2003/12/06 08:32:38 faber
274 * startup procedure tuned. TMTC sampling storing at startup
275 *
276 * Revision 1.23 2003/12/05 17:14:34 alfarano
277 * update
278 *
279 * Revision 1.22 2003/12/03 14:36:51 faber
280 * more action definition about mcmd (setmode/purge_trd).
281 * SSt word better defined
282 *
283 * Revision 1.21 2003/11/26 16:39:33 faber
284 * advancing development for power management
285 *
286 * Revision 1.20 2003/11/21 11:15:54 faber
287 * bugfixes:
288 * SELECT_MODE min length is 8, not 7
289 * CALIBRATE length is 6, not 15
290 *
291 * Revision 1.19 2003/11/19 15:48:37 faber
292 * *** empty log message ***
293 *
294 * Revision 1.18 2003/11/18 17:13:15 sebastiani
295 * GPT enabled to print a "\n" every 60s directly on UART, only to check if the CPU is
296 * alive
297 *
298 * Revision 1.17 2003/11/18 09:01:14 alfarano
299 * laben patch fixes some problems
300 *
301 * Revision 1.16 2003/11/13 16:13:55 sebastiani
302 * dump_parameters flag added to WriteHBInfos(); Important bugfixed and better management with ChangeAcqMode and SetNotifyTask_SKETCHBOARD()
303 *
304 * Revision 1.15 2003/11/06 10:27:12 faber
305 * HB_HKBuffer now implemented as multibuffer (as specified in the
306 * mass memory format). Only compilation, not tested
307 *
308 * Revision 1.14 2003/11/04 11:36:35 alfarano
309 * deleted task in TM_TMTC manager and added to HK_Manager, added KHB buffer read task
310 *
311 * Revision 1.13 2003/10/27 18:57:25 sebastiani
312 * Enable/Disable sampling/stoting of the TMTC introduced
313 *
314 * Revision 1.12 2003/10/17 10:04:36 sebastiani
315 * allowed the pam manager to send a MCMDS inside itself
316 *
317 * Revision 1.11 2003/09/22 09:59:35 faber
318 * new select mode definitions
319 *
320 * Revision 1.10 2003/09/19 15:57:35 faber
321 * Large development update INFN software
322 *
323 * Revision 1.9 2003/09/16 08:42:05 faber
324 * StoreOrb/Incl done / new LOG initialization
325 *
326 * Revision 1.8 2003/09/15 17:46:27 faber
327 * HB_HKBuffer_INFN module introduced.
328 *
329 * Revision 1.7 2003/09/12 10:57:41 faber
330 * development in proress (Working schedule module)
331 *
332 * Revision 1.6 2003/09/10 16:15:52 faber
333 * PRH_EXTERN_VAR(XX_LOGMASK) removed (not needed any more)
334 *
335 * Revision 1.5 2003/09/10 11:55:07 faber
336 * LU_MASK introduced. Log mask for module is now an unique array (PRH_ARR_LOG_MASK) indexed by __FILEID__
337 *
338 * Revision 1.4 2003/09/10 10:32:37 faber
339 * Large implementation of PamManager/RunManager Pam Sowfare. (compiled,never run)
340 *
341 * Revision 1.3 2003/08/29 11:34:09 faber
342 * PM_GetDownlinkIntervalTime and PM_GetDownlinkStartTime introduced (dummy
343 *
344 * Revision 1.2 2003/08/22 07:57:08 sebastiani
345 * *** empty log message ***
346 *
347 * Revision 1.1.1.1 2003/08/04 09:40:22 sebastiani
348 * Imported sources laben rel. 19.06.2003 integrated with pam2
349 *
350 * Revision 1.3 2003/06/18 16:53:19 sebastiani
351 * Pam/Run Manager development update. ExpSeq sequence is receiven from the RunManager (simulator mode)
352 *
353 * Revision 1.2 2003/06/12 15:15:55 sebastiani
354 * LogUtility support added
355 *
356 * Revision 1.1 2003/06/09 16:39:50 sebastiani
357 * Moved pammanager Module (it's a task) in its own directory.
358 * fix directory path.
359 *
360 * Revision 1.1 2003/06/05 10:31:12 wizard
361 * added PamMnager (empty skeleton),and other main dirs on INFN
362 *
363 *
364 *****************************************************************************/
365
366
367 /*============================= Include File ================================*/
368
369
370 #include <src/INFN/LU_SourceFileID_INFN.h>
371 #define __FILEID__ _PM_PamManager_INFN__c
372 #include <src/INFN/PRH_ParamHandler_INFN.h>
373 #include <src/INFN/LU_LogUtility_INFN.h>
374 #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
375 LU_DECL_MASK();
376
377 #include <src/INFN/PM_PamManager_INFN.h>
378 #include <src/BasicSW/RTEMSInterface/OS_rtems_p.h>
379 #include <src/INFN/SMH_SelectModeHandler_INFN.h>
380
381 #include <src/INFN/PWR_PowerHandler_INFN.h>
382
383 #ifdef TEST_I
384 //#include <src/INFN/TS_Test_INFN.h>
385 #endif // TEST_I
386
387
388 #include <src/INFN/OS_rtems_INFN_p.h>
389
390 #include <src/INFN/PM_PamManager_INFN.h>
391 #include <src/INFN/WS_WorkingSchedule_INFN.h>
392 #include <src/BasicSW/RTEMSInterface/OS_rtems_p.h>
393 #include <src/INFN/OS_rtems_INFN_p.h>
394 #include <src/MCMDManager/MCMDArea/MA_MCMDArea_p.h>
395
396 //#include <src/TM_TCManager/TMTCManager/TM_TMTCManager_p.h>
397 //#include <src/FileManager/FileSystem/FS_FileSystem_p.h>
398
399 #include <src/HKManager/HistoryArea/HA_HistoryArea_p.h>
400 #include <src/INFN/SMH_SelectModeHandler_INFN.h>
401 #include <src/INFN/MH_ModeHandler_INFN.h>
402 #include <src/INFN/HB_HKBuffer_INFN.h>
403 #include <src/INFN/HK_Manager_INFN.h>
404 #include <src/INFN/SCM_Manager_INFN.h>
405 #include <src/INFN/GS_Gas_INFN.h>
406 #include <src/INFN/MH_ModeHandler_INFN.h>
407 #include <src/INFN/PWR_PowerHandler_INFN.h>
408 #include <src/INFN/HV_INFN.h>
409 #include <src/SRAMManager/SRAMPageManager/SM_SRAMPageManager_p.h>
410 #include <src/FileManager/MMSUManager/FT_MMSUManager_p.h>
411 #include <src/BasicSW/CrimeaDriver/CD_CrimeaDriver_p.h>
412 #include <src/INFN/ALM_Alarm_INFN.h>
413
414 // for test procedures
415 #include <src/INFN/KHB_Driver_INFN.h>
416 #include <src/QualitySystem/DiagSupervisor/QS_DiagSupervisor_p.h>
417
418
419 /*============================ Global define ================================*/
420
421
422
423 /*============================== global types ==============================*/
424
425
426
427 /*****************************************************************************/
428 /*=========================== Structure define ==============================*/
429
430
431 /*****************************************************************************/
432 /*============================ Enumerate define =============================*/
433
434 /*****************************************************************************/
435
436 /*=== P A M M A N A G E R P R O V I D E D I N T E R F A C E ==*/
437
438 /*****************************************************************************/
439
440
441
442
443 /* the current ACQ Setting mode */
444 static RM_ACQ_SETTING PM_AcqSetting;
445 static PM_INFN_STATUS PM_CurrentStatus;
446 static PM_INFN_STATUS PM_Status_BeforeDownload;
447 static PM_INFN_COMMAND PM_CurrentCommand;
448
449 /* counter of the ascending node since Pamela boot */
450 static UINT32 PM_AscendingNode_Counter;
451 static BOOL PM_PendingCalibration = FALSE;
452
453 static char *PM_Compilation_DATE;
454 static char *PM_Compilation_TIME;
455 static UINT32 *PM_ExternalTimeStamp;
456
457 static RM_OPCODES rm_saved_opcode;
458 static status_code rm_saved_code;
459 static BOOL rm_saved_flag;
460 static UINT32 pm_scm_action=0;
461 /* Automatic Mode: in automatic mode we have an utomatic (in flight) behavoir (automatic restart for ACQ after Downling, EEPROM read at startup, as in fligh mode.
462 if AutoMode is off, no action are taken, (useful for testing ad debuggin) */
463
464 /* Periodic Actions translations: */
465 static TIM_INFN_ADDR PM_Periodic_TIM[PM_INFN_COMMAND_MAX];
466 static PM_INFN_COMMAND PM_Periodic_Action[PM_INFN_COMMAND_MAX];
467 static SCM_ACTION PM_Periodic_SCMAction[PM_INFN_COMMAND_MAX];
468 /* Periodic global variables: */
469 static BOOL PM_Periodic_DoFlag[PM_INFN_COMMAND_MAX];
470
471
472 void PM_ForceRunning_CallBack(rtems_id timer_id, void *action_ptr)
473 {
474 PM_SendCommand(PM_FORCE_RUNNING);
475 }
476
477
478 void PM_Periodic_CallBack(rtems_id timer_id, void *action_ptr)
479 {
480 PM_INFN_COMMAND action = *(PM_INFN_COMMAND*)action_ptr;
481 if (PM_Periodic_DoFlag[action])
482 PM_SendCommand(action);
483 }
484
485 #if 0
486 void PM_SaveTMTCValue_CallBack(rtems_id timer_id, void *suspend)
487 {
488 if (PM_SaveTMTCFlag)
489 PM_SendCommand(PM_SAVE_TMTC_VALUES);
490 }
491
492 void PM_TSB_B_Start_CallBack(rtems_id timer_id, void *suspend)
493 {
494 if (PM_DoTSB_B_Flag)
495 PM_SendCommand(PM_TSB_B_CHECK);
496 }
497
498 void PM_TSB_T_Start_CallBack(rtems_id timer_id, void *suspend)
499 {
500 if (PM_DoTSB_T_Flag)
501 PM_SendCommand(PM_TSB_T_CHECK);
502 }
503 #endif
504
505 #ifdef SIMULATOR
506
507 /* use this variabile to send a simulated MCMD */
508 task PM_SIM_tkMCMDSender(task_argument unused) {
509 void *arg;
510 rtems_device_driver d;
511 static unsigned char buf[50];
512 int len=0;
513 int c;
514 while(1) {
515 if( (c=console_inbyte_nonblocking(1)) != -1) {
516 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,c);
517
518 /*
519 if(len<sizeof(buf)-1) {
520 buf[len++] = (unsigned char)c;
521 if(len == sizeof(buf)-1) {
522 while(len) {
523 console_outbyte_polled(0,buf[--len]);
524 }
525 }
526 }
527 else {
528
529 }
530 */
531 //console_outbyte_polled(0,(char)c);
532 }else
533 OS_piTaskSuspend(200);
534 }
535 }
536
537
538 rtems_name PM_SIM_name;
539 rtems_id PM_SIM_id;
540 void PM_SIM_Init() {
541 status_code status;
542 unsigned int OldPriority;
543
544 status =SUCCESSFUL;
545 PM_SIM_name = rtems_build_name( 'M', 'C', 'M', 'S' );
546
547 status =rtems_task_create(PM_SIM_name,3,
548 RTEMS_MINIMUM_STACK_SIZE,
549 RTEMS_DEFAULT_MODES,
550 RTEMS_DEFAULT_ATTRIBUTES,
551 &PM_SIM_id);
552 if(status != SUCCESSFUL)
553 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
554
555 // status = rtems_task_start(PM_SIM_id,(rtems_task_entry)PM_SIM_tkMCMDSender ,0);
556 if(status != SUCCESSFUL)
557 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
558
559 }
560
561 #endif // SIMULATOR
562
563 #ifdef DEBUG
564 unsigned short simulMCMD[PM_MCMD_MAX_WORD_SIZE];
565 char* simul_sm_body_p;
566 MA_HEADER_MCMD simul_headerMcmd;
567 static unsigned short int simul_mcmd_seqid=0;
568
569 void PM_SIM_FormatHeader(unsigned short int seqid,
570 unsigned char timetag,
571 unsigned char id,
572 unsigned char len,
573 unsigned short TT_MSW,
574 unsigned short TT_LSW) {
575 simulMCMD[0]=seqid;
576 simulMCMD[1]=(timetag?1:0)<<15 | (id & 0x00FF);
577 simulMCMD[2]=len & 0x0FFF;
578 simulMCMD[3]=TT_MSW;
579 simulMCMD[4]=TT_LSW;
580 }
581
582 void PM_SIM_FormatHeaderSM(unsigned char bodylen) {
583 PM_SIM_FormatHeader(simul_mcmd_seqid++,0,0x33,bodylen+8,0,0);
584 }
585
586
587 void PM_SIM_FormatSM(char mode,
588 unsigned short pnumber) {
589 simulMCMD[5]=mode;
590 simulMCMD[6]=pnumber;
591 simul_sm_body_p=(char*)&simulMCMD[7];
592 }
593
594 void PM_SIM_Load_uc(unsigned char x) { memcpy(simul_sm_body_p,&x,sizeof(x)); simul_sm_body_p+=sizeof(x); }
595 void PM_SIM_Load_us(unsigned short x) { memcpy(simul_sm_body_p,&x,sizeof(x)); simul_sm_body_p+=sizeof(x); }
596 void PM_SIM_Load_ui(unsigned int x) { memcpy(simul_sm_body_p,&x,sizeof(x)); simul_sm_body_p+=sizeof(x); }
597
598 void PM_SIM_Send() {
599 unsigned short id=simulMCMD[1] & 0x00FF;
600 switch(id) {
601 case ID_SELECT_MODE:
602 simul_headerMcmd.Type=SELECT_MODE;
603 break;
604 default:
605 simul_headerMcmd.Type=0xFFFFFFFF;
606 break;
607 }
608 simul_headerMcmd.TimeTag = simulMCMD[1] >> 15;
609 simul_headerMcmd.PtrMCMD = simulMCMD;
610 simul_headerMcmd.Length = simulMCMD[2] & 0x0FFF;
611 PM_SubmitMCMD(&simul_headerMcmd);
612 }
613
614 void PM_SIM_send_sm() {
615 PM_SIM_FormatHeaderSM(20);
616 PM_SIM_FormatSM(0x10,10);
617 PM_SIM_Send();
618 }
619
620 void PM_SIM_send_testdebug(unsigned short code) {
621 PM_SIM_FormatHeaderSM(4);
622 PM_SIM_FormatSM( SMH_FAMILY_TEST << 4 | SMH_TEST_DEBUG,1);
623 PM_SIM_Load_us(code);
624 PM_SIM_Send();
625 }
626
627 #endif // DEBUG
628
629
630 /*****************************************************************************/
631 /* @Function: PM_opInitPamManager_INFN */
632 /* @Purpose : */
633 /* Operation initialize the PamManager object. */
634 /* */
635 /* @@ */
636 /* @Parameter Name @Mode @Description */
637 /* status_code OUT Return code */
638 /* @@ */
639 /*****************************************************************************/
640
641 void PM_PeriodicInit() {
642 PM_INFN_COMMAND c;
643 PM_Periodic_TIM[PM_CYCLIC_ACQUISITION]=PM_DOCYCLIC_TIM;
644 PM_Periodic_TIM[PM_SAVE_TMTC_VALUES] =PM_SAVETMTC_TIM;
645 PM_Periodic_TIM[PM_TSB_T_CHECK] =PM_TSB_T_TIM;
646 PM_Periodic_TIM[PM_TSB_B_CHECK] =PM_TSB_B_TIM;
647
648 PM_Periodic_SCMAction[PM_CYCLIC_ACQUISITION] = SCM_CYCLIC_ACQUISITION;
649 PM_Periodic_SCMAction[PM_SAVE_TMTC_VALUES] = SCM_SAVE_TMTC_VALUES;
650 PM_Periodic_SCMAction[PM_TSB_T_CHECK] = SCM_TSB_T_CHECK;
651 PM_Periodic_SCMAction[PM_TSB_B_CHECK] = SCM_TSB_B_CHECK;
652
653 for(c=PM_PERIODIC_BASE;c<PM_PERIODIC_NO;c++) {
654 PM_Periodic_DoFlag[c] = FALSE;
655 PM_Periodic_Action[c] = c;
656 }
657 }
658
659 status_code PM_InitPamManager_INFN(void)
660 {
661 status_code status;
662 unsigned int OldPriority;
663
664 status =SUCCESSFUL;
665
666
667 /* Task initialization */
668 if ((status=OS_piTaskReady_INFN(PM_INFN_TASK,PM_tkPamManager_INFN)) != SUCCESSFUL) {
669 /* Task is not correctly started */
670 //HA_piLogHistoryEntry10(HA_E10_SW_MD,HA_E10_TSK_READY_ERR,status);
671 /*@LOG Task is not correctly started - status */
672 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
673 status =UNSATISFIED;
674 }
675
676 if ((status=OS_piTaskPriority_INFN(PM_INFN_TASK,PM_INFN_PRIORITY,&OldPriority)) != SUCCESSFUL) {
677 /* Task priority is not correctly updated */
678 //HA_piLogHistoryEntry10(HA_E10_SW_MD,HA_E10_TSK_PRIORITY_ERR,status);
679 /*@LOG Task priority is not correctly updated - status */
680 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
681 status =UNSATISFIED;
682 }
683
684 PM_AscendingNode_Counter = 0;
685 PM_AcqSetting = RM_ACQ_SETTING_NULL;
686 /* store che compilation timestamps: */
687 // PM_Compilation_DATE = __DATE__;
688 // PM_Compilation_TIME = __TIME__;
689
690
691 PM_PeriodicInit();
692
693
694 return (status);
695
696 }
697
698 /*****************************************************************************/
699 /* @Function: PM_SendSINT_OK */
700 /* @Purpose : */
701 /* send a SINT_OK event to the PAM Manager. sent to notify that the run */
702 /* manager received the SINT and goes to IDLEOperation initialize the */
703 /* PamManager object. */
704 /* By design, this routine should be invoked only by the PamManager */
705 /* @@ */
706 /* @Parameter Name @Mode @Description */
707 /* status_code OUT Return code */
708 /* @@ */
709 /*****************************************************************************/
710
711 void PM_SendSINT_OK() {
712 status_code status;
713 if( (status = OS_piEventSend(PM_INFN_TASK,OS_EVENT_SINT_OK)) != SUCCESSFUL)
714 /*@LOG PM:fatal error receiving SINT_OK signal - status */
715 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
716 }
717
718 /*****************************************************************************/
719 /* @Function: PM_CheckSint_OK() */
720 /* @Purpose : */
721 /* return true if a SINT event had been received (also clear the event) */
722 /* */
723 /* @@ */
724 /* @Parameter Name @Mode @Description */
725 /* status_code OUT Return code */
726 /* @@ */
727 /*****************************************************************************/
728
729 BOOL PM_CheckSINT_OK() {
730 rtems_event_set unused;
731 return OS_piEventReceive(OS_EVENT_SINT_OK,RTEMS_NO_WAIT,0,&unused) == RTEMS_SUCCESSFUL;
732 }
733
734
735
736
737 /*****************************************************************************/
738 /* @Function: PM_opSndMsgPamManager_INFN */
739 /* @Purpose : */
740 /* Put message in PamManager MailBox. */
741 /* */
742 /* @@ */
743 /* @Parameter Name @Message */
744 /* status_code OUT Return code */
745 /* @@ */
746 /*****************************************************************************/
747
748 status_code PM_SndMsgPamManager_INFN(MsgTsk* SndMsg) {
749 rtems_status_code status;
750
751 /* Send message to PamManager task mailbox */
752 status =OS_piMsgQueueSend_INFN(PM_INFN_MAILBOX,(void*)SndMsg,sizeof(MsgTsk));
753 if (status != SUCCESSFUL)
754 {
755 /*@LOG Fail during the send message to PamManager mailbox - status */
756 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
757 }
758 return (status);
759 }
760
761 /*****************************************************************************/
762 /* @Function: PM_SendCommand */
763 /* @Purpose : */
764 /* A wrapper of the PM_SndMsgPamManager_INFN to send only a command code */
765 /* */
766 /* @@ */
767 /* @Parameter Name @Message */
768 /* status_code OUT Return code */
769 /* @@ */
770 /*****************************************************************************/
771
772
773 status_code PM_SendCommand(PM_INFN_COMMAND command) {
774 MsgTsk SndMsg;
775 SndMsg.Code = command;
776 SndMsg.LlInfo = 0;
777 return PM_SndMsgPamManager_INFN(&SndMsg);
778 }
779
780 status_code PM_SendTestCommand(UINT16 code,
781 UINT16 value1,UINT16 value2,
782 UINT16 value3,UINT16 value4)
783 {
784 MsgTsk SndMsg;
785 BYTE *p = SndMsg.Info;
786 SndMsg.Code = PM_INFN_TEST_PAM_MANAGER;
787 CM_WRITE_BE_UINT16(p,code);
788 CM_WRITE_BE_UINT16(p,value1);
789 CM_WRITE_BE_UINT16(p,value2);
790 CM_WRITE_BE_UINT16(p,value3);
791 CM_WRITE_BE_UINT16(p,value4);
792 return PM_SndMsgPamManager_INFN(&SndMsg);
793 }
794
795 #ifdef DEBUG
796 /* this funcion is used to force break point in case of message timeout */
797 unsigned int PM_FORCE_BREAKPOINT() {
798 unsigned int s=SUCCESSFUL;
799 return s;
800 }
801 #endif
802
803
804 /*****************************************************************************/
805 /* @Function: PM_tkPamManger_INFN */
806 /* @Purpose : */
807 /* The Pamela Manager task */
808 /* */
809 /* @@ */
810 /* @Parameter Name @Message */
811 /* status_code OUT Return code */
812 /* @@ */
813 /*****************************************************************************/
814
815
816 task PM_tkPamManager_INFN (task_argument unused) {
817 MsgTsk RxMsg;
818 MsgTsk SndMsg;
819 status_code mboxstatus;
820 status_code storestatus;
821 unsigned int MsgSize,fid;
822 unsigned short ashort;
823 status_code status;
824 BYTE *p;
825 BYTE tmp;
826 UINT16 code_tmp,value1,value2,value3,value4;
827 MA_HEADER_MCMD* headerMcmd;
828 UINT32 bootinfo;
829
830
831 SCM_ACTION opcode;
832 status_code code;
833
834 unsigned char *pc;
835
836 /*@LOG PAM Manager Started - PRH_VAR_N_BOOT */
837 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,PRH_VAR_N_BOOT);
838 /*@LOG Esoteric info */
839 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xFAB9B151 ^ 0x060E605A ^ 0x4D9B0);
840
841 #if 0
842 #warning remove this in flight:!!!!
843 for(fid=0;fid<LU_FILEID_N;fid++)
844 LU_MASK(fid) |= LU_DEBUG_TRACE;
845 #endif
846
847 /* power on Pamela: */
848 PM_SetGom(PM_BOOTED,SCM_NO_ACTION);
849
850 PRH_VAR_N_BOOT++;
851 status = PRH_var_write2eeprom(PRH_EEPROM_CURRENT,PRH_VAR_N_BOOT_IDX);
852 if (status)
853 /*@LOG Error updating N_BOOT parameter at startup - status */
854 LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
855
856 status = PRH_ReadEEPROMBootinfo(&bootinfo);
857 if(status == CM_RC_SUCCESSFUL)
858 /*@LOG Boot Info successfully read - bootinfo */
859 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,bootinfo);
860 else
861 /*@LOG Error reading bootinfo - status */
862 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
863
864 /* write PANIC state, in order to store valid boot info
865 in case PSCU is unintentionally reset/power down */
866 status = PRH_WriteEEPROMBootinfo(PRH_BOOTINFO_PANIC);
867 if(status != CM_RC_SUCCESSFUL)
868 /*@LOG Error writing bootinfo PANIC state - status */
869 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
870 else
871 /*@LOG PANIC state successfully write at startup, in order to store valid boot info in case PSCU is unintentionally reset/power down */
872 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xbabe);
873
874 status=OS_piStartTimer_INFN(PM_FORCERUNNING_TIM,
875 PRH_VAR_PM_FORCE_RUNNING_TIMEOUT,
876 PM_ForceRunning_CallBack,NULL);
877
878 PM_SetGom(PM_CPU_START_UP,SCM_POWER_ON);
879
880 RM_SendCodeRunManager(RM_OP_DOWNLOAD_HEADER);
881
882 while( FOREVER )
883 {
884 if ((mboxstatus =OS_piMsgQueueReceive_INFN (PM_INFN_MAILBOX,(void*)&RxMsg,
885 &MsgSize,WAIT, NO_TIMEOUT)) == SUCCESSFUL)
886 {
887 switch (PM_CurrentCommand = RxMsg.Code)
888 {
889 case PM_FORCE_RUNNING:
890 PRH_VAR_AUTO_RM_MODE=1;
891 PM_SetGom(PM_RUNNING,SCM_NO_ACTION);
892 /*@LOG PM_FORCE_RUNNING called */
893 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xbabe);
894 break;
895 case PM_INFN_MCMD_SELECTMODE:
896 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
897 SMH_MCMDSelectMode(headerMcmd);
898 break;
899 case PM_INFN_MCMD_STOREINCLINATIONINFO:
900 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
901 PM_MCMDStoreOrbitalInfo(headerMcmd);
902 break;
903 case PM_INFN_MCMD_STOREORBITALINFO:
904 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
905 PM_MCMDStoreInclinationInfo(headerMcmd);
906 break;
907 case PM_INFN_MCMD_NEUTRONDETECTOR:
908 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
909 PM_MCMDNeutronDetector(headerMcmd);
910 break;
911 case PM_INFN_MCMD_GASCONTAINERPURGE:
912 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
913 // ignore this
914 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
915 break;
916 case PM_INFN_MCMD_CALIBRATE:
917 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
918 PM_MCMDCalibrate(headerMcmd);
919 break;
920 case PM_INFN_MCMD_PURGE_TRD:
921 headerMcmd=(MA_HEADER_MCMD*)RxMsg.Info;
922 PM_MCMDPurgeTRD(headerMcmd);
923 break;
924 case PM_INFN_RUNMANAGER_MSG:
925 {
926 pc = RxMsg.Info;
927 opcode = *(RM_OPCODES*)(pc); pc += sizeof(RM_OPCODES);
928 code = *(status_code*)(pc); pc += sizeof(status_code);
929
930 if(pm_scm_action) {
931 /* if SCManager is doing something... save codes and exit */
932 rm_saved_flag=TRUE;
933 rm_saved_opcode=opcode;
934 rm_saved_code=code;
935 }else{
936 PM_DecodeCode(opcode,code);
937 }
938 }
939 break;
940 case PM_INFN_SCMMANAGER_MSG:
941 {
942 pc = RxMsg.Info;
943 opcode = *(SCM_ACTION*)(pc); pc += sizeof(RM_OPCODES);
944 code = *(status_code*)(pc); pc += sizeof(status_code);
945 pm_scm_action--;
946 PM_DecodeCode(opcode,code);
947 }
948 break;
949 case PM_INFN_NEXTRUN:
950 if (PM_CurrentStatus == PM_RUNNING)
951 PM_DoNextRun();
952 break;
953 case PM_INFN_END_OF_DOWNLINK:
954 RM_SendCodeRunManager(RM_OP_DOWNLOAD_HEADER);
955 if(PRH_VAR_AUTO_RM_MODE)
956 if (PM_CurrentStatus == PM_RUNNING)
957 MH_SetGOM(MH_GetLastIgnoredOpDuringDownload());
958 MH_EndOfDownload();
959 break;
960
961 case PM_INFN_TEST_PAM_MANAGER:
962 #ifdef DEBUG
963 p=RxMsg.Info;
964 CM_READ_BE_UINT16(p,code_tmp,tmp);
965 CM_READ_BE_UINT16(p,value1,tmp);
966 CM_READ_BE_UINT16(p,value2,tmp);
967 CM_READ_BE_UINT16(p,value3,tmp);
968 CM_READ_BE_UINT16(p,value4,tmp);
969 PM_MCMDTest(code_tmp,value1,value2,value3,value4);
970 #endif // DEBUG
971 break;
972 case PM_SAVE_TMTC_VALUES:
973 case PM_CYCLIC_ACQUISITION:
974 case PM_TSB_T_CHECK:
975 case PM_TSB_B_CHECK:
976 PM_Periodic_DoFlag[PM_CurrentCommand]=TRUE;
977 pm_scm_action++;
978 SCM_SendCode(PM_Periodic_SCMAction[PM_CurrentCommand]);
979 break;
980 default :
981 /*@LOG PamManager: Bad operation - storestatus */
982 LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,storestatus);
983 break;
984 }
985 }
986 }
987 }
988
989 /*
990 switch(opcode) {
991 case RM_OP_INITIALIZATION:
992 break;
993 case RM_OP_CALIBRATION:
994 break;
995 case RM_OP_ACQUISITION:
996 break;
997 case RM_OP_FLUSH_HB:
998 break;
999 case RM_OP_FORCE_IDAQCMD:
1000 break;
1001 case RM_OP_TEST:
1002 break;
1003 case RM_OP_SINT:
1004 break;
1005 case SCM_SAVE_TMTC_VALUES:
1006 break;
1007 case SCM_CYCLIC_ACQUISITION:
1008 break;
1009 case SCM_POWER_ON:
1010 break;
1011 case SCM_POWEROFF_ON:
1012 break;
1013 case SCM_TSB_CHECK:
1014 break;
1015 }
1016
1017 switch(code) {
1018 case CM_RC_SUCCESSFUL:
1019 break;
1020 case CM_RC_DO_AGAINACQ:
1021 break;
1022 case CM_RC_DO_INIT:
1023 break;
1024 case CM_RC_DO_RESET_IF_ALM:
1025 break;
1026 case CM_RC_DO_POWER_ON:
1027 break;
1028 case CM_RC_DO_POWER_OFF_ON:
1029 break;
1030 case CM_RC_DO_STOP_WAIT:
1031 break;
1032 }
1033
1034 */
1035
1036
1037
1038 status_code PM_DecodeCode(UINT32 opcode,status_code code)
1039 {
1040 if(PRH_VAR_VERBOSE_DEBUG) {
1041 /*@LOG PamManager State Machine - DecodeCode - opcode */
1042 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1043 /*@LOG PamManager State Machine - DecodeCode - code */
1044 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1045 }
1046
1047 switch(PM_CurrentStatus) {
1048 case PM_BOOTED:
1049 /*@LOG PamManager State Machine - DecodeCode - in PM_BOOTED status receved - PM_CurrentStatus */
1050 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,PM_CurrentStatus);
1051 break;
1052 case PM_CPU_START_UP:
1053 switch(opcode) {
1054 case SCM_POWER_ON:
1055 switch(code) {
1056 case CM_RC_SUCCESSFUL:
1057 PM_SetGom(PM_RUNNING,SCM_NO_ACTION);
1058 break;
1059 case CM_RC_DO_POWER_OFF_ON:
1060 if(PRH_VAR_AUTO_SCM_MODE)
1061 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1062 break;
1063 case CM_RC_DO_STOP_WAIT:
1064 PM_SetGom(PM_STOP_AND_WAIT,SCM_NO_ACTION);
1065 break;
1066 case CM_RC_DO_AGAINACQ:
1067 case CM_RC_DO_INIT:
1068 case CM_RC_DO_RESET_IF_ALM:
1069 case CM_RC_DO_POWER_ON:
1070 /*@LOG PamManager State Machine - DecodeCode - in PM_CPU_STARTUP status receves this 'code' */
1071 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1072 break;
1073 }
1074 break;
1075 case SCM_CYCLIC_ACQUISITION:
1076 PM_Periodic_ProgramTimer(PM_CYCLIC_ACQUISITION);
1077 break;
1078 case SCM_SAVE_TMTC_VALUES:
1079 PM_Periodic_ProgramTimer(PM_SAVE_TMTC_VALUES);
1080 break;
1081 case RM_OP_DOWNLOAD_HEADER:
1082 /*@LOG PM: StartUp->Download_Header */
1083 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1084 break;
1085 case SCM_POWEROFF_ON:
1086 case SCM_TSB_T_CHECK:
1087 case SCM_TSB_B_CHECK:
1088 case SCM_POWEROFF:
1089 case RM_OP_INITIALIZATION:
1090 case RM_OP_CALIBRATION:
1091 case RM_OP_ACQUISITION:
1092 case RM_OP_FLUSH_HB:
1093 case RM_OP_FORCE_IDAQCMD:
1094 case RM_OP_TEST:
1095 case RM_OP_SINT:
1096 /*@LOG PamManager State Machine - DecodeCode - in PM_CPU_STARTUP status receves this 'opcode' */
1097 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1098 break;
1099 }
1100 break;
1101 case PM_RUNNING:
1102 switch(opcode) {
1103 case RM_OP_INITIALIZATION: // CurrentStatus==RUNNING
1104 switch(code) {
1105 case CM_RC_SUCCESSFUL:
1106 if(PRH_VAR_AUTO_RM_MODE)
1107 {
1108 if (PM_PendingCalibration)
1109 MH_SetGOM(MH_GOM_CALIBRATION);
1110 else
1111 MH_SetGOM(MH_GOM_ACQUISITION);
1112 }
1113 break;
1114 case CM_RC_DO_AGAINACQ:
1115 if (PM_PendingCalibration)
1116 MH_SetGOM(MH_GOM_CALIBRATION);
1117 else
1118 MH_SetGOM(MH_GOM_ACQUISITION);
1119 break;
1120 case CM_RC_DO_RESET_IF_ALM:
1121 if(PRH_VAR_AUTO_SCM_MODE) {
1122 if (PRH_VAR_RES < PRH_VAR_NRES)
1123 {
1124 PRH_VAR_RES++;
1125 /*@LOG PM: Running->Initialization->ResetIFAlarm PRH_VAR_RES<PRH_VAR_NRES, Redo Initialization */
1126 ALM_WriteLog(ALM_OFF,PRH_VAR_OFF);
1127 /*@LOG PM: Running->Initialization->ResetIFAlarm PRH_VAR_RES<PRH_VAR_NRES, Redo Initialization */
1128 ALM_WriteLog(ALM_RES,PRH_VAR_RES);
1129
1130 MH_SetGOM(MH_GOM_INITIALIZATION);
1131 }
1132 else
1133 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1134 }
1135 break;
1136 case CM_RC_DO_POWER_OFF_ON:
1137 if(PRH_VAR_AUTO_SCM_MODE)
1138 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1139 break;
1140 case CM_RC_DO_STOP_WAIT:
1141 case CM_RC_DO_POWER_ON:
1142 case CM_RC_DO_INIT:
1143 /*@LOG PamManager State Machine - DecodeCode - in PM_RUNNIGN status receves this 'code' */
1144 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1145 break;
1146 }
1147 break;
1148 case RM_OP_CALIBRATION:// CurrentStatus==RUNNING
1149 switch(code) {
1150 case CM_RC_SUCCESSFUL:
1151 PM_PendingCalibration = FALSE;
1152 if(PRH_VAR_AUTO_RM_MODE)
1153 MH_SetGOM(MH_GOM_ACQUISITION);
1154 break;
1155 case CM_RC_DO_RESET_IF_ALM:
1156 if(PRH_VAR_AUTO_SCM_MODE) {
1157 if (PRH_VAR_RES < PRH_VAR_NRES)
1158 {
1159 PRH_VAR_RES++;
1160 /*@LOG PM: Running->Calibration->ResetIFAlarm PRH_VAR_RES<PRH_VAR_NRES, Redo Initialization */
1161 ALM_WriteLog(ALM_OFF,PRH_VAR_OFF);
1162 /*@LOG PM: Running->Calibration->ResetIFAlarm PRH_VAR_RES<PRH_VAR_NRES, Redo Initialization */
1163 ALM_WriteLog(ALM_RES,PRH_VAR_RES);
1164 MH_SetGOM(MH_GOM_INITIALIZATION);
1165 }
1166 else
1167 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1168 }
1169 break;
1170 case CM_RC_DO_POWER_OFF_ON:
1171 if(PRH_VAR_AUTO_SCM_MODE)
1172 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1173 break;
1174 case CM_RC_DO_STOP_WAIT:
1175 case CM_RC_DO_AGAINACQ:
1176 case CM_RC_DO_POWER_ON:
1177 case CM_RC_DO_INIT:
1178 /*@LOG PamManager State Machine - DecodeCode - in PM_RUNNING status receves this 'code' */
1179 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1180 break;
1181 }
1182 break;
1183
1184 case RM_OP_ACQUISITION:// CurrentStatus==RUNNING
1185 switch(code) {
1186 case CM_RC_SUCCESSFUL:
1187 // ???
1188 break;
1189 case CM_RC_DO_AGAINACQ:
1190 if (PM_PendingCalibration)
1191 MH_SetGOM(MH_GOM_CALIBRATION);
1192 else
1193 MH_SetGOM(MH_GOM_ACQUISITION);
1194 break;
1195 case CM_RC_DO_RESET_IF_ALM:
1196 if(PRH_VAR_AUTO_SCM_MODE) {
1197 if (PRH_VAR_RES < PRH_VAR_NRES)
1198 {
1199 PRH_VAR_RES++;
1200 /*@LOG PM: Running->Acquisition->ResetIFAlarm PRH_VAR_RES<PRH_VAR_NRES, Redo Initialization */
1201 ALM_WriteLog(ALM_OFF,PRH_VAR_OFF);
1202 /*@LOG PM: Running->Acquisition->ResetIFAlarm PRH_VAR_RES<PRH_VAR_NRES, Redo Initialization */
1203 ALM_WriteLog(ALM_RES,PRH_VAR_RES);
1204 MH_SetGOM(MH_GOM_INITIALIZATION);
1205 }
1206 else
1207 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1208 }
1209 break;
1210 case CM_RC_DO_POWER_OFF_ON:
1211 if(PRH_VAR_AUTO_SCM_MODE)
1212 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1213 break;
1214 case CM_RC_DO_INIT:
1215 /*@LOG No Trigger during 4.6sec (IDAQ ETO during ACQ) */
1216 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xc1cc10);
1217 MH_SetGOM(MH_GOM_INITIALIZATION);
1218 break;
1219 case CM_RC_DO_STOP_WAIT:
1220 case CM_RC_DO_POWER_ON:
1221 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1222 break;
1223 }
1224 break;
1225 case RM_OP_FLUSH_HB:// CurrentStatus==RUNNING
1226 //
1227 break;
1228 case RM_OP_FORCE_IDAQCMD:// CurrentStatus==RUNNING
1229 //
1230 break;
1231 case RM_OP_DOWNLOAD_HEADER:
1232 /*@LOG PM: Running->Download_Header */
1233 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1234 break;
1235 case RM_OP_TEST:// CurrentStatus==RUNNING
1236 //
1237 break;
1238 case RM_OP_SINT:// CurrentStatus==RUNNING
1239 //
1240 break;
1241 case SCM_SAVE_TMTC_VALUES:// CurrentStatus==RUNNING
1242 if(rm_saved_flag)
1243 PM_DecodeCode(rm_saved_opcode,rm_saved_code);
1244 PM_Periodic_ProgramTimer(PM_SAVE_TMTC_VALUES);
1245 break;
1246 case SCM_CYCLIC_ACQUISITION:// CurrentStatus==RUNNING
1247 switch(code) {
1248 case CM_RC_SUCCESSFUL:
1249 if(rm_saved_flag)
1250 PM_DecodeCode(rm_saved_opcode,rm_saved_code);
1251 break;
1252 case CM_RC_DO_POWER_OFF_ON:
1253 if(PRH_VAR_AUTO_SCM_MODE)
1254 {
1255 if(rm_saved_flag &&
1256 rm_saved_code == CM_RC_DO_STOP_WAIT)
1257 PM_SetGom(PM_STOP_AND_WAIT,SCM_NO_ACTION); // no possible
1258 else
1259 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1260 }
1261 break;
1262 case CM_RC_DO_STOP_WAIT:
1263 // go in stop and wait for termistor check!!!
1264 // but in this case reenable cycliccheck
1265 // waiting for termistors give me ok for power_on
1266 PM_SetGom(PM_STOP_AND_WAIT,SCM_POWEROFF);
1267 SCM_SetCyclicCheck(CM_ENABLED);
1268 break;
1269 case CM_RC_DO_INIT:
1270 case CM_RC_DO_POWER_ON:
1271 case CM_RC_DO_AGAINACQ:
1272 case CM_RC_DO_RESET_IF_ALM:
1273 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1274 break;
1275 }
1276 PM_Periodic_ProgramTimer(PM_CYCLIC_ACQUISITION);
1277 break;
1278 case SCM_TSB_T_CHECK:// CurrentStatus==RUNNING
1279 case SCM_TSB_B_CHECK:
1280 if(code != CM_RC_SUCCESSFUL &&
1281 PRH_VAR_AUTO_SCM_MODE)
1282 {
1283 PM_SetGom(PM_ALARM_HANDLER,SCM_POWEROFF_ON);
1284 }
1285 else {
1286 if(rm_saved_flag)
1287 PM_DecodeCode(rm_saved_opcode,rm_saved_code);
1288 opcode == SCM_TSB_T_CHECK ?
1289 PM_Periodic_ProgramTimer(PM_TSB_T_CHECK) :
1290 PM_Periodic_ProgramTimer(PM_TSB_B_CHECK) ;
1291 }
1292 break;
1293 case SCM_POWER_ON:// CurrentStatus==RUNNING
1294 case SCM_POWEROFF_ON:// CurrentStatus==RUNNING
1295 case SCM_POWEROFF:// CurrentStatus==RUNNING
1296 /*@LOG Unhandled opcode in PM State Machine - PM_RUNNING/Acquistition status */
1297 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1298 break;
1299 }
1300 break;
1301 case PM_STOP_AND_WAIT:
1302
1303 switch(opcode) {
1304 case SCM_SAVE_TMTC_VALUES:
1305 PM_Periodic_ProgramTimer(PM_SAVE_TMTC_VALUES);
1306 break;
1307 case SCM_CYCLIC_ACQUISITION:
1308 switch(code) {
1309 case CM_RC_DO_POWER_ON:
1310 if(PRH_VAR_AUTO_SCM_MODE)
1311 PM_SetGom(PM_CPU_START_UP,SCM_POWER_ON);
1312 break;
1313 case CM_RC_SUCCESSFUL:
1314 if(PRH_VAR_VERBOSE_DEBUG)
1315 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1316 break;
1317 case CM_RC_DO_POWER_OFF_ON:
1318 case CM_RC_DO_STOP_WAIT:
1319 case CM_RC_DO_INIT:
1320 case CM_RC_DO_AGAINACQ:
1321 case CM_RC_DO_RESET_IF_ALM:
1322 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1323 break;
1324 }
1325 PM_Periodic_ProgramTimer(PM_CYCLIC_ACQUISITION);
1326 break;
1327 case RM_OP_DOWNLOAD_HEADER:
1328 /*@LOG PM: Stop&Wait->Download_Header */
1329 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1330 break;
1331 case RM_OP_INITIALIZATION:
1332 case RM_OP_CALIBRATION:
1333 case RM_OP_ACQUISITION:
1334 case RM_OP_FLUSH_HB:
1335 case RM_OP_FORCE_IDAQCMD:
1336 case RM_OP_TEST:
1337 case RM_OP_SINT:
1338 case SCM_TSB_T_CHECK:
1339 case SCM_TSB_B_CHECK:
1340 case SCM_POWEROFF:
1341 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1342 break;
1343 case SCM_POWEROFF_ON:
1344 case SCM_POWER_ON:
1345 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1346 break;
1347 }
1348 break;
1349 case PM_ALARM_HANDLER:
1350 switch(opcode) {
1351 case SCM_POWEROFF_ON:
1352 switch(code) {
1353 case CM_RC_DO_POWER_ON:
1354 PM_SetGom(PM_CPU_START_UP,SCM_POWER_ON);
1355 break;
1356 case CM_RC_DO_STOP_WAIT:
1357 PM_SetGom(PM_STOP_AND_WAIT,SCM_NO_ACTION);
1358 break;
1359 case CM_RC_DO_POWER_OFF_ON:
1360 case CM_RC_SUCCESSFUL:
1361 case CM_RC_DO_AGAINACQ:
1362 case CM_RC_DO_INIT:
1363 case CM_RC_DO_RESET_IF_ALM:
1364 break;
1365 }
1366 break;
1367 case SCM_SAVE_TMTC_VALUES:
1368 PM_Periodic_ProgramTimer(PM_SAVE_TMTC_VALUES);
1369 break;
1370 case SCM_CYCLIC_ACQUISITION:
1371 #warning to investigate
1372 PM_Periodic_ProgramTimer(PM_CYCLIC_ACQUISITION);
1373 break;
1374 case RM_OP_DOWNLOAD_HEADER:
1375 /*@LOG PM: AlarmHandler->Download_Header */
1376 LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1377 break;
1378 case RM_OP_INITIALIZATION:
1379 case RM_OP_CALIBRATION:
1380 case RM_OP_ACQUISITION:
1381 case RM_OP_FLUSH_HB:
1382 case RM_OP_FORCE_IDAQCMD:
1383 case RM_OP_TEST:
1384 case RM_OP_SINT:
1385 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1386 break;
1387 case SCM_POWEROFF:
1388 case SCM_POWER_ON:
1389 case SCM_TSB_B_CHECK:
1390 case SCM_TSB_T_CHECK:
1391 LU_INFN_LOG(LU_INTERNAL,LU_MASK(__FILEID__),__FILEID__,__LINE__,opcode);
1392 break;
1393 }
1394 break;
1395 }
1396 rm_saved_flag=FALSE;
1397 return SUCCESSFUL;
1398 }
1399
1400
1401
1402
1403
1404
1405 /*****************************************************************************/
1406 /* @Function: PM_StopRunManager */
1407 /* @Purpose : */
1408 /* stop che Run Manager, wait for the SINT_OK back */
1409 /* */
1410 /* @@ */
1411 /* @Parameter Name @Message */
1412 /* status_code OUT Return code */
1413 /* @@ */
1414 /*****************************************************************************/
1415
1416 status_code PM_StopRunManager() {
1417 status_code status=CM_RC_SUCCESSFUL;
1418 RM_SendSINT();
1419 RM_CancelACQTimers();
1420
1421 return status;
1422 }
1423
1424
1425
1426 /*****************************************************************************/
1427 /* @Function: PM_StoreMCMDInPartition */
1428 /* @Purpose : */
1429 /* Put message in PamManager private space for MCMD */
1430 /* */
1431 /* @@ */
1432 /* @Parameter Name @Message */
1433 /* status_code OUT Return code */
1434 /* @@ */
1435 /*****************************************************************************/
1436
1437 status_code PM_StoreMCMDInPartition(MA_HEADER_MCMD* mcmd,void** new_location) {
1438 void* p;
1439 status_code status;
1440 /* try to gen a new buffer */
1441 status=OS_piPartGetBuffer_INFN(MCMD_INFN_PART,&p);
1442 *new_location=NULL;
1443 if (status!=SUCCESSFUL) {
1444 /*@LOG StoreMCMDInPartition: buffer not available, notify to history area and do nothing: the MCMD is lost */
1445 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
1446 }else{
1447 /* if buffer available, store the MCMD in it
1448 no length control because buffer size should be greater then the
1449 biggest mcmd->length
1450 */
1451 memcpy(p,mcmd->PtrMCMD,mcmd->Length*sizeof(unsigned short int));
1452 /* now update the PtrMCMD to the new location , so the mcmd points to the right location */
1453 *new_location=p;
1454 }
1455 return status;
1456 }
1457
1458
1459 /*****************************************************************************/
1460 /* @Function: PM_RemoveMCMDInPartition */
1461 /* @Purpose : */
1462 /* Remove message in PamManager private space for MCMD */
1463 /* */
1464 /* @@ */
1465 /* @Parameter Name @Message */
1466 /* status_code OUT Return code */
1467 /* @@ */
1468 /*****************************************************************************/
1469
1470 status_code PM_RemoveMCMDInPartition(void *McmdPtr) {
1471 status_code status;
1472 /* try to gen a new buffer */
1473 status=OS_piPartReturnBuffer_INFN(MCMD_INFN_PART,McmdPtr);
1474 if (status!=SUCCESSFUL) {
1475 /*@LOG RemoveMCMDInPartition error - status */
1476 LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
1477 }
1478 return status;
1479 }
1480
1481
1482
1483 /*****************************************************************************/
1484 /* @Function: PM_SubmitMCMD */
1485 /* @Purpose : */
1486 /* Submit the MCMD to PamManager. */
1487 /* This is the unique function of this module executed directly from the */
1488 /* higher priority laben task, not by INFN tasks. */
1489 /* the caller is in the laben MCMD Dispather *a
1490 /* @@ */
1491 /* @Parameter Name @MA_HEADER_MCMD* */
1492 /* status_code OUT Return code */
1493 /* @@ */
1494 /*****************************************************************************/
1495
1496
1497 status_code PM_SubmitMCMD(MA_HEADER_MCMD* headerMcmd) {
1498 status_code status=SUCCESSFUL;
1499 MsgTsk sndMsg;
1500 unsigned int code=0,istimetag;
1501 void *newPtr;
1502 unsigned short* pMcmdInfo;
1503 /* copy the MCMD in the INFN privte partition: */
1504 status=PM_StoreMCMDInPartition(headerMcmd,&newPtr);
1505 /* As laben-SW requested, delete the MCMD from the area. deleting of the MCMD must be done in any case,even if not
1506 stored in the INFN private partition */
1507
1508 #ifndef SIMULATOR
1509 istimetag =( *(((unsigned short*)headerMcmd->PtrMCMD)+1)&TIMETAG_MASK ) ? TIMETAG_MCMD : IMMEDIATE_MCMD;
1510 MA_piDelBufferMCMD(headerMcmd->PtrMCMD,istimetag);
1511 #endif // SIMULATOR
1512
1513 if(status==SUCCESSFUL) {
1514 /* update the new MCMD location pointer */
1515 headerMcmd->PtrMCMD=newPtr;
1516
1517 switch(headerMcmd->Type)
1518 {
1519 case ORBITAL_INFORMATION:
1520 code=PM_INFN_MCMD_STOREORBITALINFO;
1521 break;
1522 case INCLINATION_INFORMATION:
1523 code=PM_INFN_MCMD_STOREINCLINATIONINFO;
1524 break;
1525 case SELECT_MODE:
1526 code=PM_INFN_MCMD_SELECTMODE;
1527 break;
1528 case CALIBRATE:
1529 code=PM_INFN_MCMD_CALIBRATE;
1530 break;
1531 case NEUTRON_DETECTOR:
1532 code = PM_INFN_MCMD_NEUTRONDETECTOR;
1533 break;
1534 case GAS_CONTAINER_PURGE:
1535 code = PM_INFN_MCMD_GASCONTAINERPURGE;
1536 break;
1537 case PURGE_TRD:
1538 /*At the moment unused*/
1539 // code = PM_INFN_MCMD_NEUTRONDETECTOR, PM_INFN_MCMD_GASTEST, PM_INFN_MCMD_CALIBRATE, PM_INFN_MCMD_PURGE_TRD, PM_INFN_MCMD_TEST,
1540 // break;
1541 code=PM_INFN_MCMD_PURGE_TRD;
1542 break;
1543 case TEST:
1544 code=PM_INFN_MCMD_TEST;
1545 break;
1546 default :
1547 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
1548 /*@LOG MCMD not identified: */
1549 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0);
1550 status =HA_E10_MCMD_ERR;
1551 break;
1552
1553 }
1554
1555 if (status==SUCCESSFUL) {
1556 /*==================== MCMD dispatched ======================*/
1557 /* Send message to the object executor */
1558 sndMsg.Code =code;
1559 *(MA_HEADER_MCMD* )sndMsg.Info =*headerMcmd;
1560 sndMsg.LlInfo =sizeof(MA_HEADER_MCMD);
1561 status=PM_SndMsgPamManager_INFN(&sndMsg);
1562 }
1563
1564 }else{
1565 /*@LOG error storing MCMD in partition - status */
1566 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
1567 }
1568 return status;
1569 }
1570
1571
1572
1573
1574
1575 /*****************************************************************************/
1576 /* @Function: PM_MCMDStoreOrbitalInfo */
1577 /* @Purpose : */
1578 /* Manage the Store Orbinal Info */
1579 /* */
1580 /* @@ */
1581 /* @Parameter Name @Message */
1582 /* status_code OUT Return code */
1583 /* @@ */
1584 /*****************************************************************************/
1585
1586 status_code PM_MCMDStoreOrbitalInfo(MA_HEADER_MCMD* headerMcmd) {
1587 /*
1588 Dont store now because storing is done in low level for all MCMDs
1589
1590 HB_Store(HB_MCMD,
1591 headerMcmd->Length*sizeof(unsigned short int),
1592 headerMcmd->PtrMCMD);
1593 */
1594 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
1595 }
1596
1597
1598 /*****************************************************************************/
1599 /* @Function: PM_StoreMCMDInclinationInfo */
1600 /* @Purpose : */
1601 /* manage the store inclination info. */
1602 /* */
1603 /* @@ */
1604 /* @Parameter Name @Message */
1605 /* status_code OUT Return code */
1606 /* @@ */
1607 /*****************************************************************************/
1608
1609 status_code PM_MCMDStoreInclinationInfo(MA_HEADER_MCMD* headerMcmd) {
1610 /*
1611 Dont store now because storing is done in low level for all MCMDs
1612
1613 HB_Store(HB_MCMD,
1614 headerMcmd->Length*sizeof(unsigned short int),
1615 headerMcmd->PtrMCMD);
1616 */
1617 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
1618 }
1619
1620
1621 /*****************************************************************************/
1622 /* @Function: PM_MCMDCalibrate */
1623 /* @Purpose : */
1624 /* manage the calibrate MCMD */
1625 /* */
1626 /* @@ */
1627 /* @Parameter Name @Message */
1628 /* status_code OUT Return code */
1629 /* @@ */
1630 /*****************************************************************************/
1631
1632 status_code PM_MCMDCalibrate(MA_HEADER_MCMD* headerMcmd) {
1633 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
1634 PM_ActionForTheAscendingNode();
1635 }
1636
1637 /*****************************************************************************/
1638 /* @Function: PM_ActionForTheAscendingNode */
1639 /* @Purpose : */
1640 /* do the Calibrate/AScending Node actions */
1641 /* */
1642 /* @@ */
1643 /* @Parameter Name @Message */
1644 /* status_code OUT Return code */
1645 /* @@ */
1646 /*****************************************************************************/
1647
1648 status_code PM_ActionForTheAscendingNode() {
1649 status_code status;
1650 PM_AscendingNode_Counter++;
1651 // Every ascending node we reset value of these counter.
1652 PRH_VAR_RES=0;
1653 PRH_VAR_OFF=0;
1654 PRH_VAR_TRIG=0;
1655 TI_piSetObtOrbit_s();
1656 if(PRH_VAR_PM_N_ORBIT_CALIB != 0 && PM_AscendingNode_Counter % PRH_VAR_PM_N_ORBIT_CALIB == 0) {
1657 /* TBD: what to do in in download mode ? */
1658 if(PM_CurrentStatus == PM_RUNNING && RM_RunIsInProgress())
1659 MH_SetGOM(MH_GOM_CALIBRATION);
1660 else
1661 PM_PendingCalibration = TRUE;
1662 }
1663 }
1664
1665
1666
1667 /*****************************************************************************/
1668 /* @Function: PM_DoNextRun */
1669 /* @Purpose : */
1670 /* this is what to do when Pam Manager receives a Next Run Message */
1671 /* @@ */
1672 /* @Parameter Name @Message */
1673 /* status_code OUT Return code */
1674 /* @@ */
1675 /*****************************************************************************/
1676
1677 status_code PM_DoNextRun() {
1678
1679 if(MH_GetGOM() == MH_GOM_ACQUISITION)
1680 {
1681 return MH_SetGOM(MH_GOM_ACQUISITION);
1682 }
1683
1684 return CM_RC_SUCCESSFUL;
1685 }
1686
1687
1688 status_code PM_MCMDPurgeTRD(MA_HEADER_MCMD *headerMcmd) {
1689 UINT16 *id=SMH_GETPTR_BODYAREA(headerMcmd->PtrMCMD);
1690 switch(*id) {
1691 case 0xCAFE:
1692 // TBD: Call the GasFunction "gas purge"
1693 break;
1694 case 0xCBFE:
1695 // TBD: Call the GasFunction "one valve"
1696 break;
1697 default:
1698 LU_INFN_LOG(LU_WARNING,LU_MASK(__FILEID__),__FILEID__,__LINE__,*id);
1699 break;
1700 }
1701 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
1702 }
1703
1704
1705 status_code PM_MCMDNeutronDetector(MA_HEADER_MCMD *headerMcmd)
1706 {
1707 PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD);
1708 }
1709
1710 status_code PM_GetCurrentAcqSetting(RM_ACQ_SETTING *mode)
1711 {
1712 *mode = PM_AcqSetting;
1713 }
1714
1715 PM_INFN_STATUS PM_GetStatus()
1716 {
1717 return(PM_CurrentStatus);
1718 }
1719
1720 void PM_SetGom(PM_INFN_STATUS new_status,SCM_ACTION scm_action)
1721 {
1722
1723 switch(new_status)
1724 {
1725 case PM_BOOTED:
1726 SCM_SetCyclicCheck(CM_DISABLED);
1727 PM_PeriodicEnable(PM_CYCLIC_ACQUISITION);
1728 PM_PeriodicEnable(PM_SAVE_TMTC_VALUES);
1729 PM_PeriodicDisable(PM_TSB_T_CHECK);
1730 PM_PeriodicDisable(PM_TSB_B_CHECK);
1731 // This calls FT_ChangeOpMode
1732 // MH_SetGOM(MH_GOM_MAINTENANCE);
1733 break;
1734 case PM_CPU_START_UP:
1735 // scm_action = SCM_POWER_ON;
1736 SCM_SetCyclicCheck(CM_DISABLED);
1737 PM_PeriodicDisable(PM_TSB_T_CHECK);
1738 break;
1739 case PM_RUNNING:
1740 if(PRH_VAR_AUTO_RM_MODE)
1741 MH_SetGOM(MH_GOM_INITIALIZATION);
1742 if (PRH_VAR_AUTO_SCM_MODE){
1743 PM_PeriodicEnable(PM_TSB_T_CHECK);
1744 PM_PeriodicEnable(PM_TSB_B_CHECK);
1745 SCM_SetCyclicCheck(CM_ENABLED);
1746 }
1747 break;
1748 case PM_STOP_AND_WAIT:
1749 MH_SetGOM(MH_GOM_MAINTENANCE);
1750 SCM_SetCyclicCheck(CM_DISABLED);
1751 PM_PeriodicDisable(PM_TSB_T_CHECK);
1752 break;
1753 case PM_ALARM_HANDLER:
1754 MH_SetGOM(MH_GOM_MAINTENANCE);
1755 SCM_SetCyclicCheck(CM_DISABLED);
1756 PM_PeriodicDisable(PM_TSB_T_CHECK);
1757 break;
1758 default:
1759 }
1760 if(scm_action != SCM_NO_ACTION){
1761 pm_scm_action++;
1762 //
1763 SCM_SendCode(scm_action);
1764 }
1765 PM_CurrentStatus = new_status;
1766 }
1767
1768 PM_INFN_STATUS PM_GetGOM() {
1769 return PM_CurrentStatus;
1770 }
1771
1772 static status_code PM_PeriodicEnable(PM_INFN_COMMAND action)
1773 {
1774 PM_SendCommand(action);
1775 return CM_RC_SUCCESSFUL;
1776 }
1777 static status_code PM_PeriodicDisable(PM_INFN_COMMAND action)
1778 {
1779
1780 OS_piCancelTimer_INFN(PM_Periodic_TIM[action]);
1781 PM_Periodic_DoFlag[action] = FALSE;
1782 return CM_RC_SUCCESSFUL;
1783 }
1784
1785 status_code PM_Periodic_ProgramTimer(PM_INFN_COMMAND action)
1786 {
1787 status_code s=CM_RC_SUCCESSFUL;
1788 if(PM_Periodic_DoFlag[action])
1789 s=OS_piStartTimer_INFN(PM_Periodic_TIM[action],
1790 PRH_ARR_PM_PERIODIC_DELAY[action],
1791 PM_Periodic_CallBack,&(PM_Periodic_Action[action]));
1792 return s;
1793 }
1794
1795
1796 /* this function is executed directly, not by the Pam Manager: */
1797 status_code PM_CPU_Reboot(BOOL do_reset) {
1798 unsigned int reset;
1799 /* Switch off the Memory Module 1 */
1800 FT_piMemModuleOFF(FT_MEM_MOD_1);
1801 /* Switch off the Memory Module 2 */
1802 FT_piMemModuleOFF(FT_MEM_MOD_2);
1803 /* PDHT hardware reset is performed by programming */
1804 /* PCMCIA B RESET register (0x10000144) */
1805 CD_PCMCIA_B_RESET_PROGRAM;
1806 if(do_reset) {
1807 /* Enable software reset */
1808 reset = ERC32_MEC.Control;
1809 reset |=ERC32_CONFIGURATION_SOFTWARE_RESET_ALLOWED;
1810 ERC32_MEC.Control = reset;
1811 /* Write software reset */
1812 ERC32_MEC.Software_Reset =0;
1813 }
1814 }
1815
1816 status_code PM_SysInitialization()
1817 {
1818 if (PRH_VAR_AUTO_SCM_MODE)
1819 {
1820 PM_PeriodicEnable(PM_CYCLIC_ACQUISITION);
1821 PM_PeriodicEnable(PM_SAVE_TMTC_VALUES);
1822 }
1823
1824
1825 if(PRH_VAR_AUTO_RM_MODE)
1826 PM_SetGom(PM_RUNNING,SCM_NO_ACTION);
1827
1828 return CM_RC_SUCCESSFUL;
1829 }
1830
1831
1832
1833
1834 status_code PM_LogStatus()
1835 {
1836 TI_TIME obt_ts,ts,t;
1837 status_code s;
1838 /*@LOG PamManager CurrentStatus */
1839 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,PM_CurrentStatus);
1840 /*@LOG SCMManager CurrentAction */
1841 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,SCM_GetCurrentAction());
1842 s=TI_piGetTimeSyncInfo_s(&obt_ts,&ts);
1843 if(s)
1844 /*@LOG error getting GetTimeSyncInfo_s - status */
1845 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xAAAA0000 | s);
1846 else {
1847 /*@LOG OBT at the last time sync information - s */
1848 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,obt_ts);
1849 /*@LOG TimeSync info - s */
1850 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,ts);
1851 }
1852 s=TI_piGetTimeSyncOffset_s(&t);
1853 if(s)
1854 /*@LOG error getting GetTimeSyncOffset_s - status */
1855 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xAAAA0000 | s);
1856 else {
1857 /*@LOG TimeSyncOffset - seconds */
1858 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,t);
1859 }
1860 s=TI_piGetCurrentMoscowTime_s(&t);
1861 if(s)
1862 /*@LOG error getting GetCurrentMoscowTime_s - seconds */
1863 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xAAAA0000 | s);
1864 else {
1865 /*@LOG CurrentMoscowTime_s - seconds */
1866 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,t);
1867 }
1868 s=TI_piGetOrbitOffset_s(&t);
1869 if(s)
1870 /*@LOG error GetOrbitOffset_s - status */
1871 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xAAAA0000 | s);
1872 else {
1873 /*@LOG OrbitOffset_s - seconds */
1874 LU_INFN_LOG(LU_NORMAL_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,t);
1875 }
1876 RM_LogStatus();
1877 }
1878
1879
1880
1881
1882 #if DEBUG
1883 /* this function is executed by PamManager */
1884 void PM_MCMDTest(unsigned short code,
1885 unsigned short value1,
1886 unsigned short value2,
1887 unsigned short value3,
1888 unsigned short value4) {
1889 UINT32 i;
1890 static UINT32 blen = 24*1024;
1891 UINT32 fid,v;
1892 static UINT32 pattern = 0xCAFECAFE;
1893 status_code status,s;
1894 PWR_IPM6 ipm;
1895 CM_ON_OFF oo;
1896 UINT16 sw;
1897 #ifdef GS_COMPILE
1898 GS_REPLY_STRUCT gas_status;
1899 UINT16 *gas_word=(UINT16*)&gas_status;
1900 #endif
1901
1902
1903 int n;
1904 int sleep;
1905 // LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,code);
1906 switch(code) {
1907 case 0:
1908 MH_SetGOM(MH_GOM_FLUSH_HB);
1909 break;
1910 case 1:
1911 MH_SetGOM(MH_GOM_ACQUISITION);
1912 break;
1913 case 2:
1914 MH_SetGOM(MH_GOM_MAINTENANCE);
1915 break;
1916 #ifdef DURTY_MODE
1917 case 3:
1918 TS_SndTestCode_INFN(value1);
1919 break;
1920 #endif // DURTY_MODE
1921 case 4:
1922 PM_pi_EnableStore_In_DataTimeOut();
1923 break;
1924 case 5:
1925 PM_pi_DisableStore_In_DataTimeOut();
1926 break;
1927 case 6:
1928 // bufsel=value1;
1929 break;
1930 case 7:
1931 RM_LogStatus();
1932 break;
1933 case 8:
1934 //LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,HB_SpaceLeft());
1935 break;
1936 /*
1937 case 9:
1938 PM_pi_SetNotifyTask_SKETCHBOARD_FREE(TS_INFN_TASK);
1939 PM_piPageWasSaved(FS_HK);
1940 break;
1941 */
1942 case 10:
1943 RM_SendHBStoreRequest();
1944 break;
1945 case 11:
1946 PM_PeriodicEnable(PM_SAVE_TMTC_VALUES);
1947 break;
1948 case 12:
1949 PM_PeriodicDisable(PM_SAVE_TMTC_VALUES);
1950 break;
1951 case 13:
1952 PM_PeriodicEnable(PM_CYCLIC_ACQUISITION);
1953 break;
1954 case 14:
1955 PM_PeriodicDisable(PM_CYCLIC_ACQUISITION);
1956 break;
1957 case 15:
1958 SD_piPIFReset();
1959 break;
1960 case 16:
1961 HK_KHB_InitBoard();
1962 // KHB_InitBoard();
1963 break;
1964 case 17:
1965 FS_piLogInfo();
1966 break;
1967 case 18:
1968 PM_PeriodicDisable(PM_TSB_T_CHECK);
1969 break;
1970 case 19:
1971 {
1972 unsigned int DataValue;
1973 int i;
1974 static int min=0,max=4;
1975 for(i = min ; i < max; i++){
1976 HK_GetTMValue (TM_DEA_ANA_1+min, &DataValue);
1977 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,DataValue>>16);
1978 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,DataValue);
1979 }
1980 }
1981 break;
1982 case 20:
1983 // KHB_Log();
1984 break;
1985 case 21:
1986 for(fid=0;fid<LU_FILEID_N;fid++)
1987 LU_MASK(fid) |= LU_DEBUG_TRACE;
1988 break;
1989 case 22:
1990 for(fid=0;fid<LU_FILEID_N;fid++)
1991 if(LU_MASK(fid) & LU_DEBUG_TRACE)
1992 LU_MASK(fid) &= ~LU_DEBUG_TRACE;
1993 break;
1994 case 23:
1995 PM_PeriodicEnable(PM_TSB_T_CHECK);
1996 break;
1997 case 24:
1998 PM_PeriodicEnable(PM_TSB_B_CHECK);
1999 break;
2000 case 25:
2001 PM_PeriodicDisable(PM_TSB_B_CHECK);
2002
2003 case 41:
2004 PWR_SwitchOn_IPM(TM_KRB_IPM1);
2005 break;
2006 case 42:
2007 PWR_SwitchOn_IPM(TM_KRB_IPM2);
2008 break;
2009 case 43:
2010 PWR_SwitchOn_IPM(TM_KRB_IPM3);
2011 break;
2012 case 44:
2013 PWR_SwitchOn_IPM(TM_KRB_IPM4);
2014 break;
2015 case 45:
2016 PWR_SwitchOn_IPM(TM_KRB_IPM5);
2017 break;
2018 case 46:
2019 PWR_SwitchOn_IPM(TM_KRB_IPM6);
2020 break;
2021 case 47:
2022 PWR_SwitchOff_IPM(TM_IPM12_OFF);
2023 break;
2024 case 48:
2025 PWR_SwitchOff_IPM(TM_IPM34_OFF);
2026 break;
2027 case 49:
2028 PWR_SwitchOff_IPM(TM_IPM56_OFF);
2029 break;
2030 case 60:
2031 for(ipm=PWR_IPM_1;ipm<=PWR_IPM_6;ipm++) {
2032 PWR_KRB_IPM(ipm,&oo);
2033 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,oo);
2034 }
2035 case 66:
2036 HK_SendTC(TM_KHB_PWR_33_HOT_ON,1);
2037 break;
2038 case 67:
2039 HK_SendTC(TM_KHB_PWR_33_COLD_ON,1);
2040 break;
2041 case 68:
2042 HK_SendTC(TM_KHB_PWR_33_OFF,1);
2043 break;
2044 case 69:
2045
2046 #define LOG_TM(id,line) do { \
2047 HK_GetTMValue(id,&v); \
2048 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,line,v); \
2049 } while(0)
2050 break;
2051 case 80:
2052 s=PRH_var_write2eeprom(PRH_EEPROM_CURRENT,value1);
2053 break;
2054 case 81:
2055 s=PRH_var_write2eeprom(PRH_EEPROM_CURRENT,value1);
2056 break;
2057 case 82:
2058 s=PRH_var_read_eeprom(PRH_EEPROM_CURRENT,value1);
2059 break;
2060 case 83:
2061 s=PRH_arr_write2eeprom(PRH_EEPROM_CURRENT,value1);
2062 break;
2063 case 84:
2064 s=PRH_arr_read_eeprom(PRH_EEPROM_CURRENT,value1);
2065 break;
2066 case 85:
2067 s=PRH_tab_write2eeprom(PRH_EEPROM_CURRENT,value1);
2068 break;
2069 case 86:
2070 s=PRH_tab_read_eeprom(PRH_EEPROM_CURRENT,value1);
2071 break;
2072 case 87:
2073 HK_KHB_HardReset();
2074 break;
2075 case 89:
2076 MH_SetTestParam(value1,value2,value3);
2077 MH_SetGOM(MH_GOM_TEST);
2078 break;
2079 case 90:
2080 HK_KHBSend128Trigger();
2081 break;
2082 case 91:
2083 MH_SetGOM(MH_GOM_INITIALIZATION);
2084 break;
2085 case 92:
2086 MH_SetGOM(MH_GOM_CALIBRATION);
2087 break;
2088 case 93:
2089 MH_SetGOM(MH_GOM_ACQUISITION);
2090 break;
2091 case 94:
2092 FT_piInitFileSystem();
2093 break;
2094 case 95:
2095 status=DAQ_ReadStatusWord(&sw);
2096 if(status)
2097 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2098 else
2099 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,sw);
2100 break;
2101 case 96:
2102 QS_piCounterCalibration(value1);
2103 break;
2104 case 97:
2105 QS_piUsageStart();
2106 break;
2107 case 98:
2108 {
2109 UINT16 usage;
2110 QS_piUsageStop(&usage);
2111 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,usage);
2112 }
2113 break;
2114 case 99:
2115 {
2116 static UINT16 usage;
2117 static UINT32 i,j;
2118 static UINT32 susp=2,n=1000,ncrc=1000;
2119 static BYTE B[100];
2120 UINT16 oldcrc=0x17,crc=0x33;
2121
2122 n=value1;
2123 ncrc=sizeof(B);
2124 QS_piUsageStart();
2125 for(i=0;i<n;i++) {
2126 OS_piTaskSuspend(susp);
2127 for(j=0;j<ncrc;j++) {
2128 B[j]=(BYTE)(oldcrc+B[j]+j+crc);
2129 crc=CM_Compute_CRC16(oldcrc,B,sizeof(B));
2130 }
2131 }
2132 QS_piUsageStop(&usage);
2133 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,usage);
2134 }
2135 break;
2136 case 100:
2137 {
2138 UINT32 ar=0xf1c0f1c0;
2139 UINT16 sr=0xf1c0;
2140 status_code s;
2141
2142 s=HK_ReadKHBStatusRegister(&sr);
2143 if(s)
2144 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,s);
2145 else
2146 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,sr);
2147
2148 s=HK_ReadKHBAlarmRegister(&ar);
2149 if(s)
2150 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,s);
2151 else
2152 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,ar);
2153 }
2154 break;
2155 case 101:
2156 {
2157 PM_SetGom(PM_RUNNING,SCM_NO_ACTION);
2158 }
2159 break;
2160 case 102:
2161 {
2162 status_code status;
2163 BYTE channel = value1;
2164 BYTE value = value2;
2165 status = HV_Write(channel,value);
2166 }
2167 break;
2168 case 103:
2169 MC_piSetState(MC_ACTIVE_STATE);
2170 break;
2171 case 104:
2172 MC_piSetState(MC_MAINTENANCE_STATE);
2173 break;
2174 case 105:
2175 status = OS_piResourceRelease_INFN (TEST_RES);
2176 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2177 break;
2178 case 106:
2179 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,0xffff);
2180 status = OS_piResourceObtain_INFN(TEST_RES,WAIT,NO_TIMEOUT);
2181 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2182 break;
2183 case 107:
2184 PM_FORCE_BREAKPOINT();
2185 break;
2186 case 108:
2187 /* CM_dummy_loop test */
2188 {
2189 TI_TIME t1,t2;
2190 UINT32 n= value3 ? value3*1000 : ((value1 << 16) | value2) ;
2191 TI_piGetTimeInfo_ms (&t1);
2192 CM_Suspend_Dummy_Loop(n);
2193 TI_piGetTimeInfo_ms (&t2);
2194 LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,t2-t1);
2195 }
2196 break;
2197 case 109: // formatta eprom quando sto in default mode
2198 status = PRH_FormatEEPROM();
2199 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2200 break;
2201 case 110: // legge i valori correnti della eeprom e li mette in mem
2202 status = PRH_ReadCurrentParam();
2203 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2204 break;
2205 case 111:
2206 status = PRH_ReadDefaultParam();
2207 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2208 break;
2209 case 112:
2210 status = PRH_WriteCurrentParam();
2211 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2212 break;
2213 case 113:
2214 status = PRH_WriteEEPROMBootinfo( (value1 << 16) | value2 );
2215 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2216 break;
2217 case 114:
2218 {
2219 UINT32 bi=0xFFFFFFFF;
2220 status = PRH_ReadEEPROMBootinfo(&bi);
2221 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2222 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,bi);
2223 }
2224 break;
2225 case 115:
2226 {
2227 unsigned int DataValue;
2228 HK_GetTMValue (value1, &DataValue);
2229 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,value1);
2230 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,DataValue);
2231 }
2232 break;
2233 case 116:
2234 {
2235 unsigned int DataValue;
2236 HK_SendTC (value1, value2);
2237 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,value1);
2238 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,value2);
2239 }
2240 break;
2241 case 117:
2242 // KHB_TestBoard(1);
2243 // HK_UpdateKHBMaskRegister(KHB_MASK_ALL,KHB_PRESET);
2244 break;
2245 case 118:
2246 PM_SetGom(PM_RUNNING,SCM_NO_ACTION);
2247 break;
2248 case 119:
2249 PM_SetGom(PM_CPU_START_UP,SCM_POWER_ON);
2250 break;
2251 case 120:
2252 PM_LogStatus();
2253 break;
2254 case 121:
2255 PM_SetGom(PM_STOP_AND_WAIT,SCM_NO_ACTION);
2256 break;
2257 case 122:
2258 status = HK_KHB_SetHotCold(CM_HOT);
2259 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2260 break;
2261 case 123:
2262 status = HK_KHB_SetHotCold(CM_COLD);
2263 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2264 break;
2265 case 124:
2266 {
2267 UINT16 x[2];
2268 status = PWR_CMD2TRB_READ(value1,value2,x);
2269 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
2270 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,x[0]);
2271 LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,x[1]);
2272 }
2273 case 125:
2274 WS_2_Log();
2275 break;
2276 case 126:
2277 WS_2_LogTable(value1,WS_2_FULL);
2278 break;
2279 }
2280 }
2281 #endif // DEBUG
2282
2283
2284

  ViewVC Help
Powered by ViewVC 1.1.23