Index: PersistentAlarm.c =================================================================== diff -u -r5b5c205064a86f29dfe376922ff6331b8bfa07a6 -r184644a2678f4e12855e96e334c698a713d61535 --- PersistentAlarm.c (.../PersistentAlarm.c) (revision 5b5c205064a86f29dfe376922ff6331b8bfa07a6) +++ PersistentAlarm.c (.../PersistentAlarm.c) (revision 184644a2678f4e12855e96e334c698a713d61535) @@ -29,6 +29,7 @@ typedef struct { ALARM_ID_T alarm; ///< Alarm id + BOOL isClearable; ///< Flag if alarm can be cleared U32 persistentClearCount; ///< Persistent count limit before clear alarm U32 persistentTriggerCount; ///< Persistent count limit before trigger alarm @@ -52,15 +53,18 @@ * Outputs : PersistentAlarm module initialized * @param alarmIndex Persistent alarm index * @param alarm Alarm id + * @param isClearable Flag to indicate alarm is clearable or not * @param persistentClearCount Persistent count limit before clear alarm * @param persistentTriggerCount Persistent count limit before trigger alarm * @return none *************************************************************************/ -void initPersistentAlarm( PERSISTENT_ALARM_T alarmIndex, ALARM_ID_T alarm, F32 persistentClearCount, F32 persistentTriggerCount ) +void initPersistentAlarm( PERSISTENT_ALARM_T alarmIndex, ALARM_ID_T alarm, BOOL isClearable, + F32 persistentClearCount, F32 persistentTriggerCount ) { if ( alarmIndex < NUM_OF_PERSISTENT_ALARM ) { persistentAlarms[ alarmIndex ].alarm = alarm; + persistentAlarms[ alarmIndex ].isClearable = isClearable; persistentAlarms[ alarmIndex ].persistentClearCount = persistentClearCount; persistentAlarms[ alarmIndex ].persistentTriggerCount = persistentTriggerCount; persistentAlarms[ alarmIndex ].inRangeCounter = 0U; @@ -106,7 +110,8 @@ { ++persistentAlarms[ alarmIndex ].inRangeCounter; persistentAlarms[ alarmIndex ].outOfRangeCounter = 0; - if ( persistentAlarms[ alarmIndex ].inRangeCounter > persistentAlarms[ alarmIndex ].persistentClearCount ) + BOOL const isInRangePersistent = persistentAlarms[ alarmIndex ].inRangeCounter > persistentAlarms[ alarmIndex ].persistentClearCount; + if ( persistentAlarms[ alarmIndex ].isClearable && isInRangePersistent ) { clearAlarm( persistentAlarms[ alarmIndex ].alarm ); } Index: PersistentAlarm.h =================================================================== diff -u -r5b5c205064a86f29dfe376922ff6331b8bfa07a6 -r184644a2678f4e12855e96e334c698a713d61535 --- PersistentAlarm.h (.../PersistentAlarm.h) (revision 5b5c205064a86f29dfe376922ff6331b8bfa07a6) +++ PersistentAlarm.h (.../PersistentAlarm.h) (revision 184644a2678f4e12855e96e334c698a713d61535) @@ -47,7 +47,8 @@ // ********** public function prototypes ********** -void initPersistentAlarm( PERSISTENT_ALARM_T alarmIndex, ALARM_ID_T alarm, F32 persistentClearCount, F32 persistentTriggerCount ); +void initPersistentAlarm( PERSISTENT_ALARM_T alarmIndex, ALARM_ID_T alarm, BOOL isClearable, + F32 persistentClearCount, F32 persistentTriggerCount ); void checkPersistentAlarm( PERSISTENT_ALARM_T const alarmIndex, BOOL const isOutOfRange, F32 const data ); /**@}*/