Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r0a313ac4ec34865255e72089fded191b951b62de -r0ab59cd92ae0c8efd1413b4ab77827d255739553 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 0a313ac4ec34865255e72089fded191b951b62de) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 0ab59cd92ae0c8efd1413b4ab77827d255739553) @@ -33,6 +33,9 @@ // *** This declaration will cause a compiler error if ALARM_TABLE does not have same # of alarms as the Alarm_List enumeration. U08 alarmTableSizeAssertion[ ( ( sizeof( ALARM_TABLE ) / sizeof( ALARM_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; + +// *** This declaration will cause a compiler error if ALARM_RANK_TABLE does not have same # of alarms as the Alarm_List enumeration. +U08 alarmRankTableSizeAssertion[ ( ( sizeof( ALARM_RANK_TABLE ) / sizeof( ALARM_RANK_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. Index: firmware/checkAlarms.sh =================================================================== diff -u -racf0804f9168cdca18196f07ad4bbe46cc4d07f8 -r0ab59cd92ae0c8efd1413b4ab77827d255739553 --- firmware/checkAlarms.sh (.../checkAlarms.sh) (revision acf0804f9168cdca18196f07ad4bbe46cc4d07f8) +++ firmware/checkAlarms.sh (.../checkAlarms.sh) (revision 0ab59cd92ae0c8efd1413b4ab77827d255739553) @@ -3,6 +3,9 @@ lineno=$(grep -n "ALARM_ID_NO_ALARM = 0" ../Common/AlarmDefs.h) lineno=${lineno%%:*} +alarmRankLineNo=$(grep -n "ALARM_RANK_TABLE" ../Common/AlarmDefs.h) +alarmRankLineNo=${alarmRankLineNo%%:*} + echo " #include #include @@ -15,6 +18,8 @@ { ALARM_ID_T alarm; U32 lineNumber = $lineno; + U32 alarmRankLineNumber = $alarmRankLineNo; + U32 index; for ( alarm = ALARM_ID_NO_ALARM; alarm < NUM_OF_ALARM_IDS; alarm++ ) { @@ -26,6 +31,27 @@ } } printf(\"Alarm table check completed!\n\"); + + for ( alarm = ALARM_ID_NO_ALARM; alarm < NUM_OF_ALARM_IDS; alarm++ ) + { + if ( ALARM_RANK_TABLE[ alarm ].alarmSubRank != ALARM_TABLE[ ALARM_RANK_TABLE[ alarm ].alarmID ].alarmSubRank ) + { + printf(\"\\\"AlarmDefs.h\\\", line %d: error #9999: Alarm has different rank from alarm property table!\n\", alarmRankLineNumber + alarm + 2 ); + exit(1); + } + } + + for ( index = 1; index < NUM_OF_ALARM_IDS; index++ ) + { + if ( ALARM_RANK_TABLE[ index - 1 ].alarmSubRank > ALARM_RANK_TABLE[ index ].alarmSubRank ) + { + alarmRankLineNumber += index + 1; + printf(\"\\\"AlarmDefs.h\\\", line %d: error #9999: Alarm Rank Index %i has higher rank than Index %i!\n\", alarmRankLineNumber, index, index - 1); + exit(1); + } + } + + printf(\"Alarm rank table check completed!\n\"); }" > alarmCheck.c gcc -o alarmCheck alarmCheck.c -I../App -I../App/Services -I../Common -I../FWCommon -I../include