1 |
/**************************************************************************** |
2 |
* F i l e D a t a |
3 |
* $Id: SMH_SelectModeHandler_INFN.c,v 1.44 2005/03/23 10:24:56 sebastiani Exp $ |
4 |
* $Revision: 1.44 $ |
5 |
* $Date: 2005/03/23 10:24:56 $ |
6 |
* $RCSfile: SMH_SelectModeHandler_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: SMH_SelectModeHandler_INFN.c,v $ |
17 |
* Revision 1.44 2005/03/23 10:24:56 sebastiani |
18 |
* SMH_GroundMode() completed implementation |
19 |
* |
20 |
* Revision 1.43 2005/03/20 18:26:44 sebastiani |
21 |
* *** empty log message *** |
22 |
* |
23 |
* Revision 1.42 2005/03/13 18:14:58 sebastiani |
24 |
* log comment fixed |
25 |
* |
26 |
* Revision 1.41 2005/03/06 14:54:46 sebastiani |
27 |
* version running on 06 03 2005 |
28 |
* |
29 |
* Revision 1.40 2005/02/22 18:09:25 sebastiani |
30 |
* various bugfixes |
31 |
* |
32 |
* Revision 1.39 2005/02/21 08:58:29 sebastiani |
33 |
* all log comments completed |
34 |
* |
35 |
* Revision 1.38 2005/02/19 10:19:39 sebastiani |
36 |
* ALM_S4_CALIB_00_HARD,ALM_S4_CALIB_00_SOFT,ALM_S4_128TRIGGER_0 added |
37 |
* |
38 |
* Revision 1.37 2004/12/02 10:43:38 sebastiani |
39 |
* fix AC |
40 |
* fix CAL |
41 |
* fix HK BUFTYPE |
42 |
* |
43 |
* Revision 1.36 2004/10/18 14:11:37 faber |
44 |
* *** empty log message *** |
45 |
* |
46 |
* Revision 1.35 2004/09/28 15:36:25 sebastiani |
47 |
* interrupt manager fix |
48 |
* |
49 |
* Revision 1.34 2004/09/22 09:55:23 sebastiani |
50 |
* Fix Cal error handler bug |
51 |
* fixed fecmd |
52 |
* fix Alarmlog |
53 |
* fix ND cmd to 3 |
54 |
* |
55 |
* Revision 1.33 2004/09/17 15:01:00 faber |
56 |
* LU_INFN_LOG flags fixing |
57 |
* |
58 |
* Revision 1.32 2004/09/09 14:52:55 sebastiani |
59 |
* using PreparePage to send cmd to idaq/FE |
60 |
* added some test |
61 |
* added trigger param |
62 |
* added/tested Force Send KHB_to_FE |
63 |
* added/tested Send Cmd to IDAQ/FE |
64 |
* |
65 |
* Revision 1.31 2004/08/26 16:54:34 sebastiani |
66 |
* version work fine |
67 |
* |
68 |
* Revision 1.30 2004/08/05 16:19:07 sebastiani |
69 |
* fix close run |
70 |
* add cal handler error |
71 |
* fix tmtc |
72 |
* ok protocol betwen pm-rm-scm |
73 |
* |
74 |
* Revision 1.29 2004/08/04 13:25:21 sebastiani |
75 |
* first fix allarm procedure |
76 |
* |
77 |
* Revision 1.28 2004/08/02 15:49:47 alfarano |
78 |
* alarm handling , scm & pm communication rewrite |
79 |
* |
80 |
* Revision 1.27 2004/08/02 09:28:29 faber |
81 |
* Stamp management into SMH_SetParam |
82 |
* TS_PamManger TM_RMTest moved respectively into PM and RM as PM_MCMDTest and |
83 |
* RM_MCMDTEst. TS_Test_INFN.c will be deleted soon. |
84 |
* |
85 |
* Revision 1.26 2004/06/01 16:41:19 sebastiani |
86 |
* EventReceive ANY |
87 |
* |
88 |
* Revision 1.25 2004/05/12 14:46:14 faber |
89 |
* *** empty log message *** |
90 |
* |
91 |
* Revision 1.24 2004/04/23 14:16:58 tassa |
92 |
* - change for donwloading procedures vrl handling |
93 |
* - fix little bug in error case in DoRun |
94 |
* - add ForceBreakPoint selectmode |
95 |
* |
96 |
* Revision 1.23 2004/03/11 14:53:05 faber |
97 |
* HK_SendFEComemand renamed HK_KHB_Cmd2FE |
98 |
* |
99 |
* Revision 1.22 2004/03/08 15:49:09 alfarano |
100 |
* improved handling functions for FE |
101 |
* |
102 |
* Revision 1.21 2004/03/03 11:25:59 tassa |
103 |
* send idaqmcmd tested |
104 |
* |
105 |
* Revision 1.20 2004/03/01 17:46:45 tassa |
106 |
* Non testato: |
107 |
* TMTC sample e STORE in SCM |
108 |
* send FECMD bloccante |
109 |
* aggiunto MCMD to send FECMD |
110 |
* |
111 |
* Revision 1.19 2004/02/26 11:27:30 faber |
112 |
* PARAMGEN for array/tab/direct idaq command introduced. first implementation. never tested |
113 |
* |
114 |
* Revision 1.18 2004/02/17 12:34:51 faber |
115 |
* USERDATA2BUF USERDATA2{ARR,TAB} introduced with CRC. |
116 |
* Never tested. |
117 |
* Some adjustment in Logging in SHM module |
118 |
* |
119 |
* Revision 1.17 2004/01/22 10:10:25 faber |
120 |
* *** empty log message *** |
121 |
* |
122 |
* Revision 1.16 2004/01/12 17:51:28 tassa |
123 |
* manca solo la parte di invio e ricezione sulla/dalla IDAQ |
124 |
* |
125 |
* Revision 1.15 2004/01/09 17:29:34 tassa |
126 |
* add the force command queue procedure |
127 |
* |
128 |
* Revision 1.14 2003/12/03 14:36:51 faber |
129 |
* more action definition about mcmd (setmode/purge_trd). |
130 |
* SSt word better defined |
131 |
* |
132 |
* Revision 1.13 2003/12/02 11:05:33 faber |
133 |
* first CCA info for IPMs |
134 |
* first technologica model's SELECT MODE management |
135 |
* |
136 |
* Revision 1.12 2003/12/01 15:44:09 faber |
137 |
* Donwlink duration field is a 16 bit word, not 32 (only HSB) |
138 |
* |
139 |
* Revision 1.11 2003/11/28 14:42:48 faber |
140 |
* *** empty log message *** |
141 |
* |
142 |
* Revision 1.10 2003/10/21 13:17:44 sebastiani |
143 |
* more sofisticated tests (via test_debug SOM) |
144 |
* |
145 |
* Revision 1.9 2003/10/17 09:55:08 sebastiani |
146 |
* SMH_TEST_DEBUG introduced as submode |
147 |
* |
148 |
* Revision 1.8 2003/09/22 09:59:35 faber |
149 |
* new select mode definitions |
150 |
* |
151 |
* Revision 1.7 2003/09/12 10:57:41 faber |
152 |
* development in proress (Working schedule module) |
153 |
* |
154 |
* Revision 1.6 2003/09/10 16:15:52 faber |
155 |
* PRH_EXTERN_VAR(XX_LOGMASK) removed (not needed any more) |
156 |
* |
157 |
* Revision 1.5 2003/09/10 11:55:07 faber |
158 |
* LU_MASK introduced. Log mask for module is now an unique array (PRH_ARR_LOG_MASK) indexed by __FILEID__ |
159 |
* |
160 |
* Revision 1.4 2003/09/10 10:32:37 faber |
161 |
* Large implementation of PamManager/RunManager Pam Sowfare. (compiled,never run) |
162 |
* |
163 |
* Revision 1.3 2003/08/22 07:57:09 sebastiani |
164 |
* *** empty log message *** |
165 |
* |
166 |
* Revision 1.2 2003/08/07 08:44:40 wizard |
167 |
* *** empty log message *** |
168 |
* |
169 |
* Revision 1.1.1.1 2003/08/04 09:40:22 sebastiani |
170 |
* Imported sources laben rel. 19.06.2003 integrated with pam2 |
171 |
* |
172 |
* Revision 1.7 2003/07/18 13:35:10 sebastiani |
173 |
* PRH_ParamHandler_INFN_int.c sobstitues PRH_ParamHandler_INFN_*.* |
174 |
* introduced DAQTEST directive |
175 |
* |
176 |
* Revision 1.6 2003/07/17 11:15:52 sebastiani |
177 |
* idaq manager |
178 |
* new print for logging in minicom |
179 |
* |
180 |
* Revision 1.5 2003/07/03 12:39:29 sebastiani |
181 |
* *** empty log message *** |
182 |
* |
183 |
* Revision 1.4 2003/06/20 13:42:29 sebastiani |
184 |
* Pam/Run manager first prototype release |
185 |
* |
186 |
* Revision 1.3 2003/06/18 16:53:20 sebastiani |
187 |
* Pam/Run Manager development update. ExpSeq sequence is receiven from the RunManager (simulator mode) |
188 |
* |
189 |
* Revision 1.2 2003/06/12 15:32:31 sebastiani |
190 |
* first chenge mode code. FAMILY/TYPE support for the mode (4MSB/4LSB) |
191 |
* |
192 |
* Revision 1.1 2003/06/09 16:41:12 sebastiani |
193 |
* First selectmode MCMD handler scheleton. |
194 |
* |
195 |
* Revision 1.1 2003/06/05 10:31:12 wizard |
196 |
* added PamMnager (empty skeleton),and other main dirs on INFN |
197 |
* |
198 |
* |
199 |
*****************************************************************************/ |
200 |
|
201 |
|
202 |
/*============================= Include File ================================*/ |
203 |
|
204 |
#include <src/INFN/LU_SourceFileID_INFN.h> |
205 |
#define __FILEID__ _SMH_SelectModeHandler_INFN__c |
206 |
#include <src/INFN/PRH_ParamHandler_INFN.h> |
207 |
#include <src/INFN/LU_LogUtility_INFN.h> |
208 |
#include <src/INFN/PRH_ParamHandler_INFN_auto.h> |
209 |
LU_DECL_MASK(); |
210 |
|
211 |
|
212 |
#include <src/INFN/SMH_SelectModeHandler_INFN.h> |
213 |
#include <src/INFN/MH_ModeHandler_INFN.h> |
214 |
#include <src/INFN/PM_PamManager_INFN.h> |
215 |
#include <src/INFN/RM_RunManager_INFN.h> |
216 |
#include <src/BasicSW/RTEMSInterface/OS_rtems_p.h> |
217 |
#include <src/INFN/HK_Manager_INFN.h> |
218 |
#include <src/ModeManager/ModeCoordinator/MC_ModeCoordinator_p.h> |
219 |
|
220 |
#ifdef TEST_I |
221 |
//#include <src/INFN/TS_Test_INFN.h> |
222 |
#endif |
223 |
|
224 |
/*============================ Global define ================================*/ |
225 |
|
226 |
|
227 |
#define SMH_EXP_SEQ_OFFSET (OFFSET_HEADER+2) |
228 |
|
229 |
/*============================== global types ==============================*/ |
230 |
|
231 |
|
232 |
/*****************************************************************************/ |
233 |
/*=========================== Structure define ==============================*/ |
234 |
|
235 |
|
236 |
/*****************************************************************************/ |
237 |
/*============================ Enumerate define =============================*/ |
238 |
|
239 |
|
240 |
/*****************************************************************************/ |
241 |
|
242 |
|
243 |
status_code SMH_Init() { |
244 |
return SUCCESSFUL; |
245 |
} |
246 |
|
247 |
status_code SMH_Send_IDAQCMD(MA_HEADER_MCMD *headerMcmd) { |
248 |
status_code s; |
249 |
BYTE buf_no,tmp; |
250 |
HB_BUF bufid; |
251 |
UINT16 crc; |
252 |
volatile BYTE *CurPtr; |
253 |
if(headerMcmd->Length != SMH_SELECTMODEBODY_OFFSET + 3) |
254 |
return CM_RC_BAD_MCMD_LEN; |
255 |
CurPtr = (BYTE*)SMH_GETPTR_SELECTMODEBODY(headerMcmd->PtrMCMD); |
256 |
|
257 |
CM_READ_BE_UINT8(CurPtr,buf_no); |
258 |
CM_READ_BE_UINT16(CurPtr,crc,tmp); |
259 |
/*@LOG Send IDAQ Command - buf_no */ |
260 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
261 |
/*@LOG Send IDAQ Command - crc */ |
262 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,crc); |
263 |
if(buf_no >= HB_USERDATA_NO) |
264 |
return CM_RC_INVALID_BUFFER_ID; |
265 |
bufid=(HB_BUF)(buf_no+HB_USERDATA0); |
266 |
s=RM_Set_ForceIdaqCmd(bufid,crc); |
267 |
if(s==CM_RC_SUCCESSFUL) |
268 |
MH_SetGOM(MH_GOM_FORCE_IDAQCMD); |
269 |
return s; |
270 |
} |
271 |
|
272 |
status_code SMH_Send_FECMD(MA_HEADER_MCMD *headerMcmd) { |
273 |
status_code s; |
274 |
BYTE buf_no,eto,ato,tmp,fe; |
275 |
HB_BUF bufid; |
276 |
UINT16 crc; |
277 |
volatile BYTE *CurPtr; |
278 |
if(headerMcmd->Length != SMH_SELECTMODEBODY_OFFSET + 4) |
279 |
return CM_RC_BAD_MCMD_LEN; |
280 |
CurPtr = (BYTE*)SMH_GETPTR_SELECTMODEBODY(headerMcmd->PtrMCMD); |
281 |
|
282 |
CM_READ_BE_UINT8(CurPtr,buf_no); |
283 |
CM_READ_BE_UINT16(CurPtr,crc,tmp); |
284 |
CM_READ_BE_UINT8(CurPtr,fe); |
285 |
CM_READ_BE_UINT8(CurPtr,eto); |
286 |
CM_READ_BE_UINT8(CurPtr,ato); |
287 |
|
288 |
/*@LOG Send_FECMD: buf_no */ |
289 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
290 |
/*@LOG Send_FECMD: crc */ |
291 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,crc); |
292 |
/*@LOG Send_FECMD: fe */ |
293 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,fe); |
294 |
/*@LOG Send_FECMD: eto */ |
295 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,eto); |
296 |
/*@LOG Send_FECMD: ato */ |
297 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,ato); |
298 |
|
299 |
if(buf_no >= HB_USERDATA_NO) |
300 |
return CM_RC_INVALID_BUFFER_ID; |
301 |
bufid=(HB_BUF)(buf_no+HB_USERDATA0); |
302 |
s=RM_Set_ForceFeCmd(bufid,crc,eto,ato,(DAQ_FE)fe); |
303 |
if(s==CM_RC_SUCCESSFUL) |
304 |
MH_SetGOM(MH_GOM_FORCE_IDAQCMD); |
305 |
return s; |
306 |
} |
307 |
|
308 |
|
309 |
status_code SMH_Send_TC(MA_HEADER_MCMD *headerMcmd) { |
310 |
status_code s; |
311 |
BYTE tmp; |
312 |
HB_BUF bufid; |
313 |
UINT16 tc; |
314 |
volatile BYTE *CurPtr; |
315 |
if(headerMcmd->Length != SMH_SELECTMODEBODY_OFFSET + 2 /* words */ + 1 /* crc */ ) |
316 |
return CM_RC_BAD_MCMD_LEN; |
317 |
CurPtr = (BYTE*)SMH_GETPTR_SELECTMODEBODY(headerMcmd->PtrMCMD); |
318 |
|
319 |
CM_READ_BE_UINT16(CurPtr,tc,tmp); |
320 |
/*@LOG Send_TC: tc */ |
321 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,tc); |
322 |
|
323 |
if(tc>=TM_MAX_TELECOMMAND) |
324 |
/*@LOG Error TC id: out of range */ |
325 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,tc); |
326 |
|
327 |
s=HK_SendTC(tc,TM_HL_DUMMYVALUE); |
328 |
if(s!=CM_RC_SUCCESSFUL) { |
329 |
/*@LOG Error sending TC - status */ |
330 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
331 |
|
332 |
} |
333 |
return s; |
334 |
} |
335 |
|
336 |
|
337 |
/* |
338 |
SMH_Send_KHBFECMD |
339 |
*/ |
340 |
|
341 |
status_code SMH_Send_KHBFECMD(MA_HEADER_MCMD *headerMcmd) { |
342 |
BYTE link; |
343 |
BYTE comlen; |
344 |
BYTE expected; |
345 |
UINT16 combuf[16]; |
346 |
UINT16 outbuf[16]; |
347 |
UINT32 timeout; |
348 |
UINT16 value; |
349 |
BYTE *CurPtr; |
350 |
BYTE tmp; |
351 |
status_code status; |
352 |
UINT32 i; |
353 |
|
354 |
CurPtr = (BYTE*)SMH_GETPTR_SELECTMODEBODY(headerMcmd->PtrMCMD); |
355 |
|
356 |
CM_READ_BE_UINT16(CurPtr,link,tmp); |
357 |
CM_READ_BE_UINT16(CurPtr,expected,tmp); |
358 |
CM_READ_BE_UINT16(CurPtr,timeout,tmp); |
359 |
CM_READ_BE_UINT16(CurPtr,comlen,tmp); |
360 |
|
361 |
for(i=0;i<comlen;i++){ |
362 |
CM_READ_BE_UINT16(CurPtr,value,tmp); |
363 |
combuf[i]=value; |
364 |
} |
365 |
status = HK_KHB_Cmd2FE(link,comlen,expected,combuf,outbuf,timeout); |
366 |
// aggiungere eventuale scrittura in MM o altri risorse di log... |
367 |
if(status == CM_RC_SUCCESSFUL) { |
368 |
/*@LOG Send_KHBFECMD: expected */ |
369 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,expected); |
370 |
for(i=0;i<expected;i++){ |
371 |
/*@LOG Send_KHBFECMD: outbuf[i] */ |
372 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,outbuf[i]); |
373 |
} |
374 |
} |
375 |
return (status); |
376 |
} |
377 |
|
378 |
|
379 |
status_code SMH_GroundMode(BOOL calibrate) { |
380 |
status_code status; |
381 |
PRH_VAR_PULSER_ACTION=2; |
382 |
PRH_VAR_TRIGGER_MODE_A=11; |
383 |
PRH_VAR_TRIGGER_MODE_B=11; |
384 |
PRH_VAR_AUTO_RM_MODE=1; |
385 |
PRH_VAR_AUTO_SCM_MODE=1; |
386 |
if(calibrate) |
387 |
PM_ActionForTheAscendingNode(); |
388 |
status=PWR_SendTC(TM_PULSER_025); |
389 |
/*@LOG SMH_GroundMode: Set Pulser 0.25 - status */ |
390 |
LU_INFN_LOG (LU_CRITICAL|LU_HA, LU_MASK(__FILEID__), __FILEID__, __LINE__,status); |
391 |
PM_SendCommand(PM_FORCE_RUNNING); |
392 |
} |
393 |
|
394 |
status_code SMH_MCMDSelectMode(MA_HEADER_MCMD* headerMcmd) { |
395 |
status_code status=SUCCESSFUL; |
396 |
unsigned int code; |
397 |
unsigned short *test,test_code,test_value1,test_value2,test_value3,test_value4; |
398 |
unsigned short* pMcmdInfo; |
399 |
unsigned int mode; |
400 |
unsigned int fam,type; |
401 |
MsgTsk SndMsg; |
402 |
mode = SMH_GetMCMDMode(headerMcmd); |
403 |
|
404 |
switch(fam=SMH_INFN_SELECTMODE_GET_FAMILY(mode)){ |
405 |
case SMH_FAMILY_SUBMODE: |
406 |
status=MH_SetModeFromMCMD(mode,headerMcmd); |
407 |
if(status != CM_RC_SUCCESSFUL) |
408 |
/*@LOG SMH_FAMILY_SUBMODE error - status */ |
409 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
410 |
break; |
411 |
case SMH_FAMILY_SETPARAM: |
412 |
status=PRH_SetParam(mode,headerMcmd); |
413 |
if(status != CM_RC_SUCCESSFUL) |
414 |
/*@LOG SMH_FAMILY_SETPARAM error - status */ |
415 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
416 |
break; |
417 |
case SMH_FAMILY_IDAQCMD: |
418 |
switch(type=SMH_INFN_SELECTMODE_GET_TYPE(mode)) { |
419 |
case SMH_IDAQCMD_FROM_USERDATA: |
420 |
status=SMH_Send_IDAQCMD(headerMcmd); |
421 |
if(status != CM_RC_SUCCESSFUL) |
422 |
/*@LOG SMH_IDAQCMD_FROM_USERDATA error - status */ |
423 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
424 |
break; |
425 |
case SMH_FECMD_FROM_USERDATA: |
426 |
status=SMH_Send_FECMD(headerMcmd); |
427 |
if(status != CM_RC_SUCCESSFUL) |
428 |
/*@LOG SMH_FECMD_FROM_USERDATA: error - status */ |
429 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
430 |
break; |
431 |
default: |
432 |
/*@LOG unrecognized submode of FAMILY_IDAQMCD in select mode mcmd: - type */ |
433 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
434 |
break; |
435 |
} |
436 |
break; |
437 |
case SMH_FAMILY_KHBFECMD: |
438 |
status=SMH_Send_KHBFECMD(headerMcmd); |
439 |
if(status != CM_RC_SUCCESSFUL) |
440 |
/*@LOG SMH_FAMILY_KHBFECMD: - status */ |
441 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
442 |
break; |
443 |
case SMH_FAMILY_SENDTC: |
444 |
switch(type=SMH_INFN_SELECTMODE_GET_TYPE(mode)) { |
445 |
case SMH_SEND_TC: |
446 |
status=SMH_Send_TC(headerMcmd); |
447 |
if(status != CM_RC_SUCCESSFUL) |
448 |
/*@LOG SMH_SEND_TC error - status */ |
449 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
450 |
break; |
451 |
default: |
452 |
/*@LOG unrecognized submode of FAMILY_SENDTC in select mode mcmd: - type */ |
453 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
454 |
break; |
455 |
} |
456 |
|
457 |
break; |
458 |
case SMH_FAMILY_START: |
459 |
switch(type=SMH_INFN_SELECTMODE_GET_TYPE(mode)) { |
460 |
case SMH_START_NORMAL_MODE: |
461 |
// PM_SetGom(PM_CPU_START_UP,SCM_NO_ACTION); |
462 |
OS_piCancelTimer_INFN(PM_FORCERUNNING_TIM); |
463 |
PM_SendCommand(PM_FORCE_RUNNING); |
464 |
break; |
465 |
case SMH_START_CPU_START_UP : |
466 |
PM_SetGom(PM_CPU_START_UP,SCM_POWER_ON); |
467 |
/*@LOG SMH_START_CPU_START_UP received - type */ |
468 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
469 |
break; |
470 |
default: |
471 |
LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
472 |
break; |
473 |
} |
474 |
break; |
475 |
case SMH_FAMILY_SHUTDOWN: |
476 |
switch(type=SMH_INFN_SELECTMODE_GET_TYPE(mode)) { |
477 |
case SMH_SHUTDOWN_PREPARE: |
478 |
/* TBD: */ |
479 |
status=SMH_PrepareShutDown(); |
480 |
/*@LOG SMH_SHUTDOWN_PREPARE : - status */ |
481 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
482 |
break; |
483 |
case SMH_SHUTDOWN_DO: |
484 |
status=SMH_DoShutDown(); |
485 |
/*@LOG SMH_SHUTDOWN_DO : - status */ |
486 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
487 |
break; |
488 |
default: |
489 |
LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
490 |
break; |
491 |
} |
492 |
break; |
493 |
case SMH_FAMILY_TEST: |
494 |
switch(type=SMH_INFN_SELECTMODE_GET_TYPE(mode)) { |
495 |
case SMH_TEST_LOGSTATUS: |
496 |
PM_LogStatus(); |
497 |
break; |
498 |
case SMH_TEST_BREAKPOINT: |
499 |
#ifdef TEST_I |
500 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
501 |
PM_FORCE_BREAKPOINT(); |
502 |
#endif |
503 |
break; |
504 |
case SMH_TEST_COMPLEX_HARDWARE: |
505 |
|
506 |
break; |
507 |
case SMH_TEST_DEBUG: |
508 |
#ifdef DEBUG |
509 |
test = SMH_GETPTR_BODYAREA(headerMcmd->PtrMCMD); |
510 |
test += 2; |
511 |
test_code = *test; |
512 |
test++; |
513 |
test_value1 = *test; |
514 |
test++; |
515 |
test_value2 = *test; |
516 |
test++; |
517 |
test_value3 = *test; |
518 |
test++; |
519 |
test_value4 = *test; |
520 |
PM_MCMDTest(test_code,test_value1,test_value2,test_value3,test_value4); |
521 |
#endif // DEBUG |
522 |
break; |
523 |
default: |
524 |
LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
525 |
break; |
526 |
} |
527 |
break; |
528 |
|
529 |
#define SMH_AUTO_MODE(v) (PRH_VAR_AUTO_RM_MODE=(v3); PRH_VAR_AUTO_SCM_MODE=(v)) |
530 |
|
531 |
case SMH_FAMILY_TECHNOLOGICAL: |
532 |
OS_piCancelTimer_INFN(PM_FORCERUNNING_TIM); |
533 |
switch(type=SMH_INFN_SELECTMODE_GET_TYPE(mode)) { |
534 |
case SMH_TM_START_NO_TRD_PURGE: |
535 |
/* force POWER_ON to return Stop&Wait */ |
536 |
PRH_VAR_PWR_VOLTAGE_N_ATTEMPT=0; |
537 |
break; |
538 |
case SMH_TM_START_TRD_PRUGE: |
539 |
|
540 |
break; |
541 |
case SMH_TM_PREPARE_P_AND_D: |
542 |
|
543 |
break; |
544 |
case SMH_TM_NOMINAL_ACQ: |
545 |
case SMH_TM_SPARE_ELECTRONIC: |
546 |
SMH_GroundMode(TRUE); |
547 |
break; |
548 |
case SMH_TM_PREPARE_CALIBRATE: |
549 |
SMH_GroundMode(FALSE); |
550 |
break; |
551 |
case SMH_TM_NOMINAL_ACQ_AFTER_DOWNLINK: |
552 |
case SMH_TM_NOMINAL_ACQ_AFTER_EXE_MEM_CONF: |
553 |
case SMH_TM_NOMINAL_ACQ_AFTER_CALIBRATE: |
554 |
break; |
555 |
case SMH_TM_NOMINAL_ACQ_AFTER_BITE: |
556 |
case SMH_TM_IMITATING_MODE_PAM_MEM_1: |
557 |
case SMH_TM_IMITATING_MODE_PAM_MEM_2: |
558 |
break; |
559 |
case SMH_TM_PREPARE_BITE: |
560 |
case SMH_TM_PRE_BITE: |
561 |
case SMH_TM_PREPARE_BITE_JOIN_OPS: |
562 |
case SMH_TM_PREPARE_MEM_CONF: |
563 |
break; |
564 |
default: |
565 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
566 |
break; |
567 |
} |
568 |
break; |
569 |
default: |
570 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,fam); |
571 |
break; |
572 |
} |
573 |
|
574 |
PM_RemoveMCMDInPartition(headerMcmd->PtrMCMD); |
575 |
return (status); |
576 |
} |
577 |
|
578 |
//BYTE SMH_GetMCMDMode(MA_HEADER_MCMD* headerMcmd){ |
579 |
BYTE SMH_GetMCMDMode(MA_HEADER_MCMD* headerMcmd){ |
580 |
BYTE b; |
581 |
b = (BYTE)*(((unsigned short*)headerMcmd->PtrMCMD)+OFFSET_HEADER); |
582 |
return b; |
583 |
} |
584 |
|
585 |
status_code SMH_PrepareShutDown() { |
586 |
status_code s; |
587 |
|
588 |
s = PRH_var_write2eeprom(PRH_EEPROM_CURRENT,PRH_VAR_DOWNLOAD_HEADER_IDX); |
589 |
if (s) |
590 |
/*@LOG Error updating DOWNLOAD_HEADER at end of download - status */ |
591 |
LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
592 |
|
593 |
s=MH_SetGOM(MH_GOM_MAINTENANCE); |
594 |
return s; |
595 |
/* TBD: write params 2 eeprom */ |
596 |
} |
597 |
|
598 |
status_code SMH_DoShutDown() { |
599 |
status_code s; |
600 |
|
601 |
|
602 |
s=PRH_WriteEEPROMBootinfo(PRH_BOOTINFO_SHUTDOWN); |
603 |
if(s!=CM_RC_SUCCESSFUL) |
604 |
/*@LOG Do Shutdown : error writing EEPROM info - status */ |
605 |
LU_INFN_LOG(LU_FATAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
606 |
|
607 |
PM_SetGom(PM_STOP_AND_WAIT,SCM_POWEROFFSHUTDOWN); |
608 |
} |