//----------------------------------------------------------------------------- /// \file CddSwi_Router.c /// /// \brief Specific code for Cdd Switch Router /// /// \author MES-LYG //----------------------------------------------------------------------------- //============================================================================= // Includes //============================================================================= // standard includes #include #include // module API (include path) #include // module includes (relative to API) #include #include #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS7200) != 0u) #include #endif #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) #include #endif //============================================================================= // Defines and Typedef //============================================================================= //----------------------------------------------------------------------------- // Start definitions of non initialized structures and unions or arrays variables //----------------------------------------------------------------------------- #define ctadCddSwi_START_SEC_CONST_UNSPECIFIED #include CONST_AL tCddSwi_Router CddSwi_RouteList[CFG_SWI_OUTPUTS_CNT] = CDDSWI_RouteList; #define ctadCddSwi_STOP_SEC_CONST_UNSPECIFIED #include //----------------------------------------------------------------------------- // 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 #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDBTS72220_DRIVER_CNT; ucIx++) { CddBts72220_Init(ucIx); } //SPI to Init Bts72220 CddBts72220_SpiInit(); #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 #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) CddBts72220_Cycle10ms(); #endif } //----------------------------------------------------------------------------- /// \brief CddSwi_Rou_SetSleep_Wakeup /// /// \descr This function is called when the Hss to sleep or wakeup. /// /// \param ucDormancyRouse:1 sleep mode 0:wakeup mode /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_SetSleep_Wakeup(uint8 ucDormancyRouse) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) CddBts72220_SetSleep_Wakeup(ucDormancyRouse); #endif } //----------------------------------------------------------------------------- /// \brief CddSwi_Rou_GetSleepStat /// /// \descr This function get the Hss to Sleep or wakeup stat. /// /// \param /// /// \return boSleepStat //----------------------------------------------------------------------------- boolean CddSwi_Rou_GetSleepStat(void) { boolean boSleepStat; #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) boSleepStat = CddBts72220_GetSleepStat(); #endif return boSleepStat; } //----------------------------------------------------------------------------- /// \brief CddSwi_Rou_New_request /// /// \descr This function is called for HSS output setting /// When request is changed from ctrlswi. /// \param void /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_New_request(uint8 ulChnIdx, uint8 ucNew_request) { switch (CddSwi_RouteList[ulChnIdx].DrvTyp) { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) case eDrvBts72220: CddBts72220_New_request(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx, ucNew_request); break; #endif default: break; } } //----------------------------------------------------------------------------- /// \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 #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) case eDrvBts72220: CddBts72220_SetTgt(CddSwi_RouteList[ulChnIdx].ucDrvIdx, CddSwi_RouteList[ulChnIdx].ucOutIdx, unTgtVal); break; #endif default: break; } } //----------------------------------------------------------------------------- /// \brief CddSwi_Rou_SetSpiOut /// /// \descr Spi SyncTransmit to OutPut on HSS /// /// \param /// \param /// /// \return void //----------------------------------------------------------------------------- void CddSwi_Rou_SetSpiOut() { #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) CddBts72220_SetSpiOut(); #endif } //----------------------------------------------------------------------------- /// \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 #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) case eDrvBts72220: tCddDrvStatus = CddBts72220_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; tSwitchStatus.unErr_ValidFlag = tCddDrvStatus.unErr_ValidFlag; 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 #if ( (CDD_SWI_CFG_TYPE & CFG_SWI_BTS72220) != 0u) for (uint8 ucIx = 0u; ucIx < CFG_CDDBTS72220_DRIVER_CNT; ucIx++) { CddBts72220_DeInit(ucIx); } #endif }