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

Contents 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 - (show 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 /****************************************************************************
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