Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -r61716bc97ecca8af1ec560333844a8cf602eccb0 -r2892e3f528d76f45719b7124358e9d242bf27172 --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision 61716bc97ecca8af1ec560333844a8cf602eccb0) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision 2892e3f528d76f45719b7124358e9d242bf27172) @@ -88,6 +88,12 @@ static OVERRIDE_U32_T fansPublishInterval = { FANS_DATA_PUBLISH_INTERVAL, FANS_DATA_PUBLISH_INTERVAL, 0, 0 }; ///< Fans publish time interval override +// TODO for testing remove +BOOL isTest = FALSE; +U32 alarmTime = 0; +U32 alarmElapsed = 0; +// TODO for testing remove + static FANS_EXEC_STATES_T handleExecStateWaitForPOST( void ); static FANS_EXEC_STATES_T handleExecStateRun( void ); @@ -135,6 +141,12 @@ fansStatus.rpm[ fan ].override = OVERRIDE_RESET; } + // TODO for testing remove + isTest = FALSE; + alarmTime = 0; + alarmElapsed = 0; + // TODO for testing remove + // Initialize a persistent alarm for fans RPM out of range initPersistentAlarm( ALARM_ID_HD_FAN_RPM_OUT_OF_RANGE, FANS_MAX_ALLOWED_RPM_OUT_OF_RANGE_INTERVAL, FANS_MAX_ALLOWED_RPM_OUT_OF_RANGE_INTERVAL ); } @@ -427,6 +439,17 @@ { rpm = getMeasuredFanRPM( fan ); isFanRPMOutOfRange |= ( ( rpm < fansMinAllowedRPM ) || ( rpm > fansMaxAllowedRPM ) ? TRUE : FALSE ); + + // TODO test code + if ( (TRUE == isFanRPMOutOfRange) && (alarmTime == 0) ) + { + alarmTime = getMSTimerCount(); + } + else if ( FALSE == isFanRPMOutOfRange) + { + alarmTime = 0; + } + // TODO test code } if ( FALSE == hasAlarmBeenRaised ) @@ -438,6 +461,8 @@ SET_ALARM_WITH_1_F32_DATA( ALARM_ID_HD_FAN_RPM_OUT_OF_RANGE, rpm ) // Set the alarm flag to TRUE hasAlarmBeenRaised = TRUE; + + alarmElapsed = calcTimeSince(alarmTime); // TODO test code } // If the alarm has been raised but the start time of the alarm has not been set, set the alarm start timer if ( ( TRUE == hasAlarmBeenRaised ) && ( 0 == rpmAlarmStartTime ) ) @@ -511,6 +536,7 @@ data.fansTargetRPM = fansStatus.targetRPM; data.fanInlet1RPM = getMeasuredFanRPM( FAN_INLET_1 ); data.rpmAlarmTimeOffset = getRPMAlarmStartTimeOffset(); + data.alarmElapsedTime = alarmElapsed; broadcastData( MSG_ID_HD_FANS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( FANS_DATA_T ) );