Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u --- firmware/App/Services/AlarmMgmt.c (revision 0) +++ firmware/App/Services/AlarmMgmt.c (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -0,0 +1,409 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file Timers.c + * + * @date 07-Nov-2019 + * @author S. Nash + * + * @brief Alarm Management service module. Provides general alarm management \n + * functionality including support functions for triggering and clearing \n + * specific alarms. + * + **************************************************************************/ + +#include "Common.h" +#include "AlarmLamp.h" +#include "Timers.h" +#include "AlarmMgmt.h" + +// ********** private definitions ********** + +#pragma pack(push,1) +typedef struct +{ + ALARM_PRIORITY_T alarmsState; // current alarm priority level + BOOL alarmsSilenced; // alarms are currently silenced? + U32 alarmsSilenceStart; // time stamp for when alarms were silenced (ms) + U32 alarmsSilenceExpiresIn; // time until alarm silence expires (seconds) + U32 alarmsEscalatesIn; // time until alarm will escalate (seconds) + ALARM_ID_T alarmTop; // ID of current top alarm that will drive lamp/audio and UI should be displaying right now + BOOL systemFault; // a system fault is active? + BOOL stop; // we should be in controlled stop right now + BOOL noClear; // no recovery will be possible + BOOL noResume; // treatment may not be resumed at this time + BOOL noRinseback; // rinseback may not be initiated at this time + BOOL noEndTreatment; // ending the treatment is not an option at this time + BOOL noNewTreatment; // no new treatments may be started even if current treatment is ended + BOOL bypassDialyzer; // the dialyzer should be bypassed at this time +} COMP_ALARM_STATUS_T; + +typedef struct +{ + ALARM_PRIORITY_T alarmPriority; // priority of alarm + U32 alarmEscalatesAfter; // time (s) after start when alarm will escalate if not cleared (zero indicates no escalation) + ALARM_ID_T alarmEscalatesTo; // ID of alarm that this alarm will escalate to (ALARM_ID_NO_ALARM indicates no esclation) + BOOL alarmIsFault; // alarm is a system fault? + BOOL alarmStops; // alarm activation should cause a controlled stop + BOOL alarmNoClear; // alarm cannot be cleared (unrecoverable)? + BOOL alarmNoResume; // alarm prevents treatment resume + BOOL alarmNoRinseback; // alarm prevents rinseback + BOOL alarmNoEndTreatment; // alarm prevents ending treatment + BOOL alarmNoNewTreatment; // alarm prevents any new treatments + BOOL alarmDialyzerBypass; // alarm activation should cause dialyzer bypass until cleared +} ALARM_T; + +typedef struct +{ + BOOL alarmActive; // alarm is currently active? + U32 alarmStart; // time stamp for when alarm was activated +} ALARM_STATUS_T; +#pragma pack(pop) + +const ALARM_T alarmTable[NUM_OF_ALARM_IDS] = +{ + { ALARM_PRIORITY_NONE, 0, ALARM_ID_NO_ALARM, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_NO_ALARM + { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE } // ALARM_ID_SOFTWARE_FAULT +}; + +// ********** private data ********** + +static ALARM_STATUS_T alarmStatusTable[NUM_OF_ALARM_IDS] = +{ + { FALSE, 0 }, // ALARM_ID_NO_ALARM + { FALSE, 0 } // ALARM_ID_SOFTWARE_FAULT +}; +static COMP_ALARM_STATUS_T alarmStatus; + +static ALARM_ID_T alarmPriorityFIFO[NUM_OF_ALARM_PRIORITIES]; + +// ********** private function prototypes ********** + +static void updateAlarmsState( void ); +static void setAlarmLampAndAudio( void ); +static void updateAlarmsSilenceStatus( void ); +static void handleAlarmEscalations( void ); +static void updateAlarmsFlags( void ); + +static void resetAlarmPriorityFIFO( ALARM_PRIORITY_T priority ); + +/************************************************************************* + * @brief initAlarmMgmt + * The initAlarmMgmt function initializes the AlarmMgmt module. + * @details + * Inputs : none + * Outputs : AlarmMgmt module initialized. + * @param none + * @return none + *************************************************************************/ +void initAlarmMgmt( void ) +{ + ALARM_PRIORITY_T p; + + for ( p = ALARM_PRIORITY_NONE; p < NUM_OF_ALARM_PRIORITIES; p++ ) + { + alarmPriorityFIFO[p] = ALARM_ID_NO_ALARM; + } + alarmStatus.alarmsState = ALARM_PRIORITY_NONE; + alarmStatus.alarmsSilenced = FALSE; + alarmStatus.alarmsSilenceStart = 0; + alarmStatus.alarmsSilenceExpiresIn = 0; + alarmStatus.alarmsEscalatesIn = 0; + alarmStatus.alarmTop = ALARM_ID_NO_ALARM; + alarmStatus.systemFault = FALSE; + alarmStatus.stop = FALSE; + alarmStatus.noClear = FALSE; + alarmStatus.noResume = FALSE; + alarmStatus.noRinseback = FALSE; + alarmStatus.noEndTreatment = FALSE; + alarmStatus.noNewTreatment = FALSE; + alarmStatus.bypassDialyzer = FALSE; +} + +/************************************************************************* + * @brief execAlarmMgmt + * The execAlarmMgmt function executes the alarm management functions to be \n + * done periodically. The composite alarm state is updated, alarm lamp and \n + * audio patterns are updated, and status is sent out to the rest of the system. + * @details + * Inputs : larmStatusTable[], alarmTable[] + * Outputs : larmStatus + * @param none + * @return none + *************************************************************************/ +void execAlarmMgmt( void ) +{ + handleAlarmEscalations(); + updateAlarmsState(); + updateAlarmsFlags(); + updateAlarmsSilenceStatus(); + setAlarmLampAndAudio(); + // TODO - publish alarms status record to rest of system +} + +/************************************************************************* + * @brief activateAlarm + * The activateAlarm function activates a given alarm. Also, an alarm \n + * message is broadcast to the rest of the system. + * @details + * Inputs : none + * Outputs : AlarmStatusTable[] + * @param alarm : ID of alarm to activate + * @return none + *************************************************************************/ +void activateAlarm( ALARM_ID_T alarm ) +{ + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + alarmStatusTable[alarm].alarmActive = TRUE; + alarmStatusTable[alarm].alarmStart = getMSTimerCount(); + // TODO - send alarm broadcast msg + } + else + { + // TODO - s/w fault + } +} + +/************************************************************************* + * @brief activateAlarm1Data + * The activateAlarm function activates a given alarm. Also, an alarm \n + * message is broadcast to the rest of the system. This function will \n + * include given data in the broadcast message for logging. + * @details + * Inputs : none + * Outputs : AlarmStatusTable[] + * @param alarm : ID of alarm to activate + * @param alarmData : supporting data to include in alarm msg + * @return none + *************************************************************************/ +void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) +{ + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + alarmStatusTable[alarm].alarmActive = TRUE; + alarmStatusTable[alarm].alarmStart = getMSTimerCount(); + // TODO - send alarm broadcast msg w/ alarm data + } + else + { + // TODO - s/w fault + } +} + +/************************************************************************* + * @brief activateAlarm1Data + * The activateAlarm function activates a given alarm. Also, an alarm \n + * message is broadcast to the rest of the system. This function will \n + * include two given data in the broadcast message for logging. + * @details + * Inputs : none + * Outputs : AlarmStatusTable[] + * @param alarm : ID of alarm to activate + * @param alarmData1 : supporting data to include in alarm msg + * @param alarmData2 : supporting data to include in alarm msg + * @return none + *************************************************************************/ +void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2 ) +{ + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + alarmStatusTable[alarm].alarmActive = TRUE; + alarmStatusTable[alarm].alarmStart = getMSTimerCount(); + // TODO - send alarm broadcast msg w/ alarm data + } + else + { + // TODO - s/w fault + } +} + +/************************************************************************* + * @brief clearAlarm + * The clearAlarm function clears a given alarm if it is recoverable. Also \n + * an alarm message is broadcast to the rest of the system. + * @details + * Inputs : none + * Outputs : AlarmStatusTable[] + * @param alarm : ID of alarm to clear + * @return none + *************************************************************************/ +void clearAlarm( ALARM_ID_T alarm ) +{ + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + // verify alarm can be cleared + if ( FALSE == alarmTable[alarm].alarmNoClear ) + { + alarmStatusTable[alarm].alarmActive = TRUE; + alarmStatusTable[alarm].alarmStart = getMSTimerCount(); + // clear FIFO if this alarm was in it + if ( alarmPriorityFIFO[alarmTable[alarm].alarmPriority] == alarm ) + { + resetAlarmPriorityFIFO( alarmTable[alarm].alarmPriority ); + } + // TODO - send alarm broadcast msg w/ alarm data + } + } + else + { + // TODO - s/w fault + } +} + +/************************************************************************* + * @brief updateAlarmsState + * The updateAlarmsState function updates the alarms state and alarm to \n + * display. + * @details + * Inputs : alarmStatusTable[] + * Outputs : alarmPriorityFIFO[], alarmStatus + * @param none + * @return none + *************************************************************************/ +static void updateAlarmsState( void ) +{ + ALARM_ID_T tempDisp = ALARM_ID_NO_ALARM; + ALARM_PRIORITY_T tempState = ALARM_PRIORITY_NONE; + ALARM_ID_T a; + ALARM_PRIORITY_T p; + + // update FIFOs per alarm status table + for ( a = ALARM_ID_NO_ALARM; a < NUM_OF_ALARM_IDS; a++ ) + { + if ( TRUE == alarmStatusTable[a].alarmActive ) + { + if ( ALARM_ID_NO_ALARM == alarmPriorityFIFO[alarmTable[a].alarmPriority] ) + { + alarmPriorityFIFO[alarmTable[a].alarmPriority] = a; + } + } + } + + // update alarms status and alarm to display per highest priority FIFO + for ( p = ALARM_PRIORITY_LOW; p < NUM_OF_ALARM_PRIORITIES; p++ ) + { + tempState = p; + tempDisp = alarmPriorityFIFO[p]; + } + alarmStatus.alarmsState = tempState; + alarmStatus.alarmTop = tempDisp; +} + +/************************************************************************* + * @brief setAlarmLampAndAudio + * The setAlarmLampAndAudio function sets the alarm lamp and audio patterns \n + * according to the current state of alarms. + * @details + * Inputs : none + * Outputs : none + * @param none + * @return none + *************************************************************************/ +static void setAlarmLampAndAudio( void ) +{ + switch ( alarmStatus.alarmsState ) + { + case ALARM_PRIORITY_NONE: + requestAlarmLampPattern( LAMP_PATTERN_OK ); + // TODO - no audio + break; + + case ALARM_PRIORITY_LOW: + requestAlarmLampPattern( LAMP_PATTERN_LOW_ALARM ); + // TODO - low priority audio + break; + + case ALARM_PRIORITY_MEDIUM: + requestAlarmLampPattern( LAMP_PATTERN_MED_ALARM ); + // TODO - medium priority audio + break; + + case ALARM_PRIORITY_HIGH: + if ( TRUE == alarmTable[alarmStatus.alarmTop].alarmIsFault ) + { + requestAlarmLampPattern( LAMP_PATTERN_FAULT ); + } + else + { + requestAlarmLampPattern( LAMP_PATTERN_HIGH_ALARM ); + } + // TODO - high priority audio + break; + + default: + // TODO - s/w fault + break; + } +} + +/************************************************************************* + * @brief updateAlarmsSilenceStatus + * The updateAlarmsSilenceStatus function updates the alarms silence state. + * @details + * Inputs : none + * Outputs : none + * @param none + * @return none + *************************************************************************/ +static void updateAlarmsSilenceStatus( void ) +{ + +} + +/************************************************************************* + * @brief handleAlarmEscalations + * The handleAlarmEscalations function handles alarm escalation. + * @details + * Inputs : none + * Outputs : none + * @param none + * @return none + *************************************************************************/ +static void handleAlarmEscalations( void ) +{ + +} + +/************************************************************************* + * @brief updateAlarmsFlags + * The updateAlarmsFlags function updates the alarms flags of the alarms \n + * status record. + * @details + * Inputs : none + * Outputs : none + * @param none + * @return none + *************************************************************************/ +static void updateAlarmsFlags( void ) +{ + +} + +/************************************************************************* + * @brief resetAlarmPriorityFIFO + * The resetAlarmPriorityFIFO function resets a FIFO for a given alarm \n + * priority. + * @details + * Inputs : none + * Outputs : alarmPriorityFIFO[] + * @param priority : priority of FIFO to reset + * @return none + *************************************************************************/ +static void resetAlarmPriorityFIFO( ALARM_PRIORITY_T priority ) +{ + // verify priority + if ( priority < NUM_OF_ALARM_PRIORITIES ) + { + alarmPriorityFIFO[priority] = ALARM_ID_NO_ALARM; + } +} + Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u --- firmware/App/Services/AlarmMgmt.h (revision 0) +++ firmware/App/Services/AlarmMgmt.h (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -0,0 +1,93 @@ +/************************************************************************** + * + * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. + * + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * @file AlarmMgmt.h + * + * @date 07-Nov-2019 + * @author S. Nash + * + * @brief header file for Alarm Management service module. + * + **************************************************************************/ + +#ifndef __ALARM_MGMT_H__ +#define __ALARM_MGMT_H__ + +// ********** public definitions ********** + +typedef enum Alarm_List +{ + ALARM_ID_NO_ALARM = 0, + ALARM_ID_SOFTWARE_FAULT, + NUM_OF_ALARM_IDS +} ALARM_ID_T; + +typedef enum Alarm_Priorities +{ + ALARM_PRIORITY_NONE = 0, + ALARM_PRIORITY_LOW, + ALARM_PRIORITY_MEDIUM, + ALARM_PRIORITY_HIGH, + NUM_OF_ALARM_PRIORITIES +} ALARM_PRIORITY_T; + +typedef enum Alarm_Data_Types +{ + ALARM_DATA_TYPE_U32 = 0, + ALARM_DATA_TYPE_S32, + ALARM_DATA_TYPE_F32, + ALARM_DATA_TYPE_BOOL, + NUM_OF_ALARM_DATA_TYPES +} ALARM_DATA_TYPES_T; + +#pragma pack(push,4) +typedef struct +{ + U32 data; +} ALARM_DATA_U32_T; + +typedef struct +{ + S32 data; +} ALARM_DATA_S32_T; + +typedef struct +{ + F32 data; +} ALARM_DATA_F32_T; + +typedef struct +{ + BOOL data; +} ALARM_DATA_BOOL_T; + +typedef union +{ + ALARM_DATA_U32_T uInt; + ALARM_DATA_S32_T sInt; + ALARM_DATA_F32_T flt; + ALARM_DATA_BOOL_T bln; +} ALARM_DATAS_T; + +typedef struct +{ + ALARM_DATA_TYPES_T dataType; + ALARM_DATAS_T data; +} ALARM_DATA_T; +#pragma pack(pop) + +// ********** public function prototypes ********** + +void initAlarmMgmt( void ); +void execAlarmMgmt( void ); + +void activateAlarm( ALARM_ID_T alarm ); +void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ); +void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2 ); +void clearAlarm( ALARM_ID_T alarm ); + +#endif Index: firmware/App/Services/Timers.c =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r1156c9be51ef9f40054860355ebee40b49ef03ca --- firmware/App/Services/Timers.c (.../Timers.c) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/App/Services/Timers.c (.../Timers.c) (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -101,3 +101,33 @@ return result; } + +/************************************************************************* + * @brief calcTimeSince + * The calcTimeSince function calculates the time (in ms) from a given start \n + * time until now. + * @details + * Inputs : msTimerCount + * Outputs : none + * @param startMSCount : the ms count at the start of the timeout period + * @return ms since given start time + *************************************************************************/ +U32 calcTimeSince( U32 startMSCount ) +{ + U32 result; + U32 currMSCount = msTimerCount; + + // no wrap + if ( currMSCount >= startMSCount ) + { + result = currMSCount - startMSCount; + } + else + { + result = ( 0xFFFFFFFF - startMSCount ) + currMSCount + 1; + } + + return result; +} + + Index: firmware/App/Services/Timers.h =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r1156c9be51ef9f40054860355ebee40b49ef03ca --- firmware/App/Services/Timers.h (.../Timers.h) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/App/Services/Timers.h (.../Timers.h) (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -25,5 +25,6 @@ void incMSTimerCount( void ); U32 getMSTimerCount( void ); BOOL didTimeout( U32 startMSCount, U32 timeoutPeriod ); +U32 calcTimeSince( U32 startMSCount ); #endif Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r1156c9be51ef9f40054860355ebee40b49ef03ca --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -19,6 +19,7 @@ #include "lin.h" #include "Common.h" +#include "AlarmMgmt.h" #include "OperationModes.h" #include "SystemComm.h" #include "WatchdogMgmt.h" @@ -52,6 +53,9 @@ // run operation mode state machine execOperationModes(); + // manage alarm state + execAlarmMgmt(); + // control alarm lamp execAlarmLamp(); Index: firmware/Debug/ccsObjs.opt =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r1156c9be51ef9f40054860355ebee40b49ef03ca --- firmware/Debug/ccsObjs.opt (.../ccsObjs.opt) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/Debug/ccsObjs.opt (.../ccsObjs.opt) (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -1 +1 @@ -"./irqDispatch_a.obj" "./irqDispatch_c.obj" "./App/Controllers/AlarmLamp.obj" "./App/Controllers/Buttons.obj" "./App/Drivers/CPLD.obj" "./App/Drivers/Comm.obj" "./App/Drivers/SafetyShutdown.obj" "./App/Modes/ModeFault.obj" "./App/Modes/ModeInitPOST.obj" "./App/Modes/ModeOpParams.obj" "./App/Modes/ModePostTreat.obj" "./App/Modes/ModePreTreat.obj" "./App/Modes/ModePrescription.obj" "./App/Modes/ModeService.obj" "./App/Modes/ModeStandby.obj" "./App/Modes/ModeTreatment.obj" "./App/Modes/OperationModes.obj" "./App/Services/CommBuffers.obj" "./App/Services/FPGA.obj" "./App/Services/Interrupts.obj" "./App/Services/MsgQueues.obj" "./App/Services/SystemComm.obj" "./App/Services/SystemCommMessages.obj" "./App/Services/Timers.obj" "./App/Services/Utilities.obj" "./App/Services/WatchdogMgmt.obj" "./App/Tasks/TaskBG.obj" "./App/Tasks/TaskGeneral.obj" "./App/Tasks/TaskPriority.obj" "./App/Tasks/TaskTimer.obj" "./source/can.obj" "./source/dabort.obj" "./source/errata_SSWF021_45.obj" "./source/esm.obj" "./source/gio.obj" "./source/lin.obj" "./source/mibspi.obj" "./source/notification.obj" "./source/pinmux.obj" "./source/rti.obj" "./source/sci.obj" "./source/sys_core.obj" "./source/sys_dma.obj" "./source/sys_intvecs.obj" "./source/sys_main.obj" "./source/sys_mpu.obj" "./source/sys_pcr.obj" "./source/sys_phantom.obj" "./source/sys_pmm.obj" "./source/sys_pmu.obj" "./source/sys_selftest.obj" "./source/sys_startup.obj" "./source/sys_vim.obj" "./source/system.obj" "../source/sys_link.cmd" -lrtsv7R4_T_le_v3D16_eabi.lib \ No newline at end of file +"./irqDispatch_a.obj" "./irqDispatch_c.obj" "./App/Controllers/AlarmLamp.obj" "./App/Controllers/Buttons.obj" "./App/Drivers/CPLD.obj" "./App/Drivers/Comm.obj" "./App/Drivers/SafetyShutdown.obj" "./App/Modes/ModeFault.obj" "./App/Modes/ModeInitPOST.obj" "./App/Modes/ModeOpParams.obj" "./App/Modes/ModePostTreat.obj" "./App/Modes/ModePreTreat.obj" "./App/Modes/ModePrescription.obj" "./App/Modes/ModeService.obj" "./App/Modes/ModeStandby.obj" "./App/Modes/ModeTreatment.obj" "./App/Modes/OperationModes.obj" "./App/Services/AlarmMgmt.obj" "./App/Services/CommBuffers.obj" "./App/Services/FPGA.obj" "./App/Services/Interrupts.obj" "./App/Services/MsgQueues.obj" "./App/Services/SystemComm.obj" "./App/Services/SystemCommMessages.obj" "./App/Services/Timers.obj" "./App/Services/Utilities.obj" "./App/Services/WatchdogMgmt.obj" "./App/Tasks/TaskBG.obj" "./App/Tasks/TaskGeneral.obj" "./App/Tasks/TaskPriority.obj" "./App/Tasks/TaskTimer.obj" "./source/can.obj" "./source/dabort.obj" "./source/errata_SSWF021_45.obj" "./source/esm.obj" "./source/gio.obj" "./source/lin.obj" "./source/mibspi.obj" "./source/notification.obj" "./source/pinmux.obj" "./source/rti.obj" "./source/sci.obj" "./source/sys_core.obj" "./source/sys_dma.obj" "./source/sys_intvecs.obj" "./source/sys_main.obj" "./source/sys_mpu.obj" "./source/sys_pcr.obj" "./source/sys_phantom.obj" "./source/sys_pmm.obj" "./source/sys_pmu.obj" "./source/sys_selftest.obj" "./source/sys_startup.obj" "./source/sys_vim.obj" "./source/system.obj" "../source/sys_link.cmd" -lrtsv7R4_T_le_v3D16_eabi.lib \ No newline at end of file Index: firmware/Debug/makefile =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r1156c9be51ef9f40054860355ebee40b49ef03ca --- firmware/Debug/makefile (.../makefile) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/Debug/makefile (.../makefile) (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -25,6 +25,7 @@ "./App/Modes/ModeStandby.obj" \ "./App/Modes/ModeTreatment.obj" \ "./App/Modes/OperationModes.obj" \ +"./App/Services/AlarmMgmt.obj" \ "./App/Services/CommBuffers.obj" \ "./App/Services/FPGA.obj" \ "./App/Services/Interrupts.obj" \ @@ -217,10 +218,10 @@ # Other Targets clean: -$(RM) $(BIN_OUTPUTS__QUOTED)$(EXE_OUTPUTS__QUOTED) - -$(RM) "irqDispatch_a.obj" "irqDispatch_c.obj" "App/Controllers/AlarmLamp.obj" "App/Controllers/Buttons.obj" "App/Drivers/CPLD.obj" "App/Drivers/Comm.obj" "App/Drivers/SafetyShutdown.obj" "App/Modes/ModeFault.obj" "App/Modes/ModeInitPOST.obj" "App/Modes/ModeOpParams.obj" "App/Modes/ModePostTreat.obj" "App/Modes/ModePreTreat.obj" "App/Modes/ModePrescription.obj" "App/Modes/ModeService.obj" "App/Modes/ModeStandby.obj" "App/Modes/ModeTreatment.obj" "App/Modes/OperationModes.obj" "App/Services/CommBuffers.obj" "App/Services/FPGA.obj" "App/Services/Interrupts.obj" "App/Services/MsgQueues.obj" "App/Services/SystemComm.obj" "App/Services/SystemCommMessages.obj" "App/Services/Timers.obj" "App/Services/Utilities.obj" "App/Services/WatchdogMgmt.obj" "App/Tasks/TaskBG.obj" "App/Tasks/TaskGeneral.obj" "App/Tasks/TaskPriority.obj" "App/Tasks/TaskTimer.obj" "source/can.obj" "source/dabort.obj" "source/errata_SSWF021_45.obj" "source/esm.obj" "source/gio.obj" "source/lin.obj" "source/mibspi.obj" "source/notification.obj" - -$(RM) "source/pinmux.obj" "source/rti.obj" "source/sci.obj" "source/sys_core.obj" "source/sys_dma.obj" "source/sys_intvecs.obj" "source/sys_main.obj" "source/sys_mpu.obj" "source/sys_pcr.obj" "source/sys_phantom.obj" "source/sys_pmm.obj" "source/sys_pmu.obj" "source/sys_selftest.obj" "source/sys_startup.obj" "source/sys_vim.obj" "source/system.obj" - -$(RM) "irqDispatch_c.d" "App/Controllers/AlarmLamp.d" "App/Controllers/Buttons.d" "App/Drivers/CPLD.d" "App/Drivers/Comm.d" "App/Drivers/SafetyShutdown.d" "App/Modes/ModeFault.d" "App/Modes/ModeInitPOST.d" "App/Modes/ModeOpParams.d" "App/Modes/ModePostTreat.d" "App/Modes/ModePreTreat.d" "App/Modes/ModePrescription.d" "App/Modes/ModeService.d" "App/Modes/ModeStandby.d" "App/Modes/ModeTreatment.d" "App/Modes/OperationModes.d" "App/Services/CommBuffers.d" "App/Services/FPGA.d" "App/Services/Interrupts.d" "App/Services/MsgQueues.d" "App/Services/SystemComm.d" "App/Services/SystemCommMessages.d" "App/Services/Timers.d" "App/Services/Utilities.d" "App/Services/WatchdogMgmt.d" "App/Tasks/TaskBG.d" "App/Tasks/TaskGeneral.d" "App/Tasks/TaskPriority.d" "App/Tasks/TaskTimer.d" "source/can.d" "source/errata_SSWF021_45.d" "source/esm.d" "source/gio.d" "source/lin.d" "source/mibspi.d" "source/notification.d" "source/pinmux.d" "source/rti.d" "source/sci.d" "source/sys_dma.d" "source/sys_main.d" "source/sys_pcr.d" - -$(RM) "source/sys_phantom.d" "source/sys_pmm.d" "source/sys_selftest.d" "source/sys_startup.d" "source/sys_vim.d" "source/system.d" + -$(RM) "irqDispatch_a.obj" "irqDispatch_c.obj" "App/Controllers/AlarmLamp.obj" "App/Controllers/Buttons.obj" "App/Drivers/CPLD.obj" "App/Drivers/Comm.obj" "App/Drivers/SafetyShutdown.obj" "App/Modes/ModeFault.obj" "App/Modes/ModeInitPOST.obj" "App/Modes/ModeOpParams.obj" "App/Modes/ModePostTreat.obj" "App/Modes/ModePreTreat.obj" "App/Modes/ModePrescription.obj" "App/Modes/ModeService.obj" "App/Modes/ModeStandby.obj" "App/Modes/ModeTreatment.obj" "App/Modes/OperationModes.obj" "App/Services/AlarmMgmt.obj" "App/Services/CommBuffers.obj" "App/Services/FPGA.obj" "App/Services/Interrupts.obj" "App/Services/MsgQueues.obj" "App/Services/SystemComm.obj" "App/Services/SystemCommMessages.obj" "App/Services/Timers.obj" "App/Services/Utilities.obj" "App/Services/WatchdogMgmt.obj" "App/Tasks/TaskBG.obj" "App/Tasks/TaskGeneral.obj" "App/Tasks/TaskPriority.obj" "App/Tasks/TaskTimer.obj" "source/can.obj" "source/dabort.obj" "source/errata_SSWF021_45.obj" "source/esm.obj" "source/gio.obj" "source/lin.obj" "source/mibspi.obj" + -$(RM) "source/notification.obj" "source/pinmux.obj" "source/rti.obj" "source/sci.obj" "source/sys_core.obj" "source/sys_dma.obj" "source/sys_intvecs.obj" "source/sys_main.obj" "source/sys_mpu.obj" "source/sys_pcr.obj" "source/sys_phantom.obj" "source/sys_pmm.obj" "source/sys_pmu.obj" "source/sys_selftest.obj" "source/sys_startup.obj" "source/sys_vim.obj" "source/system.obj" + -$(RM) "irqDispatch_c.d" "App/Controllers/AlarmLamp.d" "App/Controllers/Buttons.d" "App/Drivers/CPLD.d" "App/Drivers/Comm.d" "App/Drivers/SafetyShutdown.d" "App/Modes/ModeFault.d" "App/Modes/ModeInitPOST.d" "App/Modes/ModeOpParams.d" "App/Modes/ModePostTreat.d" "App/Modes/ModePreTreat.d" "App/Modes/ModePrescription.d" "App/Modes/ModeService.d" "App/Modes/ModeStandby.d" "App/Modes/ModeTreatment.d" "App/Modes/OperationModes.d" "App/Services/AlarmMgmt.d" "App/Services/CommBuffers.d" "App/Services/FPGA.d" "App/Services/Interrupts.d" "App/Services/MsgQueues.d" "App/Services/SystemComm.d" "App/Services/SystemCommMessages.d" "App/Services/Timers.d" "App/Services/Utilities.d" "App/Services/WatchdogMgmt.d" "App/Tasks/TaskBG.d" "App/Tasks/TaskGeneral.d" "App/Tasks/TaskPriority.d" "App/Tasks/TaskTimer.d" "source/can.d" "source/errata_SSWF021_45.d" "source/esm.d" "source/gio.d" "source/lin.d" "source/mibspi.d" "source/notification.d" "source/pinmux.d" "source/rti.d" "source/sci.d" "source/sys_dma.d" "source/sys_main.d" + -$(RM) "source/sys_pcr.d" "source/sys_phantom.d" "source/sys_pmm.d" "source/sys_selftest.d" "source/sys_startup.d" "source/sys_vim.d" "source/system.d" -$(RM) "irqDispatch_a.d" "source/dabort.d" "source/sys_core.d" "source/sys_intvecs.d" "source/sys_mpu.d" "source/sys_pmu.d" -@echo 'Finished clean' -@echo ' ' Index: firmware/source/sys_main.c =================================================================== diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r1156c9be51ef9f40054860355ebee40b49ef03ca --- firmware/source/sys_main.c (.../sys_main.c) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 1156c9be51ef9f40054860355ebee40b49ef03ca) @@ -60,6 +60,7 @@ #include "Common.h" #include "AlarmLamp.h" +#include "AlarmMgmt.h" #include "Buttons.h" #include "CommBuffers.h" #include "CPLD.h" @@ -139,6 +140,7 @@ *************************************************************************/ static void initSoftware( void ) { + initAlarmMgmt(); initTimers(); initSafetyShutdown(); initCPLD();