1 |
/**************************************************************************** |
2 |
* F i l e D a t a |
3 |
* $Id: PRH_ParamHandler_INFN.c,v 1.34 2005/03/20 18:23:41 sebastiani Exp $ |
4 |
* $Revision: 1.34 $ |
5 |
* $Date: 2005/03/20 18:23:41 $ |
6 |
* $RCSfile: PRH_ParamHandler_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: PRH_ParamHandler_INFN.c,v $ |
17 |
* Revision 1.34 2005/03/20 18:23:41 sebastiani |
18 |
* WS_2_ReadWS2Tables introeduced in PRH_Init |
19 |
* |
20 |
* Revision 1.33 2005/03/06 14:54:46 sebastiani |
21 |
* version running on 06 03 2005 |
22 |
* |
23 |
* Revision 1.32 2005/02/21 08:58:29 sebastiani |
24 |
* all log comments completed |
25 |
* |
26 |
* Revision 1.31 2005/02/19 10:19:38 sebastiani |
27 |
* ALM_S4_CALIB_00_HARD,ALM_S4_CALIB_00_SOFT,ALM_S4_128TRIGGER_0 added |
28 |
* |
29 |
* Revision 1.30 2005/01/26 18:46:48 sebastiani |
30 |
* new bug fixes for WS |
31 |
* |
32 |
* Revision 1.29 2004/09/28 15:36:25 sebastiani |
33 |
* interrupt manager fix |
34 |
* |
35 |
* Revision 1.28 2004/09/17 15:01:00 faber |
36 |
* LU_INFN_LOG flags fixing |
37 |
* |
38 |
* Revision 1.27 2004/09/14 15:07:08 faber |
39 |
* New development for TimeSync, managed by interrupt. coding completed but never tested. |
40 |
* |
41 |
* Revision 1.26 2004/08/02 09:28:29 faber |
42 |
* Stamp management into SMH_SetParam |
43 |
* TS_PamManger TM_RMTest moved respectively into PM and RM as PM_MCMDTest and |
44 |
* RM_MCMDTEst. TS_Test_INFN.c will be deleted soon. |
45 |
* |
46 |
* Revision 1.25 2004/07/20 08:58:00 faber |
47 |
* simulator mode for EEPROM procedures |
48 |
* |
49 |
* Revision 1.24 2004/07/12 09:51:49 faber |
50 |
* external_data dir added with all commands inside. tgz creation rules remove. |
51 |
* AUTO mode introduced: |
52 |
* |
53 |
* Revision 1.23 2004/07/02 15:36:50 faber |
54 |
* *** empty log message *** |
55 |
* |
56 |
* Revision 1.22 2004/06/30 07:26:52 sebastiani |
57 |
* TOF fixing,WS fixing |
58 |
* |
59 |
* Revision 1.21 2004/06/22 09:34:52 faber |
60 |
* *** empty log message *** |
61 |
* |
62 |
* Revision 1.20 2004/06/16 09:35:13 faber |
63 |
* *** empty log message *** |
64 |
* |
65 |
* Revision 1.19 2004/06/15 08:20:11 sebastiani |
66 |
* gen_params.pl |
67 |
* |
68 |
* Revision 1.18 2004/06/09 11:23:22 alfarano |
69 |
* EEPROM Formatting/Checking/Reading/writing functions. not tested |
70 |
* |
71 |
* Revision 1.17 2004/06/08 14:02:43 alfarano |
72 |
* eeprom functions |
73 |
* |
74 |
* Revision 1.16 2004/06/03 08:19:23 faber |
75 |
* compilation check about PARAM_ID == 0 |
76 |
* |
77 |
* Revision 1.15 2004/05/28 10:26:11 alfarano |
78 |
* PARAM_ID introduced in order to check if param.pl has changed. Safe eeprom read assured. |
79 |
* |
80 |
* Revision 1.14 2004/05/13 10:47:17 faber |
81 |
* hid the HB_Store funcion in favour of wrapped funcions |
82 |
* |
83 |
* Revision 1.13 2004/05/12 14:46:14 faber |
84 |
* *** empty log message *** |
85 |
* |
86 |
* Revision 1.12 2004/03/03 11:25:59 tassa |
87 |
* send idaqmcmd tested |
88 |
* |
89 |
* Revision 1.11 2004/02/26 11:27:30 faber |
90 |
* PARAMGEN for array/tab/direct idaq command introduced. first implementation. never tested |
91 |
* |
92 |
* Revision 1.10 2004/02/17 12:34:51 faber |
93 |
* USERDATA2BUF USERDATA2{ARR,TAB} introduced with CRC. |
94 |
* Never tested. |
95 |
* Some adjustment in Logging in SHM module |
96 |
* |
97 |
* Revision 1.9 2004/02/10 16:48:28 faber |
98 |
* *** empty log message *** |
99 |
* |
100 |
* Revision 1.8 2004/01/22 10:10:25 faber |
101 |
* *** empty log message *** |
102 |
* |
103 |
* Revision 1.7 2003/10/17 10:09:27 sebastiani |
104 |
* PRH_ENABLE_EEPROM_SAVE introduced, scan of the select mode bugfix |
105 |
* |
106 |
* Revision 1.6 2003/09/24 14:20:28 carota |
107 |
* fix: SMH_GETPTR_BODYAREA call |
108 |
* |
109 |
* Revision 1.5 2003/09/24 14:08:46 faber |
110 |
* fix: CurPtr+=2 after SHM_GETPTR_BODYAREA in PRH_SetParam |
111 |
* |
112 |
* Revision 1.4 2003/09/22 09:59:35 faber |
113 |
* new select mode definitions |
114 |
* |
115 |
* Revision 1.3 2003/09/19 15:57:35 faber |
116 |
* Large development update INFN software |
117 |
* |
118 |
* Revision 1.2 2003/09/12 10:57:41 faber |
119 |
* development in proress (Working schedule module) |
120 |
* |
121 |
* Revision 1.1.1.1 2003/08/04 09:40:22 sebastiani |
122 |
* Imported sources laben rel. 19.06.2003 integrated with pam2 |
123 |
* |
124 |
* Revision 1.1 2003/07/18 13:35:10 sebastiani |
125 |
* PRH_ParamHandler_INFN_int.c sobstitues PRH_ParamHandler_INFN_*.* |
126 |
* introduced DAQTEST directive |
127 |
* |
128 |
* |
129 |
*****************************************************************************/ |
130 |
|
131 |
|
132 |
/*============================= Include File ================================*/ |
133 |
|
134 |
#include <src/INFN/LU_SourceFileID_INFN.h> |
135 |
#define __FILEID__ _PRH_ParamHandler_INFN__c |
136 |
#include <src/INFN/LU_LogUtility_INFN.h> |
137 |
#include <src/INFN/PRH_ParamHandler_INFN_auto.h> |
138 |
LU_DECL_MASK(); |
139 |
|
140 |
|
141 |
#include <src/MCMDManager/MCMDArea/MA_MCMDArea_p.h> |
142 |
#include <src/BasicSW/RTEMSInterface/OS_rtems_p.h> |
143 |
|
144 |
#include <src/INFN/SMH_SelectModeHandler_INFN.h> |
145 |
|
146 |
#include <src/INFN/PRH_ParamHandler_INFN.h> |
147 |
#include <src/INFN/PRH_ParamHandler_INFN_auto.h> |
148 |
#include <src/INFN/PRH_ParamHandler_INFN_autopri.h> |
149 |
#include <src/INFN/MH_ModeHandler_INFN.h> |
150 |
#include <src/INFN/PM_PamManager_INFN.h> |
151 |
#include <src/INFN/HB_HKBuffer_INFN.h> |
152 |
#include <src/INFN/PRH_Stamp.h> |
153 |
#include <src/BasicSW/PatchDumpManager/PD_PatchDumpManager_int.h> |
154 |
#include <src/INFN/WS_WorkingSchedule_INFN.h> |
155 |
|
156 |
#define PRH_IS_STAMP_OK (PRH_CurrentStamp == PRH_STAMP) |
157 |
static UINT32 PRH_CurrentStamp; |
158 |
|
159 |
/*============================ Global define ================================*/ |
160 |
|
161 |
|
162 |
|
163 |
/*============================== global types ==============================*/ |
164 |
|
165 |
|
166 |
|
167 |
/*****************************************************************************/ |
168 |
/*=========================== Structure define ==============================*/ |
169 |
|
170 |
|
171 |
/*****************************************************************************/ |
172 |
/*============================ Enumerate define =============================*/ |
173 |
|
174 |
/*****************************************************************************/ |
175 |
|
176 |
/*****************************************************************************/ |
177 |
|
178 |
/*=== Param Handler I N T E R N A L ==*/ |
179 |
|
180 |
// special check for the Array param size of LOG_MASK |
181 |
|
182 |
#if PRH_ARR_N_LOG_MASK < LU_FILEID_N |
183 |
#error "PRH_ARR_N_LOG_MASK > LU_FILEID_N !!! - check the size of LOG_MASK in param.pl" |
184 |
#endif |
185 |
|
186 |
|
187 |
/*****************************************************************************/ |
188 |
|
189 |
|
190 |
status_code PRH_Init() { |
191 |
status_code status=SUCCESSFUL; |
192 |
#ifndef SIMULATOR |
193 |
PRH_CurrentStamp = *(UINT32*)PRH_EEPROM_STAMP; |
194 |
#endif SIMULATOR |
195 |
PRH_int_init_internal_structure(); |
196 |
#ifndef PRH_DEFAULT_MODE |
197 |
status = PRH_ReadCurrentParam(); |
198 |
if(status != CM_RC_SUCCESSFUL){ |
199 |
/*@LOG PRH_Init: error reading CurrentParam */ |
200 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
201 |
status = PRH_ReadDefaultParam(); |
202 |
if(status != CM_RC_SUCCESSFUL){ |
203 |
/*@LOG PRH_Init: error reading DefaultParam */ |
204 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
205 |
} |
206 |
|
207 |
} |
208 |
#endif |
209 |
|
210 |
status=WS_2_ReadWS2Tables(); |
211 |
if(status != CM_RC_SUCCESSFUL){ |
212 |
/*@LOG PRH_Init: error reading WS2 Tables */ |
213 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status); |
214 |
WS_ZeroTableWS2(); |
215 |
} |
216 |
|
217 |
return status; |
218 |
} |
219 |
|
220 |
status_code PRH_WriteAll2EEPROM(PRH_EEPROM_REGION region) { |
221 |
unsigned int i; |
222 |
BOOL old; |
223 |
status_code s=CM_RC_SUCCESSFUL; |
224 |
#ifndef SIMULATOR |
225 |
/* TBD: some check for wrong writing here */ |
226 |
if (!PRH_IS_STAMP_OK) |
227 |
{ |
228 |
/*@LOG WriteAll2EEPROM: Stamp is not ok */ |
229 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0); |
230 |
return(CM_RC_BAD_EEPROM); |
231 |
} |
232 |
|
233 |
/* disable automatic log to avoid looging of params not stored in eeprom */ |
234 |
old = PRH_int_get_automatic_log(); |
235 |
|
236 |
PRH_int_set_automatic_log(FALSE); |
237 |
/* write variables into eeprom: */ |
238 |
s = CM_RC_SUCCESSFUL; |
239 |
for(i=0;i<PRH_VAR_MAX && s == CM_RC_SUCCESSFUL; i++) |
240 |
{ |
241 |
s= PRH_int_var_write2eeprom(region,i); |
242 |
if(s==CM_RC_VAR_NOT_IN_EEPROM) |
243 |
s=CM_RC_SUCCESSFUL; |
244 |
} |
245 |
/*@LOG var eeprom write result - status*/ |
246 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
247 |
/* write arrays into eeprom: */ |
248 |
for(i=0;i<PRH_ARR_MAX && s == CM_RC_SUCCESSFUL;i++) |
249 |
{ |
250 |
s=PRH_int_arr_write2eeprom(region,i); |
251 |
if(s==CM_RC_ARR_NOT_IN_EEPROM) |
252 |
s=CM_RC_SUCCESSFUL; |
253 |
} |
254 |
/*@LOG arr eeprom write result - status*/ |
255 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
256 |
/* wrtie tables into eeprom: */ |
257 |
for(i=0;i<PRH_TAB_MAX && s == CM_RC_SUCCESSFUL;i++) |
258 |
{ |
259 |
s=PRH_int_tab_write2eeprom(region,i); |
260 |
if(s==CM_RC_TAB_NOT_IN_EEPROM) |
261 |
s=CM_RC_SUCCESSFUL; |
262 |
} |
263 |
/*@LOG tab eeprom write result - status*/ |
264 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
265 |
/* set the old log mode for the PRH module: */ |
266 |
PRH_int_set_automatic_log(old); |
267 |
if(s) |
268 |
/*@LOG eeprom write error - status*/ |
269 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
270 |
#endif // SIMULATOR |
271 |
return s; |
272 |
} |
273 |
|
274 |
status_code PRH_WriteEEPROMStamp(UINT32 stamp) { |
275 |
#ifdef SIMULATOR |
276 |
return CM_RC_SUCCESSFUL; |
277 |
#else |
278 |
return PRH_int_write_eeprom_and_check((void*)PRH_EEPROM_STAMP,(void*)&stamp,1); |
279 |
#endif |
280 |
} |
281 |
|
282 |
status_code PRH_WriteEEPROMBootinfo(UINT32 bootinfo) { |
283 |
#ifdef SIMULATOR |
284 |
return CM_RC_SUCCESSFUL; |
285 |
#else |
286 |
UINT32 eeprom_value; |
287 |
status_code s; |
288 |
s=PRH_ReadEEPROMBootinfo(&eeprom_value); |
289 |
if(s != CM_RC_SUCCESSFUL) |
290 |
return s; |
291 |
if(eeprom_value != bootinfo) |
292 |
return(PRH_IS_STAMP_OK ? |
293 |
PRH_int_write_eeprom_and_check((void*)PRH_EEPROM_BOOTINFO,(void*)&bootinfo,1) |
294 |
: CM_RC_BAD_EEPROM); |
295 |
else |
296 |
return CM_RC_SUCCESSFUL; |
297 |
#endif |
298 |
} |
299 |
|
300 |
status_code PRH_ReadEEPROMBootinfo(UINT32 *bootinfo) { |
301 |
#ifndef SIMULATOR |
302 |
if(PRH_IS_STAMP_OK) |
303 |
*bootinfo = *(UINT32*)PRH_EEPROM_BOOTINFO; |
304 |
else |
305 |
return CM_RC_BAD_EEPROM; |
306 |
#endif |
307 |
return CM_RC_SUCCESSFUL; |
308 |
} |
309 |
|
310 |
|
311 |
status_code PRH_FormatEEPROM() |
312 |
{ |
313 |
#ifndef SIMULATOR |
314 |
#ifdef PRH_DEFAULT_MODE |
315 |
status_code s; |
316 |
if( (s = PRH_WriteEEPROMStamp(0)) != CM_RC_SUCCESSFUL ) |
317 |
return s; |
318 |
|
319 |
PRH_CurrentStamp = PRH_STAMP; // Force check to be OK |
320 |
|
321 |
if( (s = PRH_WriteEEPROMBootinfo(PRH_BOOTINFO_FORMAT)) != CM_RC_SUCCESSFUL) |
322 |
return s; |
323 |
|
324 |
if( (s = PRH_WriteAll2EEPROM(PRH_EEPROM_CURRENT)) != CM_RC_SUCCESSFUL) |
325 |
return s; |
326 |
|
327 |
if( (s = PRH_WriteAll2EEPROM(PRH_EEPROM_DEFAULT)) != CM_RC_SUCCESSFUL) |
328 |
return s; |
329 |
|
330 |
//WS_ZeroTableWS2(); |
331 |
if( (s = WS_2_WriteWS2Tables()) != CM_RC_SUCCESSFUL) |
332 |
return s; |
333 |
|
334 |
if( (s = PRH_WriteEEPROMStamp(PRH_STAMP)) != CM_RC_SUCCESSFUL) |
335 |
return s; |
336 |
|
337 |
#endif |
338 |
#endif |
339 |
return CM_RC_SUCCESSFUL; |
340 |
} |
341 |
|
342 |
status_code PRH_ReadCurrentParam() |
343 |
{ |
344 |
#ifdef SIMULATOR |
345 |
return CM_RC_SUCCESSFUL; |
346 |
#else |
347 |
return(PRH_ReadAllFromEEPROM(PRH_EEPROM_CURRENT)); |
348 |
#endif |
349 |
} |
350 |
|
351 |
status_code PRH_WriteCurrentParam() |
352 |
{ |
353 |
#ifdef SIMULATOR |
354 |
return CM_RC_SUCCESSFUL; |
355 |
#else |
356 |
return(PRH_WriteAll2EEPROM(PRH_EEPROM_CURRENT)); |
357 |
#endif |
358 |
} |
359 |
|
360 |
status_code PRH_ReadDefaultParam() |
361 |
{ |
362 |
#ifdef SIMULATOR |
363 |
return CM_RC_SUCCESSFUL; |
364 |
#else |
365 |
return(PRH_ReadAllFromEEPROM(PRH_EEPROM_DEFAULT)); |
366 |
#endif |
367 |
} |
368 |
|
369 |
|
370 |
status_code PRH_ReadWS2Tables(void *ws2table) { |
371 |
if(PRH_IS_STAMP_OK) |
372 |
#ifndef SIMULATOR |
373 |
memcpy(ws2table,(void*)PRH_EEPROM_WS2TABLE,WS_2_TABLES_SIZE); |
374 |
#endif |
375 |
else |
376 |
return CM_RC_BAD_EEPROM; |
377 |
return CM_RC_SUCCESSFUL; |
378 |
} |
379 |
|
380 |
status_code PRH_WriteWS2Tables(void *ws2table) { |
381 |
#ifdef SIMULATOR |
382 |
return CM_RC_SUCCESSFUL; |
383 |
#else |
384 |
return PRH_int_write_eeprom_and_check((void*)PRH_EEPROM_WS2TABLE,ws2table,WS_2_TABLES_DWORDS); |
385 |
#endif |
386 |
} |
387 |
|
388 |
|
389 |
status_code PRH_ReadAllFromEEPROM(PRH_EEPROM_REGION region) { |
390 |
#ifdef SIMULATOR |
391 |
return CM_RC_SUCCESSFUL; |
392 |
#else |
393 |
unsigned int i; |
394 |
status_code s; |
395 |
BOOL old; |
396 |
|
397 |
if (!PRH_IS_STAMP_OK) |
398 |
{ |
399 |
/*@LOG Stamp is not ok */ |
400 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0); |
401 |
return(CM_RC_BAD_EEPROM); |
402 |
} |
403 |
|
404 |
/* disable automatic log to avoid looging of params not stored in eeprom */ |
405 |
old = PRH_int_get_automatic_log(); |
406 |
PRH_int_set_automatic_log(FALSE); |
407 |
|
408 |
|
409 |
/* read variables from eeprom: */ |
410 |
s = CM_RC_SUCCESSFUL; |
411 |
|
412 |
for(i=0;i<PRH_VAR_MAX &&(s == CM_RC_SUCCESSFUL || s == CM_RC_VAR_NOT_IN_EEPROM);i++) |
413 |
s = PRH_int_var_read_eeprom(region,i); |
414 |
|
415 |
/* read arrays from eeprom: */ |
416 |
for(i=0;i<PRH_ARR_MAX && (s == CM_RC_SUCCESSFUL || s == CM_RC_ARR_NOT_IN_EEPROM);i++) |
417 |
s = PRH_int_arr_read_eeprom(region,i); |
418 |
|
419 |
/* read tables from eeprom: */ |
420 |
for(i=0;i<PRH_TAB_MAX && (s == CM_RC_SUCCESSFUL || s == CM_RC_TAB_NOT_IN_EEPROM);i++) |
421 |
s = PRH_int_tab_read_eeprom(region,i); |
422 |
|
423 |
/* set the old log mode for the PRH module: */ |
424 |
PRH_int_set_automatic_log(old); |
425 |
return s; |
426 |
#endif // SIMULATOR |
427 |
|
428 |
} |
429 |
|
430 |
status_code PRH_SetParam(BYTE mode, MA_HEADER_MCMD *headerMcmd) { |
431 |
BYTE *CurPtr; |
432 |
BYTE id,nvar,narr,ntab,i,idx,buf_no,type,tmp; |
433 |
UINT16 h,l,c,r; |
434 |
UINT16 woffset,wlen,len,crc; |
435 |
UINT32 size,stamp; |
436 |
PRH_VAR_TYPE varvalue; |
437 |
HB_BUF bufid; |
438 |
status_code s; |
439 |
unsigned char offset; |
440 |
BOOL old; |
441 |
status_code err=SUCCESSFUL; |
442 |
static unsigned int changed_var[256]; |
443 |
static unsigned int changed_arr[256]; |
444 |
static unsigned int changed_tab[256]; |
445 |
err = SUCCESSFUL; |
446 |
|
447 |
CurPtr = (BYTE*) SMH_GETPTR_SELECTMODEBODY(headerMcmd->PtrMCMD); |
448 |
|
449 |
CM_READ_BE_UINT32(CurPtr,stamp,tmp); |
450 |
|
451 |
if(stamp != PRH_STAMP) { |
452 |
/*@LOG SetParam: Stamp is not ok - expected stamp */ |
453 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,PRH_STAMP); |
454 |
/*@LOG SetParam: Stamp is not ok - macrocommand stamp */ |
455 |
LU_INFN_LOG(LU_WARNING|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,stamp); |
456 |
return CM_RC_STAMP_ERROR; |
457 |
} |
458 |
|
459 |
old=PRH_int_get_automatic_log(); |
460 |
PRH_int_set_automatic_log(FALSE); |
461 |
type=SMH_INFN_SELECTMODE_GET_TYPE(mode); |
462 |
switch (type) { |
463 |
case SMH_SETPARAM_GEN: |
464 |
{ |
465 |
|
466 |
CM_READ_BE_UINT8(CurPtr,nvar); |
467 |
|
468 |
// handler var |
469 |
for(i=0;i<nvar && err==SUCCESSFUL;i++) { |
470 |
CM_READ_BE_UINT8(CurPtr,id); |
471 |
CM_READ_BE_UINT32(CurPtr,varvalue,tmp); |
472 |
err=PRH_int_set_var(id,varvalue); |
473 |
/*@LOG SMH_SETPARAM_GEN: id */ |
474 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,id); |
475 |
/*@LOG SMH_SETPARAM_GEN: varvalue */ |
476 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,varvalue); |
477 |
changed_var[i]=id; |
478 |
} |
479 |
|
480 |
//handler array |
481 |
if(err==SUCCESSFUL) |
482 |
CM_READ_BE_UINT8(CurPtr,narr); |
483 |
for(i=0;i<narr && err==SUCCESSFUL;i++){ |
484 |
CM_READ_BE_UINT8(CurPtr,id); |
485 |
#warning this have to be changed: idx should be 16 bit,but also gen_mcmds.pl must be changed! |
486 |
CM_READ_BE_UINT8(CurPtr,idx); |
487 |
CM_READ_BE_UINT32(CurPtr,varvalue,tmp); |
488 |
err=PRH_int_set_arr(id,idx,varvalue); |
489 |
/*@LOG SMH_SETPARAM_GEN: id */ |
490 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,id); |
491 |
/*@LOG SMH_SETPARAM_GEN: idx */ |
492 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,idx); |
493 |
/*@LOG SMH_SETPARAM_GEN: varvalue */ |
494 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,varvalue); |
495 |
changed_arr[i]=id; |
496 |
} |
497 |
|
498 |
//handler table |
499 |
if(err==SUCCESSFUL) |
500 |
CM_READ_BE_UINT8(CurPtr,ntab); |
501 |
for(i=0;i<ntab && err==SUCCESSFUL;i++){ |
502 |
CM_READ_BE_UINT8(CurPtr,id); |
503 |
CM_READ_BE_UINT8(CurPtr,r); |
504 |
CM_READ_BE_UINT8(CurPtr,c); |
505 |
CM_READ_BE_UINT32(CurPtr,varvalue,tmp); |
506 |
err=PRH_int_set_tab(id,r,c,varvalue); |
507 |
/*@LOG SMH_SETPARAM_GEN: id */ |
508 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,id); |
509 |
/*@LOG SMH_SETPARAM_GEN: r */ |
510 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,r); |
511 |
/*@LOG SMH_SETPARAM_GEN: c */ |
512 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,c); |
513 |
/*@LOG SMH_SETPARAM_GEN: varvalue */ |
514 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,varvalue); |
515 |
changed_tab[i]=id; |
516 |
} |
517 |
} |
518 |
break; |
519 |
case SMH_SETPARAM_ARRAY_RAW: |
520 |
break; |
521 |
case SMH_SETPARAM_TABLE_RAW: |
522 |
break; |
523 |
case SMH_SETPARAM_LOADUSERDATA: |
524 |
case SMH_SETPARAM_APPENDUSERDATA: |
525 |
CM_READ_BE_UINT8(CurPtr,buf_no); |
526 |
CM_READ_BE_UINT16(CurPtr,len,tmp); |
527 |
/*@LOG SMH_SETPARAM_LOADUSERDATA/SMH_SETPARAM_APPENDUSERDATA: buf_no */ |
528 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
529 |
/*@LOG SMH_SETPARAM_LOADUSERDATA/SMH_SETPARAM_APPENDUSERDATA: len */ |
530 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,len); |
531 |
if(len > headerMcmd->Length*2 - 9*2 - 1) { |
532 |
/*@LOG SMH_SETPARAM_LOADUSERDATA/SMH_SETPARAM_APPENDUSERDATA: length error ! */ |
533 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,0); |
534 |
s=CM_RC_MCMD_FORMAT_ERROR; |
535 |
}else{ |
536 |
if(buf_no >= HB_USERDATA_NO) |
537 |
/*@LOG SMH_SETPARAM_LOADUSERDATA/SMH_SETPARAM_APPENDUSERDATA: buf_no error - buf_no */ |
538 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
539 |
else { |
540 |
bufid=HB_USERDATA0+buf_no; |
541 |
if(type == SMH_SETPARAM_LOADUSERDATA) { |
542 |
s=HB_InitBuf(bufid); |
543 |
if(s!=CM_RC_SUCCESSFUL) |
544 |
/*@LOG SMH_SETPARAM_LOADUSERDATA: error init buffer - status */ |
545 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
546 |
} |
547 |
|
548 |
// s=HB_Store(bufid,len,CurPtr,0); |
549 |
s=HB_StoreUserData(buf_no,len,CurPtr); |
550 |
if(s!=CM_RC_SUCCESSFUL) |
551 |
/*@LOG SMH_SETPARAM_LOADUSERDATA/SMH_SETPARAM_APPENDUSERDATA: StoreUserData error - status */ |
552 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
553 |
} |
554 |
} |
555 |
break; |
556 |
case SMH_SETPARAM_USERDATA2ARR: |
557 |
case SMH_SETPARAM_USERDATA2TAB: |
558 |
CM_READ_BE_UINT8(CurPtr,buf_no); |
559 |
if(buf_no >= HB_USERDATA_NO) |
560 |
/*@LOG SMH_SETPARAM_USERDATA2ARR/SMH_SETPARAM_USERDATA2TAB: buf_no error - buf_no */ |
561 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
562 |
else { |
563 |
CM_READ_BE_UINT16(CurPtr,crc,tmp); |
564 |
CM_READ_BE_UINT8(CurPtr,id); |
565 |
/*@LOG SMH_SETPARAM_USERDATA2ARR/SMH_SETPARAM_USERDATA2TAB - buf_no */ |
566 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
567 |
/*@LOG SMH_SETPARAM_USERDATA2ARR/SMH_SETPARAM_USERDATA2TAB - id */ |
568 |
LU_INFN_LOG(LU_DEBUG_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,id); |
569 |
|
570 |
bufid=HB_USERDATA0+buf_no; |
571 |
switch(type) { |
572 |
case SMH_SETPARAM_USERDATA2ARR: |
573 |
s=HB_Userdata2Arr(bufid,id,crc); |
574 |
if(s == CM_RC_SUCCESSFUL) |
575 |
/*@LOG SMH_SETPARAM_USERDATA2ARR: - status */ |
576 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,s); |
577 |
break; |
578 |
case SMH_SETPARAM_USERDATA2TAB: |
579 |
s=HB_Userdata2Tab(bufid,id,crc); |
580 |
if(s == CM_RC_SUCCESSFUL) |
581 |
/*@LOG SMH_SETPARAM_USERDATA2TAB: - status */ |
582 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,buf_no); |
583 |
break; |
584 |
default: |
585 |
/*@LOG SMH_SETPARAM_USERDATA2ARR/SMH_SETPARAM_USERDATA2TAB type error - type */ |
586 |
LU_INFN_LOG(LU_INTERNAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
587 |
s=CM_RC_INTERNAL_ERR; |
588 |
} |
589 |
} |
590 |
break; |
591 |
case SMH_SETPARAM_READ_DEFAULT_PARAM : |
592 |
err=PRH_ReadDefaultParam(); |
593 |
/*@LOG SMH_SETPARAM_READ_DEFAULT_PARAM - status */ |
594 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,err); |
595 |
break; |
596 |
case SMH_SETPARAM_SAVE2EEPROM: |
597 |
err=PRH_WriteCurrentParam(); |
598 |
/*@LOG SMH_SETPARAM_SAVE2EEPROM - status */ |
599 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,err); |
600 |
break; |
601 |
case SMH_SETPARAM_LOADWS2TABLE: |
602 |
err=WS_2_SetTable(headerMcmd); |
603 |
/*@LOG SMH_SETPARAM_LOADWS2TABLE - status */ |
604 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,err); |
605 |
break; |
606 |
case SMH_SETPARAM_SAVEWS2TABLES: |
607 |
/* Write On EEPROM */ |
608 |
err=WS_2_WriteWS2Tables(); |
609 |
/*@LOG SMH_SETPARAM_LOADWS2TABLE - status */ |
610 |
LU_INFN_LOG(LU_NORMAL_TRACE|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,err); |
611 |
break; |
612 |
case SMH_SETPARAM_SETLOGMASKALL: |
613 |
/* set the log mask for all modules to a specified value */ |
614 |
CM_READ_BE_UINT16(CurPtr,c,tmp); |
615 |
/*@LOG SMH_SETPARAM_SETLOGMASKALL - mask value */ |
616 |
LU_INFN_LOG(LU_DEBUG_TRACE,LU_MASK(__FILEID__),__FILEID__,__LINE__,c); |
617 |
LU_SetLogMaskAll(c); |
618 |
default: |
619 |
break; |
620 |
} |
621 |
PRH_int_set_automatic_log(old); |
622 |
if(err != SUCCESSFUL) { |
623 |
/*@LOG tis SetParam family SUBMODE have been failed */ |
624 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,type); |
625 |
/*@LOG this error occurs during SetParam family SUBMODE */ |
626 |
LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,err); |
627 |
} |
628 |
return err; |
629 |
} |
630 |
|
631 |
|
632 |
status_code PRH_var_write2eeprom(PRH_EEPROM_REGION region,unsigned int id) { |
633 |
#ifdef SIMULATOR |
634 |
return CM_RC_SUCCESSFUL; |
635 |
#else |
636 |
return (PRH_IS_STAMP_OK ? PRH_int_var_write2eeprom(region,id) : CM_RC_BAD_EEPROM); |
637 |
#endif |
638 |
} |
639 |
status_code PRH_var_read_eeprom(PRH_EEPROM_REGION region,unsigned int id) { |
640 |
#ifdef SIMULATOR |
641 |
return CM_RC_SUCCESSFUL; |
642 |
#else |
643 |
return(PRH_IS_STAMP_OK ? PRH_int_var_read_eeprom(region,id): CM_RC_BAD_EEPROM); |
644 |
#endif |
645 |
} |
646 |
status_code PRH_arr_write2eeprom(PRH_EEPROM_REGION region,unsigned int id) { |
647 |
#ifdef SIMULATOR |
648 |
return CM_RC_SUCCESSFUL; |
649 |
#else |
650 |
return(PRH_IS_STAMP_OK ? PRH_int_arr_write2eeprom(region,id): CM_RC_BAD_EEPROM); |
651 |
#endif |
652 |
} |
653 |
status_code PRH_arr_read_eeprom(PRH_EEPROM_REGION region,unsigned int id) { |
654 |
#ifdef SIMULATOR |
655 |
return CM_RC_SUCCESSFUL; |
656 |
#else |
657 |
return(PRH_IS_STAMP_OK ?PRH_int_arr_read_eeprom(region,id): CM_RC_BAD_EEPROM); |
658 |
#endif |
659 |
} |
660 |
status_code PRH_tab_write2eeprom(PRH_EEPROM_REGION region,unsigned int id) { |
661 |
#ifdef SIMULATOR |
662 |
return CM_RC_SUCCESSFUL; |
663 |
#else |
664 |
return(PRH_IS_STAMP_OK ?PRH_int_tab_write2eeprom(region,id): CM_RC_BAD_EEPROM); |
665 |
#endif |
666 |
} |
667 |
status_code PRH_tab_read_eeprom(PRH_EEPROM_REGION region,unsigned int id) { |
668 |
#ifdef SIMULATOR |
669 |
return CM_RC_SUCCESSFUL; |
670 |
#else |
671 |
return(PRH_IS_STAMP_OK ?PRH_tab_read_eeprom(region,id): CM_RC_BAD_EEPROM); |
672 |
#endif |
673 |
} |
674 |
|
675 |
extern UINT32 PRH_var_dump_len; |
676 |
extern UINT32 PRH_arr_dump_len; |
677 |
extern UINT32 PRH_tab_dump_len; |
678 |
|
679 |
UINT32 PRH_get_var_dump_len() { |
680 |
return PRH_var_dump_len; |
681 |
} |
682 |
UINT32 PRH_get_arr_dump_len() { |
683 |
return PRH_arr_dump_len; |
684 |
} |
685 |
UINT32 PRH_get_tab_dump_len() { |
686 |
return PRH_tab_dump_len; |
687 |
} |
688 |
|
689 |
/* |
690 |
status_code PRH_var_dump_for_mm(DAQ_CMD_BUF *b) { |
691 |
int i; |
692 |
BOOL mm; |
693 |
PRH_VAR_TYPE var; |
694 |
for(i=0;i<PRH_VAR_MAX;i++) { |
695 |
PRH_int_var_is_in_mm(i,&mm); |
696 |
if(mm) { |
697 |
PRH_int_get_var(i,&var); |
698 |
if(DAQ_SPACE_LEFT(*b) < PRH_SIZEOF_VAR) |
699 |
return CM_RC_NO_SPACE_LEFT; |
700 |
DAQ_WRITE_BE_UINT32((*b),var); |
701 |
} |
702 |
} |
703 |
return CM_RC_SUCCESSFUL; |
704 |
} |
705 |
|
706 |
status_code PRH_arr_dump_for_mm(DAQ_CMD_BUF *b) { |
707 |
int i; |
708 |
BOOL mm; |
709 |
PRH_VAR_TYPE *arr; |
710 |
for(i=0;i<PRH_ARR_MAX;i++) { |
711 |
PRH_int_arr_is_in_mm(i,&mm); |
712 |
if(mm) { |
713 |
PRH_int_get_arr_ptr(i,&arr); |
714 |
if(DAQ_SPACE_LEFT(*b) <= PRH_SIZEOF_ARR(i)) |
715 |
return CM_RC_NO_SPACE_LEFT; |
716 |
DAQ_WRITE_BE_UINT32((*b),var); |
717 |
} |
718 |
} |
719 |
return CM_RC_SUCCESSFUL; |
720 |
} |
721 |
|
722 |
status_code PRH_tab_dump_for_mm(DAQ_CMD_BUF *b) { |
723 |
} |
724 |
*/ |