//***************************************************************************** // (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 Test.c /// /// \brief Unit Test Cases for Afs /// /// \author /// //----------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include "Rte_Type.h" #include "Rte_ctaaAfs.h" //define //constant const tRomPara_AFSGenCfg AFSGenCfgdefult = { 1, /* AfsFunc_Enable*/ 30, /* Speed_UpHysteresis*/ {0, 0} /* reserved1*/ }; const tRomPara_AFSModeCfg AFSMode_V1defult = { 1, /* ModeEnable*/ 0, /* reserved1*/ 0, /* Speed_LowThreshold*/ 400, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 1, /* SBLEnable*/ 700, /* SteeringAngle_On_Left*/ 400, /* SteeringAngle_Off_Left*/ 700, /* SteeringAngle_On_Right*/ 400, /* SteeringAngle_Off_Right*/ {0, 0} /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_V2defult = { 1, /* ModeEnable*/ 0, /* reserved1*/ 400, /* Speed_LowThreshold*/ 600, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ {0, 0} /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_V3defult = { 0, /* ModeEnable*/ 0, /* reserved1*/ 0, /* Speed_LowThreshold*/ 0, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ {0, 0} /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_C1defult = { 1, /* ModeEnable*/ 0, /* reserved1*/ 600, /* Speed_LowThreshold*/ 1100, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 1, /* SBLEnable*/ 500, /* SteeringAngle_On_Left*/ 300, /* SteeringAngle_Off_Left*/ 500, /* SteeringAngle_On_Right*/ 300, /* SteeringAngle_Off_Right*/ {0, 0} /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_C2defult = { 0, /* ModeEnable*/ 0, /* reserved1*/ 0, /* Speed_LowThreshold*/ 0, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ {0, 0} /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_C3defult = { 0, /* ModeEnable*/ 0, /* reserved1*/ 0, /* Speed_LowThreshold*/ 0, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ { 0, 0 } /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_E1defult = { 1, /* ModeEnable*/ 0, /* reserved1*/ 1100, /* Speed_LowThreshold*/ 2550, /* Speed_HighThreshold*/ 46, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ {0, 0} /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_E2defult = { 0, /* ModeEnable*/ 0, /* reserved1*/ 0, /* Speed_LowThreshold*/ 0, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ { 0, 0 } /* reserved2*/ }; const tRomPara_AFSModeCfg AFSMode_E3defult = { 0, /* ModeEnable*/ 0, /* reserved1*/ 0, /* Speed_LowThreshold*/ 0, /* Speed_HighThreshold*/ 57, /* LWR_Offset*/ 0, /* SBLEnable*/ 0, /* SteeringAngle_On_Left*/ 0, /* SteeringAngle_Off_Left*/ 0, /* SteeringAngle_On_Right*/ 0, /* SteeringAngle_Off_Right*/ { 0, 0 } /* reserved2*/ }; //variable //tRomPara_CodingArea coding_data1; //const tRomPara_CodingArea* applicationCodingDataptr = &coding_data1; //const tRomPara_CodingArea applicationCodingData; static tisCodingStatus Coding_Sta; static tisVehicleDynamic VehicleDynamic_test; static tisLightCmd LightCmd_test; static tisGeneralInfo GeneralInfo_test; static tisAFS_FS AFS_FS_test; extern tieAfsTurnSteerState afs_eSteerWheelAngleState; //output FUNC(Std_ReturnType, RTE_CODE) Rte_Write_ctaaAfs_PpaseAFSAfsOutput_sValue(P2CONST(tisAfsOutput, AUTOMATIC, RTE_CTAAAFS_APPL_DATA) data) /* PRQA S 1505, 2982 */ /* MD_MSR_Rule8.7, MD_Rte_2982 */ { Std_ReturnType ret = RTE_E_OK; return ret; } FUNC(Std_ReturnType, RTE_CODE) Rte_Write_ctaaAfs_PpaseAFSCornerLight_sValue(P2CONST(tisCornerLight, AUTOMATIC, RTE_CTAAAFS_APPL_DATA) data) /* PRQA S 1505, 2982 */ /* MD_MSR_Rule8.7, MD_Rte_2982 */ { Std_ReturnType ret = RTE_E_OK; return ret; } //coding FUNC(Std_ReturnType, RTE_CODE) Rte_Read_ctaaAfs_PpareCodMCodingStatus_sCodingStatus(P2VAR(tisCodingStatus, AUTOMATIC, RTE_CTAAAFS_APPL_VAR) data) /* PRQA S 1505, 3206 */ /* MD_MSR_Rule8.7, MD_Rte_3206 */ { Std_ReturnType ret = RTE_E_OK; *data = Coding_Sta; return ret; } //input FUNC(Std_ReturnType, RTE_CTAAVEHICLEHUB_APPL_CODE) PpasvVehHubGeneralInfo_ReadData(P2VAR(tisGeneralInfo, AUTOMATIC, RTE_CTAAVEHICLEHUB_APPL_VAR) data) { Std_ReturnType ret = RTE_E_OK; *data = GeneralInfo_test; return ret; } FUNC(Std_ReturnType, RTE_CTAAVEHICLEHUB_APPL_CODE) PpasvVehHubLightCmd_ReadData(P2VAR(tisLightCmd, AUTOMATIC, RTE_CTAAVEHICLEHUB_APPL_VAR) data) { Std_ReturnType ret = RTE_E_OK; *data = LightCmd_test; return ret; } FUNC(Std_ReturnType, RTE_CTAAVEHICLEHUB_APPL_CODE) PpasvVehHubVehicleDynamic_ReadData(P2VAR(tisVehicleDynamic, AUTOMATIC, RTE_CTAAVEHICLEHUB_APPL_VAR) data) { Std_ReturnType ret = RTE_E_OK; *data = VehicleDynamic_test; return ret; } FUNC(Std_ReturnType, RTE_CODE) Rte_Read_ctaaAfs_PpareSysMonAFSFailSafe_sAFSFailsafe(P2VAR(tisAFS_FS, AUTOMATIC, RTE_CTAAAFS_APPL_VAR) data) /* PRQA S 1505, 3206 */ /* MD_MSR_Rule8.7, MD_Rte_3206 */ { Std_ReturnType ret = RTE_E_OK; *data = AFS_FS_test; return ret; } //----------------------------------------------------------------------------- /// \Test Case : Mt_riAfsInit /// /// \Test Case Description /// - Test subject: /// To call riAfsInit function /// /// - Preconditions: none /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_riAfsInit(void) { tRomPara_CodingArea* coding_data = &applicationCodingData; coding_data->AFSConfig.AFSGenCfg = AFSGenCfgdefult; coding_data->AFSConfig.AFSMode_V1 = AFSMode_V1defult; coding_data->AFSConfig.AFSMode_V2 = AFSMode_V2defult; coding_data->AFSConfig.AFSMode_V3 = AFSMode_V3defult; coding_data->AFSConfig.AFSMode_C1 = AFSMode_C1defult; coding_data->AFSConfig.AFSMode_C2 = AFSMode_C2defult; coding_data->AFSConfig.AFSMode_C3 = AFSMode_C3defult; coding_data->AFSConfig.AFSMode_E1 = AFSMode_E1defult; coding_data->AFSConfig.AFSMode_E2 = AFSMode_E2defult; coding_data->AFSConfig.AFSMode_E3 = AFSMode_E3defult; Coding_Sta.eCodingStatus = 1; Rte_riAfsInit(); Coding_Sta.eCodingStatus = 0; Rte_riAfsInit(); AL_UNITTEST_CHECK(applicationCodingData.AFSConfig.AFSGenCfg.AfsFunc_Enable, 1, == ); } //----------------------------------------------------------------------------- /// \Test Case : Mt_rpAfsCycle /// /// \Test Case Description /// - Simulate a runable run cycle /// //----------------------------------------------------------------------------- extern void Sleep(uint32 ms); void Mt_rpAfsCycle(void) { uint8 i; for (i = 0; i < 10; i++) { Sleep(20); Rte_rpAfs20ms(); } } //----------------------------------------------------------------------------- /// \Test Case : Mt_roAfsEnble /// /// \Test Case Description /// - Test subject: /// To call Afs_CheckEnableAfs function /// /// - Preconditions: Input /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_roAfsEnble(void) { Coding_Sta.eCodingStatus = 0; Rte_riAfsInit(); GeneralInfo_test.sPowerMode.eQty = 1; VehicleDynamic_test.sSpeed.eQty = 1; Rte_rpAfs20ms(); GeneralInfo_test.sPowerMode.eStatus = 0; GeneralInfo_test.sPowerMode.eQty = 0; VehicleDynamic_test.sSpeed.eQty = 0; Rte_rpAfs20ms(); GeneralInfo_test.sPowerMode.eStatus = 1; GeneralInfo_test.sPowerMode.eQty = 0; VehicleDynamic_test.sSpeed.eQty = 0; VehicleDynamic_test.sSteerWheel.eQty = 1; LightCmd_test.sLowerBeam.boValue = 1; LightCmd_test.sLightSwitch.eStatus = 1; VehicleDynamic_test.sActualGear.eValue = 1; Rte_rpAfs20ms(); VehicleDynamic_test.sSteerWheel.eQty = 0; Rte_rpAfs20ms(); } //----------------------------------------------------------------------------- /// \Test Case : Mt_roAfsSpeedClass /// /// \Test Case Description /// - Test subject: /// To call Rte_rpAfs20ms function /// /// - Preconditions: Input speed and steerwheel /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_roAfsSpeedClass(void) { //uint8 i; VehicleDynamic_test.sSpeed.usValue = 200; Mt_rpAfsCycle(); VehicleDynamic_test.sSteerWheel.usAngelValue = 8510; Mt_rpAfsCycle(); VehicleDynamic_test.sSteerWheel.usAngelValue = 8210; Mt_rpAfsCycle(); afs_eSteerWheelAngleState = 0; Mt_rpAfsCycle(); VehicleDynamic_test.sSteerWheel.usAngelValue = 7090; Mt_rpAfsCycle(); VehicleDynamic_test.sSteerWheel.usAngelValue = 7390; Mt_rpAfsCycle(); afs_eSteerWheelAngleState = 0; Mt_rpAfsCycle(); VehicleDynamic_test.sSpeed.usValue = 500; Rte_rpAfs20ms(); VehicleDynamic_test.sSpeed.usValue = 650; Rte_rpAfs20ms(); VehicleDynamic_test.sSpeed.usValue = 590; Rte_rpAfs20ms(); //for (i = 0; i < 10; i++) //{ // //printf("before sleep %d ", clock()); // Sleep(20); // //printf("after sleep %d\n", clock()); // Rte_rpAfs20ms(); //} } // ---------------------------------------------------------------------------- // Test Cases //----------------------------------------------------------------------------- void ALUnitTest_AddTests(void) { ALUnitTest_AddFunction("Mt_riAfsInit", Mt_riAfsInit); ALUnitTest_AddFunction("Mt_roAfsEnble", Mt_roAfsEnble); ALUnitTest_AddFunction("Mt_roAfsSpeedClass", Mt_roAfsSpeedClass); }