/[PAMELA software]/quicklook/dataToXML/Data/compilationInfo/src/MCMDManager/MCMDDispatcher/MD_MCMDDispatcher_int.c
ViewVC logotype

Annotation of /quicklook/dataToXML/Data/compilationInfo/src/MCMDManager/MCMDDispatcher/MD_MCMDDispatcher_int.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Tue Apr 25 09:00:21 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 kusanagi 1.1 /****************************************************************************
2     /* F i l e D a t a
3     /*
4     /* Module : MCMDManager
5     /* C.I. No. :
6     /* $Revision: 1.22 $
7     /* $Date: 2005/02/21 08:58:29 $
8     /* Belonging to :
9     /* :
10     /* $RCSfile: MD_MCMDDispatcher_int.c,v $
11     /* Program Type :
12     /* Sub-modules :
13     /*
14     /****************************************************************************
15     /* S W D e v e l o p m e n t E n v i r o n m e n t
16     /*
17     /* Host system :
18     /* SW Compiler :
19     /* $Author: sebastiani $
20     /* :
21     /****************************************************************************
22     /* U p d a t i n g
23     /*
24     /* $Log: MD_MCMDDispatcher_int.c,v $
25     /* Revision 1.22 2005/02/21 08:58:29 sebastiani
26     /* all log comments completed
27     /*
28     /* Revision 1.21 2004/10/08 07:27:29 sebastiani
29     /* *** empty log message ***
30     /*
31     /* Revision 1.20 2004/09/28 15:36:38 sebastiani
32     /* interrupt manager fix
33     /*
34     /* Revision 1.19 2004/09/17 15:01:00 faber
35     /* LU_INFN_LOG flags fixing
36     /*
37     /* Revision 1.18 2004/07/27 17:30:17 faber
38     /* OBT can be now in second or milliseconds, depending of the situazion.
39     /* OBT_s is used for FM compatibility, OBT_ms basically for MM infos
40     /*
41     /* Revision 1.17 2004/07/27 10:13:48 faber
42     /* LU_ALARM macro introduced,
43     /* LU_XXXX bit field "logtype" redefined.
44     /* HistoryArea 5 now log a 32 bit word as "info1"
45     /* and logging is reformatted.
46     /*
47     /* Revision 1.16 2004/05/20 09:04:22 sebastiani
48     /* ok
49     /*
50     /* Revision 1.15 2004/05/13 10:47:17 faber
51     /* hid the HB_Store funcion in favour of wrapped funcions
52     /*
53     /* Revision 1.14 2004/05/11 09:11:06 faber
54     /* *** empty log message ***
55     /*
56     /* Revision 1.13 2004/05/03 16:08:21 sebastiani
57     /* fix time sync store
58     /*
59     /* Revision 1.12 2004/05/03 10:42:04 faber
60     /* HB_StoreTimeSync called in MCMDTimeSync and
61     /* HB_Store called _before_ dispatching inside MD_ifDispatch
62     /*
63     /* Revision 1.11 2004/04/29 10:23:34 sebastiani
64     /* *** empty log message ***
65     /*
66     /* Revision 1.10 2004/04/29 07:12:44 faber
67     /* HB_Store called before and not after, the Dispatching
68     /*
69     /* Revision 1.9 2004/04/20 14:54:13 faber
70     /* work before Brussel
71     /*
72     /* Revision 1.8 2003/12/07 15:07:11 sebastiani
73     /* GAS_TEST renamed to GAS_CONTAINER_PURGE
74     /*
75     /* Revision 1.7 2003/12/05 17:14:34 alfarano
76     /* update
77     /*
78     /* Revision 1.6 2003/11/27 17:53:23 faber
79     /* -Power management poweron procedure done and some tested in the simulator
80     /* -history entry 5 now takes OBT
81     /*
82     /* Revision 1.5 2003/11/18 09:01:15 alfarano
83     /* laben patch fixes some problems
84     /*
85     /* Revision 1.4 2003/11/10 14:16:56 faber
86     /* MCMD in HB_Store (store all MCMD)
87     /*
88     /* Revision 1.3 2003/10/21 16:09:12 alfarano
89     /* LU_LOG_INFN replacement for all remaining original log functions
90     /*
91     /* Revision 1.2 2003/10/17 09:15:26 sebastiani
92     /* log every type of MCMD
93     /*
94     /* Revision 1.1.1.1 2003/08/04 09:40:21 sebastiani
95     /* Imported sources laben rel. 19.06.2003 integrated with pam2
96     /*
97     /* Revision 1.11 2003/04/30 09:22:12 aurora
98     /* execute REBOOT mcmd always
99     /*
100     /* Revision 1.10 2003/04/29 14:50:59 aurora
101     /* correct eligibility check of REBOOT mcmd
102     /*
103     /* Revision 1.9 2003/01/30 10:14:57 aurora
104     /* introduced ifdef for EM and FM
105     /*
106     /* Revision 1.8 2002/06/11 13:19:18 zulia
107     /* call Entry type 3 ( log DIRECT activity ) on direct MCMD
108     /*
109     /* Revision 1.7 2002/05/09 08:16:34 zulia
110     /* * acceptance release
111     /*
112     /*
113     /*****************************************************************************/
114    
115     /*============================= Include File ================================*/
116    
117    
118     #include <src/INFN/LU_SourceFileID_INFN.h>
119     #define __FILEID__ _MD_MCMDDispatcher_int__c
120     #include <src/INFN/PRH_ParamHandler_INFN.h>
121     #include <src/INFN/LU_LogUtility_INFN.h>
122     #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
123     LU_DECL_MASK();
124    
125    
126     #include <src/MCMDManager/MCMDDispatcher/MD_MCMDDispatcher_int.h>
127     #include <src/FileManager/MMSUManager/FT_MMSUManager_p.h>
128     #include <src/MCMDManager/TTManager/MT_TTManager_p.h>
129     #include <src/ModeManager/ModeCoordinator/MC_ModeCoordinator_p.h>
130     #include <src/BasicSW/PatchDumpManager/PD_PatchDumpManager_p.h>
131     #include <src/BasicSW/CrimeaDriver/CD_CrimeaDriver_p.h>
132     #include <src/BasicSW/Bus1553B/BI_Bus1553B_p.h>
133     #include <src/HKManager/HistoryArea/HA_HistoryArea_p.h>
134     #include <src/TM_TCManager/TMTCManager/TM_TMTCManager_p.h>
135     #include <src/INFN/PM_PamManager_INFN.h>
136    
137     #ifdef INFN
138     #include <src/INFN/HB_HKBuffer_INFN.h>
139     #include <src/INFN/MD_MCMDDispatcher_INFN_p.h>
140     #else
141     #include <src/TestUtility/Test/TS_Test_p.h>
142     #endif
143     /*============================== Local Variables ============================*/
144    
145     /*****************************************************************************/
146    
147     /*===== M C M D i s p a t c h e r I N T E R N A L F U N C T I O N S =====*/
148    
149     /*****************************************************************************/
150     /* @Function: MD_ifDispatch */
151     /* @Purpose : */
152     /* The function checks the MCMD execution elegibility therefore dispatches */
153     /* the MCDM to the object executor. */
154     /* */
155     /* @@ */
156     /* @Parameter Name @Mode @Description */
157     /* pMcmdExec IN Pointer to MCMD header */
158     /* OUT */
159     /* @@ */
160     /*****************************************************************************/
161    
162     void MD_ifDispatch (MA_HEADER_MCMD* pMcmdExec)
163     {
164     status_code status;
165     MsgTsk sndMsgMCMD;
166     unsigned int dispatchMCMDflag;
167     unsigned int dispatchINFNMCMDflag;
168     unsigned int code;
169     unsigned int timetagFlag;
170     unsigned short* pMcmdInfo;
171     status_code (*pf)(MsgTsk* msg);
172     unsigned int code1;
173    
174    
175     /* Default condition dispatch MCMD */
176     dispatchMCMDflag =TRUE;
177     dispatchINFNMCMDflag =FALSE;
178     pf =NULL;
179     /* Select the MCMD executor */
180    
181    
182     //HB_Store(HB_MCMD,pMcmdExec->Length*sizeof(UINT16),pMcmdExec->PtrMCMD,0);
183     HB_StoreMcmd(pMcmdExec);
184     switch(pMcmdExec->Type)
185     {
186     case DOWN_LINK : /* MCMD object executor : MMSUManager */
187     status =MC_piGetMcmdAbilityExec(DOWN_LINK);
188     code =FT_MCMD_DOWN_LINK;
189     pf =FT_piSndMsgMMSUManager;
190     /*@LOG Downlink macrocommand */
191     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
192     break;
193     case BITE : /* MCMD object executor : MMSUManager */
194     status =MC_piGetMcmdAbilityExec(BITE);
195     code =FT_MCMD_BITE;
196     pf =FT_piSndMsgMMSUManager;
197     /*@LOG BITE macrocommand */
198     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
199     break;
200     case RESET_HISTORY :
201     status =MC_piGetMcmdAbilityExec(RESET_HISTORY);
202     code =HA_RESET;
203     pf =HA_piSndMsgHistoryArea;
204     /*@LOG RESET_HISTORY macrocommand */
205     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
206     break;
207     case PATCH : /* MCMD object executor : PatchDumpManager */
208     status = MC_piGetMcmdAbilityExec(PATCH);
209     code = PD_PATCH;
210     pf = PD_piSndMsgPatchDumpManager;
211     /*@LOG PATCH macrocommand */
212     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
213     break;
214     case DUMP : /* MCMD object executor : PatchDumpManager */
215     status = MC_piGetMcmdAbilityExec(DUMP);
216     code = PD_DUMP;
217     pf = PD_piSndMsgPatchDumpManager;
218     /*@LOG DUMP macrocommand */
219     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
220     break;
221     case REBOOT :
222     status = MC_piGetMcmdAbilityExec(REBOOT);
223     if (status == SUCCESSFUL)
224     {
225     status = PRH_WriteEEPROMBootinfo(PRH_BOOTINFO_REBOOT);
226     if(status != CM_RC_SUCCESSFUL)
227     /*@LOG REBOOT: Write EEPROM Boot info error - status */
228     LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
229     PM_CPU_Reboot(TRUE);
230     /*@LOG REBOOT macrocommand */
231     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
232     }
233     dispatchMCMDflag =FALSE;
234     break;
235     case DIRECT :
236     status =MD_ifMcmdDirect(pMcmdExec);
237     dispatchMCMDflag =FALSE;
238     /*@LOG DIRECT macrocommand */
239     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
240     break;
241     case DEL_MCMD_QUEUE :/* MCMD object executor : TTManager */
242     status =MC_piGetMcmdAbilityExec(DEL_MCMD_QUEUE);
243     code =MT_DEL_MCMD_QUEUE;
244     pf =MT_piSndMsgTTManager;
245     /*@LOG DEL_MCMD_QUEUE macrocommand */
246     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
247     break;
248     case EXE_MEM_CONF : /* MCMD object executor : MMSUManager */
249     status =MC_piGetMcmdAbilityExec(EXE_MEM_CONF);
250     code =FT_MCMD_EXE_MEM_CONF;
251     pf =FT_piSndMsgMMSUManager;
252     /*@LOG EXE_MEM_CONF macrocommand */
253     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
254     break;
255     case ABORT :
256     status =MC_piGetMcmdAbilityExec(ABORT);
257     code =FT_ABORT;
258     pf =FT_piSndMsgMMSUManager;
259     /*@LOG ABORT macrocommand */
260     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
261     break;
262     case TIME_SYNCHRONISE :
263     status = MC_piGetMcmdAbilityExec(TIME_SYNCHRONISE);
264     if (status == SUCCESSFUL)
265     {
266     status =MD_ifMcmdTimeSynchronised(pMcmdExec);
267     }
268     dispatchMCMDflag =FALSE;
269     /*@LOG TIME_SYNCHRONISE macrocommand */
270     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
271     break;
272     case TEST : /* MCMD object executor : MMSUManager */
273     status =MC_piGetMcmdAbilityExec(TEST);
274     dispatchINFNMCMDflag =TRUE;
275     /*@LOG TEST macrocommand */
276     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
277     break;
278     case PURGE_TRD :
279     status =MC_piGetMcmdAbilityExec(PURGE_TRD);
280     dispatchINFNMCMDflag =TRUE;
281     /*@LOG PURGE TRD macrocommand */
282     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
283     break;
284     case GAS_CONTAINER_PURGE :
285     status =MC_piGetMcmdAbilityExec(GAS_CONTAINER_PURGE);
286     dispatchINFNMCMDflag =TRUE;
287     /*@LOG CONTAINER_PURGE macrocommand */
288     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
289     break;
290     case CALIBRATE :
291     status =MC_piGetMcmdAbilityExec(CALIBRATE);
292     dispatchINFNMCMDflag =TRUE;
293     /*@LOG CALIBRATE macrocommand */
294     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
295     break;
296    
297     #ifndef INFN
298     case SELECT_MODE :
299     status =MC_piGetMcmdAbilityExec(SELECT_MODE);
300     code =TS_GO_SELECT_MODE;
301     pf =TS_piSndMsgTest;
302     /*@LOG SELECT MODE macrocommand */
303     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
304     break;
305     #endif
306    
307     #ifdef INFN
308     case SELECT_MODE :
309     status =MC_piGetMcmdAbilityExec(SELECT_MODE);
310     dispatchINFNMCMDflag =TRUE;
311     /*@LOG SELECT MODE macrocommand */
312     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
313     break;
314     #endif
315    
316     case NEUTRON_DETECTOR :
317     status =MC_piGetMcmdAbilityExec(NEUTRON_DETECTOR);
318     dispatchINFNMCMDflag =TRUE;
319     /*@LOG NEUTRON_DETECTOR macrocommand */
320     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
321     break;
322     case ORBITAL_INFORMATION :
323     status =MC_piGetMcmdAbilityExec(ORBITAL_INFORMATION);
324     dispatchINFNMCMDflag =TRUE;
325     /*@LOG ORBITAL_INFORMATION macrocommand */
326     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
327     break;
328     case INCLINATION_INFORMATION :
329     status =MC_piGetMcmdAbilityExec(INCLINATION_INFORMATION);
330     dispatchINFNMCMDflag =TRUE;
331     /*@LOG INCLINATION_INFORMATION macrocommand */
332     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
333     break;
334     default :
335     /* MCMD not identified */
336     status =HA_E10_MCMD_ERR;
337     /*@LOG mcmd not identified */
338     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,pMcmdExec->Type);
339     break;
340     }
341    
342     /* Check pointer to MCMD area */
343     if (!pMcmdExec->PtrMCMD)
344     {
345     status =HA_E10_MCMD_ERR;
346     }
347    
348     /* Check if MCMD must be dispatched, his eligibility is OK, and */
349     /* is not INFN MCMD */
350     if (status==SUCCESSFUL && dispatchMCMDflag && !dispatchINFNMCMDflag)
351     {
352     /*==================== MCMD dispatched ======================*/
353     /* MCMD eligibility found */
354     /* Send message to the object executor */
355     sndMsgMCMD.Code =code;
356     *(MA_HEADER_MCMD* )sndMsgMCMD.Info =*pMcmdExec;
357     sndMsgMCMD.LlInfo =sizeof(MA_HEADER_MCMD);
358     status =(*pf)(&sndMsgMCMD);
359     if (status != SUCCESSFUL)
360     {
361    
362     /*=============== Log in History Area ===================*/
363     /*@LOG Mailbox full MCMD not dispatched (Internal error) LOG_INFN HA_piLogHistoryEntry2 (pMcmdExec->Type,HA_E2_INTERNAL_ERR); */
364     LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,HA_E2_INTERNAL_ERR);
365     }else{
366    
367     }
368     }
369     else if (status!=SUCCESSFUL)
370     {
371     /*================== MCMD not dispatched ====================*/
372     /* MCMD eligibility not found or Internal Error */
373     /*=================== Log in History Area ===================*/
374     if (status==HA_E10_MCMD_ERR)
375     {
376     /* */
377     /*@LOG MCMD not defined LOG_INFN HA_piLogHistoryEntry10(HA_E10_SW_MD,status,HA_E10_REP2_NULL); */
378     LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,HA_E10_REP2_NULL);
379    
380     /* Set Internal error */
381     status =HA_E2_INTERNAL_ERR;
382     }
383     else if (status==HA_E10_SEMAPHORE_ERR)
384     {
385     /* Error during eligibility test */
386     status =HA_E2_INTERNAL_ERR;
387     }
388    
389     /*@LOG LOG_INFN HA_piLogHistoryEntry2 (pMcmdExec->Type,status);*/
390     LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
391     }
392     else
393     {
394     /*=========== MCMD not dispatched or INFN MCMD =============*/
395    
396     if(dispatchINFNMCMDflag)
397     {
398     /*========================INFN MCMD =========================*/
399     /*===========================================================*/
400     /*************************************************************/
401     /*============================= INFN Interface ==============*/
402     // INFN must put here the call to its provided operation in order to
403     // make its own copy of the MCMD. When this funcion returns the MCMD is
404     // cosidered copied elsewhere and deleted from the MCMD partition.
405    
406     #ifdef INFN
407     MD_piSubmitMCMD_INFN(pMcmdExec);
408     #endif
409    
410     }
411     }
412    
413     if ((status!=SUCCESSFUL && pMcmdExec->PtrMCMD))
414     {
415     /* MCMD not dispatched */
416     /* delete MCMD from partition */
417     pMcmdInfo =(unsigned short* )pMcmdExec->PtrMCMD;
418     timetagFlag =(*(pMcmdInfo+1)&TIMETAG_MASK) ? TIMETAG_MCMD:IMMEDIATE_MCMD;
419     MA_piDelBufferMCMD(pMcmdExec->PtrMCMD,timetagFlag);
420     }
421     }
422    
423    
424    
425     /*****************************************************************************/
426     /* @Function: MD_ifMcmdDirect */
427     /* @Purpose : */
428     /* The function manages the MCMD DIRECT execution. */
429     /* It checks first the MCMD execution elegibility, than extracts the */
430     /* Telecommand parameter Id from the MCMD buffer, and executes the */
431     /* Telecommand by calling the specific provided interface of */
432     /* the ExternalEquipmentController object. */
433     /* A log is sent to the History area objet to notify the execution of the */
434     /* DIRECT MCMD. */
435     /* The MCMD buffer is released from the MCMDs partition. */
436     /* */
437     /* @@ */
438     /* @Parameter Name @Mode @Description */
439     /* PtrMcmd IN Pointer to MCMD header */
440     /* status_code OUT Return code (always SUCCESSFUL) */
441     /* @@ */
442     /*****************************************************************************/
443    
444     status_code MD_ifMcmdDirect(MA_HEADER_MCMD* PtrMcmd)
445     {
446     status_code status;
447     unsigned int paramId;
448     unsigned int value;
449     unsigned int timetagFlag;
450    
451     /* Check MCMD eligibility */
452     status =MC_piGetMcmdAbilityExec(DIRECT);
453    
454     if (status == SUCCESSFUL)
455     {
456     /* Get parameter code */
457     paramId =(unsigned int)*(((unsigned short*)PtrMcmd->PtrMCMD)+OFFSET_HEADER);
458     paramId &=TM_PARAM_ID_MASK;
459     value =(unsigned int)*(((unsigned short*)PtrMcmd->PtrMCMD)+OFFSET_HEADER+1);
460     timetagFlag =( *(((unsigned short*)PtrMcmd->PtrMCMD)+1)&TIMETAG_MASK ) ?
461     TIMETAG_MCMD : IMMEDIATE_MCMD;
462     /* Delete MCMD from partition */
463     MA_piDelBufferMCMD(PtrMcmd->PtrMCMD,timetagFlag);
464    
465     status =TM_piSendTC(paramId,value);
466     if (status != SUCCESSFUL)
467     {
468     status =HA_E2_TELECOMMAND_NOT_FOUND;
469     }
470     }
471    
472     // LOG_INFN HA_piLogHistoryEntry2 (PtrMcmd->Type,status);
473     // LOG_INFN HA_piLogHistoryEntry3 (paramId, value);
474    
475     /*@LOG MCMD Direct: paramID */
476     LU_INFN_LOG(LU_WARNING,LU_MASK(__FILEID__),__FILEID__,__LINE__,paramId);
477     /*@LOG MCMD Direct: value */
478     LU_INFN_LOG(LU_WARNING,LU_MASK(__FILEID__),__FILEID__,__LINE__,value);
479     /*@LOG MCMD Direct: status */
480     LU_INFN_LOG(LU_WARNING,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
481    
482    
483     /* The function returns always SUCCESSFUL because the error has */
484     /* been already managed */
485     return (SUCCESSFUL);
486     }
487    
488    
489    
490     /*****************************************************************************/
491     /* @Function: MD_ifMcmdTimeSynchronised */
492     /* @Purpose : */
493     /* The function manages the MCMD TIME_SYNCHRONISE execution. */
494     /* The OBT is updated by using the MCMD parameter.
495     /* A log is sent to the History area objet to notify the execution of the */
496     /* DIRECT MCMD. */
497     /* The MCMD buffer is released from the MCMDs partition. */
498     /* */
499     /* @@ */
500     /* @Parameter Name @Mode @Description */
501     /* PtrMcmd IN Pointer to MCMD header */
502     /* status_code OUT Return code (always SUCCESSFUL) */
503     /* @@ */
504     /*****************************************************************************/
505    
506     status_code MD_ifMcmdTimeSynchronised(MA_HEADER_MCMD* PtrMcmd)
507     {
508     status_code status;
509     unsigned int paramId;
510     unsigned int timetagFlag;
511    
512     /* Check MCMD eligibility */
513     status =MC_piGetMcmdAbilityExec(TIME_SYNCHRONISE);
514    
515     if (status == SUCCESSFUL)
516     {
517     /* Get parameter code */
518     paramId =(unsigned int)*(((unsigned short*)PtrMcmd->PtrMCMD)+OFFSET_HEADER);
519     paramId <<=16;
520     paramId |=(unsigned int)*(((unsigned short*)PtrMcmd->PtrMCMD)+OFFSET_HEADER+1);
521     timetagFlag =( *(((unsigned short*)PtrMcmd->PtrMCMD)+1)&TIMETAG_MASK ) ?
522     TIMETAG_MCMD : IMMEDIATE_MCMD;
523    
524     TI_piUpdateTimeInfo_s((TI_TIME)paramId);
525     // status=HB_StoreTimeSync((TI_TIME)paramId);
526     }
527     /* Delete MCMD from partition */
528     MA_piDelBufferMCMD(PtrMcmd->PtrMCMD,timetagFlag);
529    
530     /*@LOG Time Syncrhonisec LOG_INFN HA_piLogHistoryEntry2 (PtrMcmd->Type,status); */
531     LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);
532     /* The function returns always SUCCESSFUL because the error has */
533     /* been already managed */
534     return (SUCCESSFUL);
535     }

  ViewVC Help
Powered by ViewVC 1.1.23