Index: firmware/App/Modes/ModeService.c =================================================================== diff -u -ra303cd4258157a8fbcbd8af4dd2bbaadec1a736c -r3b70632c04247a6973960e1f37ae73eb4384a6b7 --- firmware/App/Modes/ModeService.c (.../ModeService.c) (revision a303cd4258157a8fbcbd8af4dd2bbaadec1a736c) +++ firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 3b70632c04247a6973960e1f37ae73eb4384a6b7) @@ -1,63 +1,98 @@ /************************************************************************** - * - * Copyright (c) 2019-2020 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 ModeService.c - * - * @date 19-Sep-2019 - * @author S. Nash - * - * @brief Top-level state machine for the service mode. - * - **************************************************************************/ +* +* Copyright (c) 2019-2022 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 ModeService.c +* +* @author (last) Michael Garthwaite +* @date (last) 07-Sep-2022 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ -#include "Common.h" #include "OperationModes.h" #include "ModeService.h" +/** + * @addtogroup DGServiceMode + * @{ + */ + +// ********** private definitions ********** + // ********** private data ********** +static DG_SERVICE_STATE_T serviceState = DG_SERVICE_STATE_START; ///< Currently active service state. + // ********** private function prototypes ********** -/************************************************************************* - * @brief initServiceMode - * The initServiceMode function initializes the Service Mode module. - * @details - * Inputs : none - * Outputs : Service Mode module initialized. - * @param none +/*********************************************************************//** + * @brief + * The initServiceMode function initializes the service mode module. + * @details Inputs: none + * @details Outputs: Service mode module initialized * @return none *************************************************************************/ void initServiceMode( void ) { + serviceState = DG_SERVICE_STATE_START; } -/************************************************************************* - * @brief transitionToServiceMode +/*********************************************************************//** + * @brief * The transitionToServiceMode function prepares for transition to service mode. - * @details - * Inputs : none - * Outputs : - * @param none - * @return none + * @details Inputs: none + * @details Outputs: none + * @return initial state *************************************************************************/ -void transitionToServiceMode( void ) +U32 transitionToServiceMode( void ) { + deenergizeActuators(); + + initServiceMode(); + + return serviceState; } -/************************************************************************* - * @brief execServiceMode - * The execServiceMode function executes the Service Mode state machine. - * @details - * Inputs : none - * Outputs : - * @param none - * @return none +/*********************************************************************//** + * @brief + * The execServiceMode function executes the service mode state machine. + * @details Inputs: none + * @details Outputs: Service mode state machine executed + * @return current state. *************************************************************************/ -void execServiceMode( void ) +U32 execServiceMode( void ) { + // execute current service state + switch ( serviceState ) + { + case DG_SERVICE_STATE_START: + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_SERVICE_MODE_INVALID_EXEC_STATE, serviceState ) + serviceState = DG_SERVICE_STATE_START; + break; + } + + return serviceState; } +/*********************************************************************//** + * @brief + * The getCurrentServiceState function returns the current state of the service mode. + * @details Inputs: serviceState + * @details Outputs: none + * @return the current state of service mode + *************************************************************************/ +DG_SERVICE_STATE_T getCurrentServiceState( void ) +{ + return serviceState; +} + +/**@}*/