//***************************************************************************** // (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.h /// /// \brief /// /// \descr /// //----------------------------------------------------------------------------- #ifndef SYSMON_2019_09_06_H_ #define SYSMON_2019_09_06_H_ #ifdef UNIT_TEST #include //-- printf #endif //-- UNIT_TEST #include #include #include #include #include #include #include typedef struct { uint16 OpenLoad :1; /* 0x1: OpenLoad */ uint16 ShortToGnd :1; /* 0x2: ShortCircuit GND */ uint16 ShortToUbat :1; /* 0x3: ShortCircuit BAT */ uint16 Overcurrent :1; /* 0x5: Over current */ uint16 OverThermalShutDown :1; /* 0x6: Thermal shutdown */ uint16 BoosterFault :1; /* 0x4: LED driver error */ uint16 LmmFault :1; /* 0xA: MLC LED error */ uint16 VoltageDebounceFault:1; /* 0x7: Voltage out of tolerance */ uint16 LmmCommunication :1; /* 0xB: MLC Communication error */ uint16 RCodFault :1; /* 0x8: Binning error */ uint16 NtcFault :1; /* 0x9: NTC error */ uint16 reserve :5; /* 0x9: NTC error */ }Fault_Type; typedef struct { Fault_Type LowBeam; /*LB */ Fault_Type HighBeam; /*HB */ Fault_Type DaytimeRunningLight; /*DRL */ Fault_Type PositionLight; /*Pos */ Fault_Type CorneringLight; /*CL */ Fault_Type TurnIndicator; /*TI */ Fault_Type SignalLight; /*Sig */ }LedFunction_Type; typedef struct { uint8 StatusOnCnt; uint8 StatusOffCnt; uint8 StatusSnaCnt; uint8 Status; }HWStatusDebounce; typedef struct { bool Status; uint8 Cnt; }SignalStatus; typedef struct { SignalStatus LBStatus; SignalStatus HBStatus; SignalStatus TIStatus; SignalStatus POSStatus; }FunctionValidStatus; #define SYSMON_LOWBEAM_CURRENT 257U //100U //-- todo get value, range 0..3000 mA, Unit: 2 mA #define SYSMON_LOWBEAM_PWM 30000U //-- todo get value, range 0..200, Unit: 0.5% #define SYSMON_LOWBEAM_OFF 1U #define SYSMON_LOWBEAM_ON 2U #define SYSMON_CYCLE_TIME 10U //-- cyclic 10 msec #define SYSMON_DEBOUNCE_TIME 200U //--200ms #define SYSMON_WAIT_CNT_UNTIL_DTC 10U //-- cyclic 10 msec --> zero after 100 msec #define SYSMON_CURRENT_NO_DERATING (uint16) 70U//0x0666U // No current (analog) derating means 100% [100/2^15] #define SYSMON_MSG_TIMEOUT_COUNTER (uint8) 20U #define SYSMON_MSG_TIMEOUT_COUNTER_BLINKER (uint8) 24U #define SYSMON_INTERNAL_COM_CRC_ERR_ppCddLedBuckStatusFault0 (uint8) 0x10U #define SYSMON_INTERNAL_COM_CRC_ERR_ppCddSpiStatusFault0 (uint8) 0x20U #define SYSMON_INTERNAL_COM_CRC_ERR_ppIoHwAbUserIoStatusFault0 (uint8) 0x40U #define SYSMON_MSG_TIMEOUT_ERROR_COUNTER (uint8) 18U #define SYSMON_MSG_TIMEOUT_ERROR_COUNTER_BLINKER (uint8) 22U #define NO_OF_VARIANT 4U #define NO_OF_LED_DRV_CHANNEL 12U #define SYSMON_LOWBEAM_VALID_STATE_MIN_COUNTER (uint8)2U #define SYSMON_LOWBEAM_INVALID_STATE_MIN_COUNTER (uint8)2U #define SYSMON_TURNINDICATOR_VALID_STATE_MIN_COUNTER (uint8)2U #define SYSMON_TURNINDICATOR_INVALID_STATE_MIN_COUNTER (uint8)2U #define SYSMON_TURN_ON_DELAY (uint8) 7u //70 ms delay for turning On Low Beam and Turn Indicator #define BOOSTER_VOLTAGE_MAX 49000UL #define BOOSTER_VOLTAGE_MIN 36000UL /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ /* Workaround only for A340 delivery for ZKW to deactivate LED */ /* error reaction for LED channel used with MLC matrix switches */ #define SYSMON_LED_ERROR_REACTION_DEACTIVATED_FOR_MLC //LED Status #define LED_STATUS_ON (uint8)2u #define LED_STATUS_OFF (uint8)1u #define LED_STATUS_UNKNOWN (uint8)0u //LED Error #define LED_ERR_NO_SUPPORT (uint8)0u #define LED_ERR_RESET (uint8)1u #define LED_ERR_DISABLED (uint8)2u #define LED_ERR_DIAG_IDLE (uint8)3u #define LED_ERR_STATUS_OK (uint8)4u #define LED_ERR_OPEN_LOAD (uint8)5u #define LED_ERR_SHORT_TO_GROUND (uint8)6u #define LED_ERR_SHORT_TO_UBAT (uint8)7u #define LED_ERR_UNDERVOLTAGE (uint8)8u #define LED_ERR_OVERVOLTAGE (uint8)9u #define LED_ERR_THERMAL (uint8)10u #define LED_ERR_OVERCURRENT (uint8)11u #define LED_ERR_SPI (uint8)12u #define LED_ERR_CRC (uint8)13u //ECU buck spi error #define SysMon_LEDBUCK_SPIERROR (uint8)12u //ECU internal state #define SysMon_Internalstate_Normal (uint8)0u #define SysMon_Internalstate_Mountsideunknown (uint8)1u #define SysMon_Internalstate_EcuNotCoded (uint8)2u #define SysMon_Internalstate_CodingDataInvalid (uint8)3u #define SysMon_Internalstate_FusaCodingError (uint8)4u #define SysMon_Internalstate_EccError (uint8)5u #define SysMon_Internalstate_PllUnlockError (uint8)6u #define SysMon_Internalstate_UnexpectedReset (uint8)7u #define SysMon_Internalstate_Reserved1 (uint8)8u #define SysMon_Internalstate_Reserved2 (uint8)9u #define SysMon_Internalstate_Reserved3 (uint8)10u #define SysMon_Internalstate_Reserved4 (uint8)11u #define SysMon_Internalstate_Reserved5 (uint8)12u #define SysMon_Internalstate_Reserved6 (uint8)13u #define SysMon_Internalstate_Reserved7 (uint8)13u #define SysMon_Internalstate_OtherError (uint8)15u //ECU board state #define SysMon_Boardstate_Normal (uint8)0u #define SysMon_Boardstate_LedBoosterUnderVoltage (uint8)1u #define SysMon_Boardstate_LedBoosterOverVoltage (uint8)2u #define SysMon_Boardstate_HssError (uint8)3u #define SysMon_Boardstate_SpiError (uint8)4u #define SysMon_Boardstate_VccError (uint8)5u #define SysMon_Boardstate_Reserved1 (uint8)6u #define SysMon_Boardstate_Reserved2 (uint8)7u #define SysMon_Boardstate_Reserved3 (uint8)8u #define SysMon_Boardstate_Reserved4 (uint8)9u #define SysMon_Boardstate_Reserved5 (uint8)10u #define SysMon_Boardstate_Reserved6 (uint8)11u #define SysMon_Boardstate_Reserved7 (uint8)12u #define SysMon_Boardstate_Reserved8 (uint8)13u #define SysMon_Boardstate_Reserved9 (uint8)14u #define SysMon_Boardstate_OtherError (uint8)15u //Indication of AVAC Error #define SysMon_ErrVer_TestPassed (uint8)0u #define SysMon_ErrVer_StpOpenLoad (uint8)1u #define SysMon_ErrVer_StpShortCircuit (uint8)2u #define SysMon_ErrVer_StpThermalShutdown (uint8)3u #define SysMon_ErrVer_Reserved1 (uint8)4u #define SysMon_ErrVer_Reserved2 (uint8)5u #define SysMon_ErrVer_Reserved3 (uint8)6u #define SysMon_ErrVer_TestNotComplete (uint8)7u //Actual Voltage Supply for AVAC Actuator KL30 #define SysMon_AVACActualVoltage_Invalid (uint8)255u //Fan fault #define SysMon_Fanfault_TestPassed (uint8)0u #define SysMon_Fanfault_OpenLoad (uint8)1u #define SysMon_Fanfault_ShortCircuitGND (uint8)2u #define SysMon_Fanfault_ShortCircuitBAT (uint8)3u #define SysMon_Fanfault_Reserved1 (uint8)4u #define SysMon_Fanfault_Reserved2 (uint8)5u #define SysMon_Fanfault_Reserved3 (uint8)6u #define SysMon_Fanfault_TestNotComplete (uint8)7u //FAN STATE #define SysMon_FanSTATE_OFF (uint8)0u #define SysMon_FanSTATE_ON (uint8)1u //Indication of AVAC Safety Position #define SysMon_SPStateVer_FALSE (uint8)0u #define SysMon_SPStateVer_TRUE (uint8)1u //Actual AVAC Motor Status #define SysMon_StatusVer_NotMoving (uint8)0u #define SysMon_StatusVer_Moving (uint8)1u #define SysMon_StatusVer_Steploss (uint8)2u #define SysMon_StatusVer_Invalid (uint8)3u //AVAC Actual Position #define SysMon_ValueVer_MotorErrorOff 0x3FD #define SysMon_ValueVer_ReferenceRun 0x3FE #define SysMon_ValueVer_InitialState 0x3FF //LED ERROR #define SysMon_MLC_Communication_error 0XB //LMM Segment max #define SYSMON_LED_MLC_SegmentIdxmax (uint8)12U #define PEER_MOUNTING_SIDE_DEBOUNCE_TIME 20u #if defined(__cplusplus) extern "C" { #endif //============================================================================= // Start declaration or definitions of functions //============================================================================= #define ctaaSysMon_START_SEC_CODE #include "ctaaSysMon_MemMap.h" // -------------- Start function declarations or definitions. //-- public ----- void riSysMonInit(void); void rdSysMonDeInit(void); void rpSysMon10ms(void); void roSysMon_SetB2CanBusOff(void); void roSysMon_ResetB2CanBusOff(void); void SysMon_SetB2CanBusOff(void); FUNC(Std_ReturnType, ctaaSysMon_CODE) roSysMon_GetSafetyCodingErrorReason( P2VAR(tieSafetyCodingErrorReason, AUTOMATIC, RTE_APPL_DATA) eCodingErrorReason); void SysMon_ResetB2CanBusOff(void); SysMon_EnumEcuMountingSide SysMon_EcuMountingSide(void); boolean SysMon_isActiveBusOff(void); boolean SysMon_isDtcAllowed(void); void SysMon_ASIL_Notlauf_TriggerCddLed_LowBeam(uint8 value); boolean SysMon_IsCurrentDerated(uint32 ulLsIdx); boolean SysMon_IsVBoostValid(void); boolean SysMonASIL_Get_boNotlaufLowBeam(void); boolean SysMon_IsLowBeamLs(uint32 ulLsIdx); uint32 SysMon_Get_VBoost(uint8 indx); //void SysMon_Reset_SysMon_TimeOut_CON_VEH_CycleCtr(void); void SysMon_Reset_SysMon_TimeOut_VED_CMD_CycleCtr(void); void SysMon_LightCtrlMsg1_Received(void); void SysMon_LightCtrlMsg2_Received(void); void SysMon_VedCmd_Received(void); //void SysMon_Reset_SysMon_TimeOut_CtrFnIdc(void); uint8 SysMon_GetBuckStatusFault_ASIL_ErrInternalCom(void); uint8 SysMon_GetSpiStatusFault_ASIL_ErrInternalCom(void); uint8 SysMon_GetIoStatusFault0_ErrInternalCom(void); void SysMon_SetLsStatusCRCErrorppCddLedBuckStatusFault0(boolean boIsErrorActive); void SysMon_SetLsStatusCRCErrorppCddSpiStatusFault0(boolean boIsErrorActive); void SysMon_SetLsStatusCRCErrorppIoHwAbUserIoStatusFault0(boolean boIsErrorActive); void SysMon_ReadFusi_Min_PWM_Current_RTE(void); boolean SysMon_IsLowBeamOrTurnIndicatorLs(uint32 ulLsIdx); boolean SysMon_IsTurnIndicatorLs(uint32 ulLsIdx); SysMon_EnumSignalState SysMon_GetCtrFnIdcState(void); SysMon_EnumSysVoltageStatus SysMon_GetSysVoltageStatus(void); void SysMonB2CanRxStLpExFe2LhMsg(void); void SysMonB2CanRxStLpExFe2RhMsg(void); SysMon_EnumTurnIndicatorState Get_SysMon_Turn_Indicator_Valid_Side_Check(void); //tieCtrSleepMode SysMon_GetSysMon_CtrSleepMode(void); //TODO SysMon remove workaround for RTE SleepMode to FctR when RTE interface available //extern Std_ReturnType Rte_Write_ctaaFctR_ppFctRMode_eSleepMode(tieCtrSleepMode Data); bool SysMon_IsErrorDiagEnabled(void); void Set_SysMon_boTypeVehicleReceivedValid(boolean boValue); boolean Get_SysMon_boTypeVehicleReceivedValid(void); boolean Get_SysMon_TypeVehicleSignalFeedback(void); boolean SysMon_Data_IsCodingDataValid(void); void GetRhsEcuFaultInfo(tRhsEcuFaultInfo *pRhsEcuFaultInfo); void GetLhsEcuFaultInfo(tLhsEcuFaultInfo *pLhsEcuFaultInfo); boolean SysMon_isWakeupLineActive(void); boolean SysMon_IsBoardFaultForKL15(void); boolean SysMon_IsFuSaCodingValid(void); boolean SysMon_IsCanBusOff(void); uint8 SysMon_Get_VBoostError(void); boolean SysMon_IsSystemUnderVoltage(void); boolean SysMon_IsSystemOverVoltage(void); boolean SysMon_IsFanError(void); boolean SysMon_IsHSS2Error(void); boolean SysEcuNotCoded(void); boolean SysMon_IsVccX3ShortToGND(void); boolean SysMon_IsVccX3ShortToVBAT(void); void SysMon_IsAINErrorFeedBack_L(tesHLM_L_STATES_Info *LStatusInfo); void SysMon_IsAINErrorFeedBack_R(tesHLM_R_STATES_Info *RStatusInfo); void SysMonFaultReportForDTC(LedFunction_Type *LightFunction, uint8 Channel); void BuckFaultRecording(Fault_Type *LightFunction, uint8 Channel); void BoosterFaultRecording(Fault_Type *LightFunction); void LMMFaultRecording(Fault_Type *LightFunction, uint8 Channel); void RcodandRSensFaultRecording(Fault_Type *LightFunction, uint8 Channel); boolean SysMon_LedDiag_IsVBoostUndervoltage(void); boolean SysMon_LedDiag_IsVBoostOvervoltage(void); uint8 SysMon_CheckInternalState(void); uint8 SysMon_CheckBoardState(void); void SysMonHardWareDiagnose(void); void IGStatusCheck(void); void HWInputDebounce(uint32 HWinput, HWStatusDebounce *HardWareStatus); void HWStatusInit(void); void SysMon_CheckSafetyParameters(uint32 ChannelIdx); void CheckSafetyParameters(void); void CheckSignalValidStatus(tesLightControlCommand *SysMon_LightCtrlCmd); void CheckSignalValid(SignalStatus *Function); void CheckSignalInValid(SignalStatus *Function); // -------------- Stop function declarations or definitions. #define ctaaSysMon_STOP_SEC_CODE #include "ctaaSysMon_MemMap.h" //============================================================================= // End declaration or definitions of functions //============================================================================= //============================================================================= // Start definitions of uninitialized unspecified variables //============================================================================= #define ctaaSysMon_START_SEC_VAR_NO_INIT_UNSPECIFIED #include "ctaaSysMon_MemMap.h" // -------------- Start variable definitions. extern uint8 SysMon_ucLightCtrlMsg2TimeOutCntr; extern uint8 SysMon_ucLightCtrlMsg1TimeOutCntr; extern uint8 SysMon_ucVedCmdTimeOutCntr; extern boolean IsLightSourceErrorFree ; extern const tRomPara_CodingArea applicationCodingData; extern tieEcuNmModes SysMon_EcuNmModes; extern tisLowBeamFct SysMonLowBeamFctReqPrev; extern boolean SysMon_bLBDelayStart; extern tisMsgCrcSqcErr SysMon_MsgCrcSqcErr; extern tisLsSafetyStatusErrorArr SysMon_LsSafetyStatusError; extern tisLsSafetyStatusErrorArr SysMon_LedErrorTypes; extern tisSysVoltStatus SysMon_SysVoltStatus; extern tisCddLedStatus_ASIL SysMon_CddLedStatus_ASIL; extern tisHssStatusErrorArr SysMon_HssStatusError; extern boolean SysMon_boLightCtrlError; extern uint8 SysMon_ucUnknownMountingLeft; extern uint8 SysMon_ucUnknownMountingRight; extern tSysMonCounterMonitor SysMon_ExepcetedMountSideRight; extern tSysMonCounterMonitor SysMon_ExepcetedMountSideLeft; extern uint8 ucErrorIndication; extern tSysMonCounterMonitor SysMon_VehicleInfoCommunication_Error; //monitor VehicleInfo massage timeout extern tSysMonCounterMonitor SysMon_AFSCommandCommunication_Error; //monitor AFSCommand massage timeout extern tSysMonCounterMonitor SysMon_MatrixHBCommandCommunication_Error; //monitor MatrixHBCommand massage timeout // -------------- Stop variable definitions. #define ctaaSysMon_STOP_SEC_VAR_NO_INIT_UNSPECIFIED #include "ctaaSysMon_MemMap.h" //============================================================================= // End definitions of uninitialized unspecified variables //============================================================================= #if defined(__cplusplus) } #endif #endif //-- SYSMON_2019_09_06_H_