//***************************************************************************** // (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 CddSwi_Router.c /// /// \brief Specific code for Cdd Switch Router /// /// \author ZHAO, Kai ALDE-RT/EES6 //----------------------------------------------------------------------------- //============================================================================= // Includes //============================================================================= // standard includes #include #include // module API (include path) #include // module includes (relative to API) #include <../Cfg/CddSwi_Cfg.h> #include <../Cfg/CddSwi_Router.h> #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) #include #endif //============================================================================= // Defines and Typedef //============================================================================= //----------------------------------------------------------------------------- // Start definitions of non initialized structures and unions or arrays variables //----------------------------------------------------------------------------- #define ctadCddSwi_START_SEC_VAR_NO_INIT_UNSPECIFIED #include <../Cfg/CddSwi_MemMap.h> CONST_AL tCddSwi_Router CddSwi_RouteList[CFG_SWI_OUTPUTS_CNT] = CDDSWI_RouteList; #define ctadCddSwi_STOP_SEC_VAR_NO_INIT_UNSPECIFIED #include <../Cfg/CddSwi_MemMap.h> //----------------------------------------------------------------------------- // End definitions of non initialized structures and unions or arrays variables //----------------------------------------------------------------------------- //============================================================================= // Function prototypes //============================================================================= //============================================================================= // defines //============================================================================= //============================================================================= // Function definitions //============================================================================= //----------------------------------------------------------------------------- /// \brief CddSwi_Init /// /// \descr intialisation /// /// \param void /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_Init(void) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VND7140) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDVND7140_DRIVER_CNT; ucIx++) { CddVnd7140_Init(ucIx); } #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VN7140) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDVN7140_DRIVER_CNT; ucIx++) { CddVn7140_Init(ucIx); } #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDBTS7200_DRIVER_CNT; ucIx++) { CddBts7200_Init(ucIx); } #endif } //----------------------------------------------------------------------------- /// \brief CddSwi_Cycle10ms /// /// \descr cyclic behaviour /// /// \param void /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_Cycle10ms(void) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VND7140) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDVND7140_DRIVER_CNT; ucIx++) { CddVnd7140_Cycle10ms(ucIx); } #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VN7140) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDVN7140_DRIVER_CNT; ucIx++) { CddVn7140_Cycle10ms(ucIx); } #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) CddBts7200_Cycle10ms(); #endif } //----------------------------------------------------------------------------- /// \brief CddSwi_SetTgt /// /// \descr set target value on HSS channel /// /// \param ulChnIdx /// \param unTgtVal /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_SetTgt(const uint32 ulChnIdx, const uint16 unTgtVal) { switch (CddSwi_RouteList[ulChnIdx].DrvTyp) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VND7140) != 0u) case eDrvVnd7140: CddVnd7140_SetTgt(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx, unTgtVal); break; #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VN7140) != 0u) case eDrvVn7140: CddVn7140_SetTgt(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx, unTgtVal); break; #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) case eDrvBts7200: CddBts7200_SetTgt(ulChnIdx, 0u, unTgtVal); //CddBts7200_SetTgt(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx, unTgtVal); break; #endif default: break; } } //----------------------------------------------------------------------------- /// \brief CddSwi_Rou_GetState /// /// \descr return switch state on channel /// /// \param ulChnIdx /// /// \return tisSwitchStatus //----------------------------------------------------------------------------- tisSwitchStatus CddSwi_Rou_GetState(const uint32 ulChnIdx) { tisSwitchStatus tSwitchStatus; tisCddDrvStatus tCddDrvStatus; switch (CddSwi_RouteList[ulChnIdx].DrvTyp) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VND7140) != 0u) case eDrvVnd7140: tCddSwiStatus = CddVnd7140_GetState(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx); break; #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VN7140) != 0u) case eDrvVn7140: tCddSwiStatus = CddVn7140_GetState(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx); break; #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) case eDrvBts7200: tCddDrvStatus = CddBts7200_GetState(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx); break; #endif default: break; } tSwitchStatus.unActVal = tCddDrvStatus.unActVal; tSwitchStatus.unActCurrent = tCddDrvStatus.unActCurrent; tSwitchStatus.eOpenLoad = tCddDrvStatus.eOpenLoad; tSwitchStatus.eShortGND = tCddDrvStatus.eShortGND; tSwitchStatus.eShortVBAT = tCddDrvStatus.eShortVBAT; tSwitchStatus.eHwState = tCddDrvStatus.eHwState; return tSwitchStatus; } //----------------------------------------------------------------------------- /// \brief CddSwi_DeInit /// /// \descr Deintialisation /// /// \param void /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_DeInit(void) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VND7140) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_VND7140_OUTPUTS_CNT; ucIx++) { CddVnd7140_DeInit(ucIx); } #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_VN7140) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_VN7140_OUTPUTS_CNT; ucIx++) { CddVn7140_DeInit(ucIx); } #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_BTS7200_OUTPUTS_CNT; ucIx++) { CddBts7200_DeInit(ucIx); } #endif }