Index: firmware/App/Drivers/SafetyShutdown.c =================================================================== diff -u -r090cfb22a7c0b4738299c3fb411ca77aaba8d968 -rfcc4687781eca7040763ca83b2c1b1ea73ae6f21 --- firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision 090cfb22a7c0b4738299c3fb411ca77aaba8d968) +++ firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision fcc4687781eca7040763ca83b2c1b1ea73ae6f21) @@ -17,7 +17,7 @@ #include "mibspi.h" -//#include "InternalADC.h" +#include "InternalADC.h" #include "Messaging.h" #include "SafetyShutdown.h" #include "Timers.h" @@ -57,8 +57,8 @@ /*********************************************************************//** * @brief - * The initSafetyShutdown function initializes the safety shutdown module. - * The safety shutdown module is to cut down the 24v DC supply to majority of actuators + * The initSafetyShutdown function initializes the safety shutdown unit. + * The safety shutdown unit is to cut down the 24v DC supply to majority of actuators * when system detects critical faulty conditions. * @details \b Inputs: none * @details \b Outputs: safetyShutdownActivated, safetyShutdownOverrideResetState, @@ -135,13 +135,13 @@ // // Verify 24V is down when w.d. expired // if ( ( v24 > MAX_24V_LEVEL_ON_SAFETY_SHUTDOWN ) || ( isolatedV24 > MAX_ISOLATED_24V_LEVEL_ON_SS_EXPIRED ) ) // { -// SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_SAFETY_SHUTDOWN_POST_TEST_FAILED, 1.0, v24 ); +// //SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_SAFETY_SHUTDOWN_POST_TEST_FAILED, 1.0, v24 ); // safetyShutdownSelfTestStatus = SELF_TEST_STATUS_FAILED; // } - safetyShutdownSelfTestTimerCount = getMSTimerCount(); - clear_saftety_shutdown(); - safetyShutdownActivated = FALSE; - safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_RECOVER; +// safetyShutdownSelfTestTimerCount = getMSTimerCount(); +// clear_saftety_shutdown(); +// safetyShutdownActivated = FALSE; +// safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_RECOVER; } break; @@ -155,15 +155,15 @@ // if ( ( v24 < MIN_24V_LEVEL_ON_SAFETY_RECOVER ) || ( isolatedV24 < MAX_ISOLATED_24V_LEVEL_ON_SS_EXPIRED ) ) // { // // TODO - If issue persisted talk with systems why 24V does not recover fully. -// SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_SAFETY_SHUTDOWN_POST_TEST_FAILED, 2.0, v24 ); +// //SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DD_SAFETY_SHUTDOWN_POST_TEST_FAILED, 2.0, v24 ); // safetyShutdownSelfTestStatus = SELF_TEST_STATUS_FAILED; // } // else // { // safetyShutdownSelfTestStatus = SELF_TEST_STATUS_PASSED; // } - safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_COMPLETE; - result = safetyShutdownSelfTestStatus; +// safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_COMPLETE; +// result = safetyShutdownSelfTestStatus; } break; @@ -194,65 +194,55 @@ safetyShutdownSelfTestState = SAFETY_SHUTDOWN_SELF_TEST_STATE_START; } -/*********************************************************************//** - * @brief - * The testSetSafetyShutdownOverride function overrides the HD safety shutdown. - * @details \b Inputs: none - * @details \b Outputs: HD safety shutdown overridden - * @param value TRUE to activate safety shutdown, FALSE to de-activate it - * @return TRUE if override successful, FALSE if not - *************************************************************************/ -BOOL testSetSafetyShutdownOverride( U32 value ) -{ - BOOL result = FALSE; + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetResetSafetyShutdownOverride function set/reset safety shutdown. + * @details \b Inputs: tester logged in + * @details \b Outputs: safetyShutdownActivated + * @param message set message from Dialin which includes the safety shutdown + * value and set/reset flag. + * @return TRUE if set/reset request is successful, FALSE if not + *************************************************************************/ +BOOL testSetResetSafetyShutdownOverride( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify payload length is valid + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) + { + TEST_OVERRIDE_PAYLOAD_T payload; + + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + + if ( ( payload.state.u32 > 0 ) && ( payload.reset != TRUE ) ) + { + // remember natural state before override so we can reset + safetyShutdownOverrideResetState = safetyShutdownActivated; + activateSafetyShutdown(); + } + else if ( ( TRUE == safetyShutdownOverrideResetState ) && ( payload.reset != FALSE ) ) + { + activateSafetyShutdown(); + } + else + { + safetyShutdownActivated = FALSE; + clear_saftety_shutdown(); + } + + result = TRUE; + } + + return result; +} + + - if ( TRUE == isTestingActivated() ) - { - // remember natural state before override so we can reset - safetyShutdownOverrideResetState = safetyShutdownActivated; - // override safety shutdown signal - if ( value > 0 ) - { - activateSafetyShutdown(); - } - else - { - safetyShutdownActivated = FALSE; - clear_saftety_shutdown(); - } - result = TRUE; - } - return result; -} - -/*********************************************************************//** - * @brief - * The testResetSafetyShutdownOverride function resets the override of the - * HD safety shutdown. - * @details \b Inputs: none - * @details \b Outputs: shutdown override reset - * @return TRUE if override reset successful, FALSE if not - *************************************************************************/ -BOOL testResetSafetyShutdownOverride( void ) -{ - BOOL result = FALSE; - - if ( TRUE == isTestingActivated() ) - { - if ( TRUE == safetyShutdownOverrideResetState ) - { - activateSafetyShutdown(); - } - else - { - safetyShutdownActivated = FALSE; - clear_saftety_shutdown(); - } - result = TRUE; - } - - return result; -} - /**@}*/