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

Annotation of /quicklook/dataToXML/Data/compilationInfo/src/INFN/PM_PamManager_INFN.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Tue Apr 25 09:00:20 2006 UTC (19 years, 2 months ago) by kusanagi
Branch point for: MAIN
File MIME type: text/plain
Initial revision

1 kusanagi 1.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