//***************************************************************************** // (C) Automotive Lighting Reutlingen GmbH // Tuebinger Strasse 123, 72762 Reutlingen, Germany // // Automotive Lighting Reutlingen GmbH owns all the rights to this work. // This work shall not be copied, reproduced, used, modified, transferred // or its information shall not be disclosed without the prior written // authorization of Automotive Lighting Reutlingen GmbH. //***************************************************************************** //----------------------------------------------------------------------------- /// \file Sysmon.c /// /// \brief Specific code for System Monitor /// /// \author //----------------------------------------------------------------------------- //============================================================================= // Standard / system header file includes //============================================================================= #include "AL_Helper/AL_Helper.h" //============================================================================= // Project-specific header file includes //============================================================================= #include "SysMon/Api/SysMon_Rte.h" #include "SysMon/SysMon.h" #include "SysMon/SysMon_Failsafe.h" #include "SysMon/SysMon_Feedback.h" //============================================================================= // static variables //============================================================================= //============================================================================= // start definitions of uninitialized array or structure variables //============================================================================= #define ctaaSysMon_START_SEC_VAR_ZERO_INIT_UNSPECIFIED #include "ctaaSysMon_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */ STATIC_AL uint8 C_Time100ms; STATIC_AL uint8 C_Time1s; #define ctaaSysMon_STOP_SEC_VAR_ZERO_INIT_UNSPECIFIED #include "ctaaSysMon_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */ // -------------- Stop variable definitions. //============================================================================= // stop definitions of uninitialized array or structure variables //============================================================================= #ifdef UNIT_TEST STATIC_AL uint8 SysMon_DeData = 0; #endif // -------------- Start funcrion declarations or definitions. //============================================================================= // Function prototypes //============================================================================= STATIC_AL void SysMon_Init(void); STATIC_AL void SysMon_DeInit(void); STATIC_AL void SysMon_Cycle10ms(void); STATIC_AL void SysMon_DataInit(void); STATIC_AL void SysMon_DataInit(void); STATIC_AL void SysMon_Time10ms(void); STATIC_AL void SysMon_Time100ms(void); STATIC_AL void SysMon_Time1s(void); //============================================================================= // Function definitions //============================================================================= #define ctaaSysMon_START_SEC_CODE #include "ctaaSysMon_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */ //----------------------------------------------------------------------------- /// \brief initialisation runnable /// /// \descr Call init function Sysmon_Init() /// Calling once at start up. /// /// \param void /// /// \return void //----------------------------------------------------------------------------- void Rte_riSysMonInit(void) { SysMon_Init(); } //----------------------------------------------------------------------------- /// \brief cyclic runnable /// /// \descr Call cyclic function Sysmon_Cycle10ms() every 10ms /// /// \param void /// /// \return void //----------------------------------------------------------------------------- void Rte_rpSysmon10ms(void) { SysMon_Cycle10ms(); C_Time100ms++; if(C_Time100ms >= 10) { C_Time100ms = 0; /* 100ms count */ SysMon_Time100ms(); C_Time1s++; if(C_Time1s >= 10) { C_Time1s = 0; /* 1s count */ SysMon_Time1s(); } } SysMon_Time10ms(); } //----------------------------------------------------------------------------- /// \brief deinitialisation runnable /// /// \descr Call deinit function Sysmon_DeInit() /// /// \param void /// /// \return void //----------------------------------------------------------------------------- void Rte_rdSysMonDeInit(void) { SysMon_DeInit(); } //----------------------------------------------------------------------------- /// \brief Init-function to intialize System Monitor /// /// \descr Sysmon_Init()initializes static variables /// Calling once at start up. /// /// \param none /// /// \return none //----------------------------------------------------------------------------- STATIC_AL void SysMon_Init(void) { SysMon_DataInit(); SysMon_MCURestData_Init(); /* Initialize the MCU reset information from data flash */ SysMon_Feedback_EnaTime_Init(); SysMon_Failsafe_DiagEnaTime_Init(); /* Initialize the failsafe diagnose enable time */ SysMon_Failsafe_ResetReasonWriteEnaTime_Init(); /* Initialize the Reset Reason Write enable time */ SysMon_AllDiagpStatus_Init(); /* Initialize all diagnose staus time */ SysMon_DTC_Init(); /* Initialize the DTC */ SysMon_DiagCount_Init(); /* Initialize the coding diagnose count */ } //----------------------------------------------------------------------------- /// \brief cyclic function to control the System Monitor /// /// \descr Sysmon_Cycle() reads RTE-Port ? to get target value /// processes Diagnose Control, writes RTE-Port ?, /// call RTE ? /// Calling cyclicaly every 10ms /// /// \param none /// /// \return none //----------------------------------------------------------------------------- STATIC_AL void SysMon_Cycle10ms(void) { SysMon_Feedback(); SysMon_DiagError_Handling(); SysMon_LightFuncFS_Output(); } //----------------------------------------------------------------------------- /// \brief 10ms cyclic function to decrease the time /// /// \descr Sysmon_Cycle() /// /// \param none /// /// \return none //----------------------------------------------------------------------------- STATIC_AL void SysMon_Time10ms(void) { SysMon_Failsafe_10ms(); SysMon_Feedback_10ms(); } //----------------------------------------------------------------------------- /// \brief 100ms cyclic function to control the System Monitor /// /// \descr Sysmon_Cycle() /// /// \param none /// /// \return none //----------------------------------------------------------------------------- STATIC_AL void SysMon_Time100ms(void) { // set DTC SysMon_DTCHandling(); SysMon_Failsafe_100ms(); SysMon_Feedback_100ms(); } //----------------------------------------------------------------------------- /// \brief 1s cyclic function to control the System Monitor /// /// \descr Sysmon_Cycle() /// /// \param none /// /// \return none //----------------------------------------------------------------------------- STATIC_AL void SysMon_Time1s(void) { SysMon_Failsafe_1s(); } //----------------------------------------------------------------------------- /// \brief deinitialize the SysMon before going to sleep /// /// \descr /// /// /// \param none /// /// \return none //----------------------------------------------------------------------------- STATIC_AL void SysMon_DeInit(void) { #ifdef UNIT_TEST SysMon_DeData = 1; #endif } //----------------------------------------------------------------------------- /// \brief deinitialize the High Side Switch driver before going to sleep /// /// \descr set the Light Function request to normal /// /// \param void /// /// \return void //----------------------------------------------------------------------------- STATIC_AL void SysMon_DataInit(void) { SysMon_FailsafeAct_Init(); /* initialize LF Failsafe act */ SysMon_Feedback_Data_Init(); } #define ctaaSysMon_STOP_SEC_CODE #include "ctaaSysMon_MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */