Index: firmware/App/Drivers/SafetyShutdown.c =================================================================== diff -u -rf7c714a1a09b10d85a8b013712532d37b4d7b97a -rac4caa05957f8ff84a5e4c2b1ef8fcf92500411b --- firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision f7c714a1a09b10d85a8b013712532d37b4d7b97a) +++ firmware/App/Drivers/SafetyShutdown.c (.../SafetyShutdown.c) (revision ac4caa05957f8ff84a5e4c2b1ef8fcf92500411b) @@ -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; + + result = TRUE; + + 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(); + } + } + + 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; -} - /**@}*/