Index: firmware/App/Controllers/Fans.c =================================================================== diff -u -re0cdf49eb0f54239e5d765282e0952cea7ded1bd -r8ea2ea3096334f18a1bd38018bc4359e16374d83 --- firmware/App/Controllers/Fans.c (.../Fans.c) (revision e0cdf49eb0f54239e5d765282e0952cea7ded1bd) +++ firmware/App/Controllers/Fans.c (.../Fans.c) (revision 8ea2ea3096334f18a1bd38018bc4359e16374d83) @@ -81,7 +81,7 @@ static U32 fansPublishCounter; ///< Fans data publish interval counter. static BOOL isPOSTComplete = FALSE; ///< Flag that indicates whether POST is complete or not. static BOOL hasAlarmBeenRaised = FALSE; ///< Flag that indicates whether the RPM out of range alarm been raise. -static OVERRIDE_U32_T rpmAlarmStartTimeOffset = { 0, 0, 0, 0 }; ///< RPM out of range alarm start time offset. +static U32 rpmAlarmStartTimeOffset; ///< RPM out of range alarm start time offset. static U32 rpmAlarmStartTime = 0; ///< RPM alarm start time. static DG_FANS_CAL_RECORD_T fansCalReocrd; ///< Fans calibration record. @@ -101,7 +101,6 @@ static F32 getMaximumTemperature( void ); static void convertTogglePeriod2RPM( void ); static void monitorFans( void ); -static U32 getRPMAlarmStartTimeOffset( void ); static void publishFansData( void ); /*********************************************************************//** @@ -118,21 +117,18 @@ FAN_NAMES_T fan; // Initialize the variables - fansExecState = FANS_EXEC_STATE_WAIT_FOR_POST_STATE; - fansControlCounter = 0; - fansPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; - isPOSTComplete = FALSE; - hasAlarmBeenRaised = FALSE; - rpmAlarmStartTime = 0; - rpmAlarmStartTimeOffset.data = 0; - rpmAlarmStartTimeOffset.ovData = 0; - rpmAlarmStartTimeOffset.ovInitData = 0; - rpmAlarmStartTimeOffset.override = OVERRIDE_RESET; - fansStatus.dutyCycle.data = 0.0; - fansStatus.dutyCycle.ovData = 0.0; - fansStatus.dutyCycle.ovInitData = 0.0; - fansStatus.dutyCycle.override = OVERRIDE_RESET; - fansStatus.targetRPM = 0.0; + fansExecState = FANS_EXEC_STATE_WAIT_FOR_POST_STATE; + fansControlCounter = 0; + fansPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; + isPOSTComplete = FALSE; + hasAlarmBeenRaised = FALSE; + rpmAlarmStartTime = 0; + rpmAlarmStartTimeOffset = 0; + fansStatus.dutyCycle.data = 0.0; + fansStatus.dutyCycle.ovData = 0.0; + fansStatus.dutyCycle.ovInitData = 0.0; + fansStatus.dutyCycle.override = OVERRIDE_RESET; + fansStatus.targetRPM = 0.0; // Initialize the fans for ( fan = FAN_INLET_1; fan < NUM_OF_FANS_NAMES; fan++ ) @@ -505,43 +501,19 @@ // and remain silent for a defined period of time. else { - // Get the offset time since the last alarm. If the offset time has been overridden, then do not include the time that the alarm was raised first. - // Overrides are used to verify the code so what is sent to the firmware from override is intended to be the actual time so check whether the alarm is - // raised properly or not. Adding the start time of the alarm might cause inaccuracy in the verification process. - // For instance, if 86390 seconds is overridden to make sure the alarm is not raise before 24 hours or 86400, if the rpmAlarmStartTime is added to it - // it might make the time to be greater than 86400 seconds and therefore the alarm is raised again while it is not expected. - U32 offsetTime = getRPMAlarmStartTimeOffset(); - U32 elapsedTime = ( OVERRIDE_KEY == rpmAlarmStartTimeOffset.override ? offsetTime : calcTimeSince( rpmAlarmStartTime ) + offsetTime ); + S32 elapsedTime = rpmAlarmStartTime - rpmAlarmStartTimeOffset; - if ( elapsedTime >= SECONDS_IN_A_DAY * MS_PER_SECOND ) + if ( calcTimeSince( elapsedTime ) >= SECONDS_IN_A_DAY * MS_PER_SECOND ) { - hasAlarmBeenRaised = FALSE; - rpmAlarmStartTime = 0; + hasAlarmBeenRaised = FALSE; + rpmAlarmStartTime = 0; + rpmAlarmStartTimeOffset = 0; } } } /*********************************************************************//** * @brief - * The getRPMAlarmStartTimeOffset function gets the RPM alarm start time offset in MS. - * @details Inputs: rpmAlarmStartTimeOffset - * @details Outputs: none - * @return the RPM alarm start time offset - *************************************************************************/ -static U32 getRPMAlarmStartTimeOffset( void ) -{ - U32 startTime = rpmAlarmStartTimeOffset.data; - - if ( OVERRIDE_KEY == rpmAlarmStartTimeOffset.override ) - { - startTime = rpmAlarmStartTimeOffset.ovData; - } - - return startTime; -} - -/*********************************************************************//** - * @brief * The publishFansData function publishes the fans data at the specified * time interval. * @details Inputs: fansPublishCounter, fansPublishInterval @@ -562,7 +534,7 @@ fansData.fanOutlet1RPM = getMeasuredFanRPM( FAN_OUTLET_1 ); fansData.fanOutlet2RPM = getMeasuredFanRPM( FAN_OUTLET_2 ); fansData.fanOutlet3RPM = getMeasuredFanRPM( FAN_OUTLET_3 ); - fansData.rpmAlarmTimeOffset = getRPMAlarmStartTimeOffset(); + fansData.rpmAlarmTimeOffset = rpmAlarmStartTimeOffset; broadcastData( MSG_ID_DG_FANS_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&fansData, sizeof( FANS_DATA_T ) ); @@ -676,54 +648,27 @@ /*********************************************************************//** * @brief - * The testSetFanRPMAlarmStartTimeOffsetOverride function overrides the RPM alarm - * start time offset. + * The testSetFanRPMAlarmStartTimestamp function set the fan RPM alarm start + * time offset. * @details Inputs: none * @details Outputs: rpmAlarmStartTimeOffset - * @param seconds seconds to override + * @param seconds the seconds the time to be offset * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetFanRPMAlarmStartTimeOffsetOverride( U32 seconds ) +BOOL testSetFanRPMAlarmStartTimestamp( U32 seconds ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - rpmAlarmStartTimeOffset.ovData = seconds * MS_PER_SECOND; - rpmAlarmStartTimeOffset.override = OVERRIDE_KEY; - - result = TRUE; + rpmAlarmStartTimeOffset = seconds * MS_PER_SECOND; } return result; } /*********************************************************************//** * @brief - * The testResetFanRPMAlarmStartTimeOffsetOverride function resets the RPM alarm - * start time offset override. - * @details Inputs: none - * @details Outputs: rpmAlarmStartTimeOffset - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testResetFanRPMAlarmStartTimeOffsetOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - rpmAlarmStartTimeOffset.override = OVERRIDE_RESET; - rpmAlarmStartTimeOffset.ovData = 0; - rpmAlarmStartTimeOffset.data = 0; - - result = TRUE; - } - - return result; -} - -/*********************************************************************//** - * @brief * The testSetFansDutyCycleOverride function overrides fans duty cycle * @details Inputs: none * @details Outputs: fansStatus Index: firmware/App/Controllers/Fans.h =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r8ea2ea3096334f18a1bd38018bc4359e16374d83 --- firmware/App/Controllers/Fans.h (.../Fans.h) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Controllers/Fans.h (.../Fans.h) (revision 8ea2ea3096334f18a1bd38018bc4359e16374d83) @@ -62,15 +62,14 @@ F32 getMeasuredFanRPM( FAN_NAMES_T fan ); +BOOL testSetFanRPMAlarmStartTimestamp( U32 seconds ); + BOOL testSetFanPublishIntervalOverride( U32 value ); BOOL testResetFanPublishIntervalOverride( void ); BOOL testSetFanRPMOverride( U32 fanId, F32 rpm ); BOOL testResetFanRPMOverride( U32 fanId ); -BOOL testSetFanRPMAlarmStartTimeOffsetOverride( U32 seconds ); -BOOL testResetFanRPMAlarmStartTimeOffsetOverride( void ); - BOOL testSetFansDutyCycleOverride( F32 value ); BOOL testResetFansDutyCycleOverride( void ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r8ea2ea3096334f18a1bd38018bc4359e16374d83 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 8ea2ea3096334f18a1bd38018bc4359e16374d83) @@ -1149,8 +1149,8 @@ handleTestAlarmInfoSendIntervalOverrideRequest( message ); break; - case MSG_ID_DG_FAN_RPM_ALARM_START_TIME_OFFSET_OVERRIDE: - handleTestFansRPMAlarmStartTimeOffsetOverrideRequest( message ); + case MSG_ID_DG_SET_FANS_RPM_ALARM_START_TIME_OFFSET: + handleTestFansRPMAlarmStartTimeOffsetRequest( message ); break; case MSG_ID_DG_GET_SW_CONFIG_RECORD: Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r8ea2ea3096334f18a1bd38018bc4359e16374d83 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 8ea2ea3096334f18a1bd38018bc4359e16374d83) @@ -3251,31 +3251,25 @@ /*********************************************************************//** * @brief - * The handleTestFansRPMAlarmStartTimeOverrideRequest function handles a - * request to override the fan RPM alarm start time. + * The handleTestFansRPMAlarmStartTimeOffsetRequest function handles a + * request to set the fans RPM alarm start time offset. * @details Inputs: none * @details Outputs: message handled - * @param message a pointer to the message to handle + * @param message : a pointer to the message to handle * @return none *************************************************************************/ -void handleTestFansRPMAlarmStartTimeOffsetOverrideRequest( MESSAGE_T *message ) +void handleTestFansRPMAlarmStartTimeOffsetRequest( MESSAGE_T *message ) { - TEST_OVERRIDE_PAYLOAD_T payload; + U32 rpmTimeOffset; + BOOL result = FALSE; - // verify payload length - if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) + // Verify payload length + if ( sizeof(U32) == message->hdr.payloadLen ) { - memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + memcpy( &rpmTimeOffset, message->payload, sizeof(U32) ); - if ( FALSE == payload.reset ) - { - result = testSetFanRPMAlarmStartTimeOffsetOverride( payload.state.u32 ); - } - else - { - result = testResetFanRPMAlarmStartTimeOffsetOverride(); - } + result = testSetFanRPMAlarmStartTimestamp( rpmTimeOffset ); } // Respond to request Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r8ea2ea3096334f18a1bd38018bc4359e16374d83 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 8ea2ea3096334f18a1bd38018bc4359e16374d83) @@ -356,8 +356,8 @@ // MSG_ID_DG_DRAIN_PUMP_MEASURED_RPM_OVERRIDE void handleSetDrainPumpMeasuredRPMOverrideRequest( MESSAGE_T *message ); -// MSG_ID_DG_FAN_RPM_ALARM_START_TIME_OFFSET_OVERRIDE -void handleTestFansRPMAlarmStartTimeOffsetOverrideRequest( MESSAGE_T *message ); +// MSG_ID_DG_SET_FANS_RPM_ALARM_START_TIME_OFFSET +void handleTestFansRPMAlarmStartTimeOffsetRequest( MESSAGE_T *message ); // MSG_ID_DG_FANS_DUTY_CYCLE_OVERRIDE void handleSetFansDutyCycleOverrideRequest( MESSAGE_T *message );