//***************************************************************************** // (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 StpM /// /// \author /// //----------------------------------------------------------------------------- #define RTE_MICROSAR_PIM_EXPORT #include #include #include #include #include #include #include #include #include #include #include #include #include //extern extern uint8 cum_counter; extern sint16 stpm_nInAVACAngle0Data; extern sint16 stpm_nInAVACAngle1Data; extern uint8 stpm_ucInAVACAngleQty; extern uint16 stpm_unInVehicleSpeedData; extern uint16 Uds_unInVehicleSpeedData; extern uint8 stpm_ucInVehicleSpeedQty; extern uint8 stpm_ucSuspensionHeightQty; extern sint16 stpm_nInAfsOutput_Offset; extern uint8 stpm_ucInAfsOutputQty; extern uint8 stpm_ucInLowerBeamLampCmd; extern uint8 stpm_ucInLowerBeamLampQty; extern uint8 stpm_ucInPowerModeData; extern uint8 stpm_ucInPowerModeQty; extern tisMotor_FS stpm_FailSafe; extern tisStpMVerticalTgt stpm_VerticalTgt; extern SensorCaliState SensorCalibrationState; //variable VAR(Dcm_Data4ByteType, RTE_VAR_DEFAULT_RTE_PIM_GROUP_INIT) Rte_ctaaAvac_PimCalibrationZeroLevel; tisGeneralInfo sGeneralInfo_test; tisVehicleDynamic sVehicleDynamic_test; tisAfsOutput sAfsOutput_test; tisLightCmd LightCmd_test; tisAvacPosition PosOut_test; tisMotor_FS FailSafe_test; //input FUNC(Std_ReturnType, ctaaVehicleHub_CODE) PpasvVehHubGeneralInfo_ReadData(P2VAR(tisGeneralInfo, AUTOMATIC, RTE_CTAAVEHICLEHUB_APPL_VAR) data) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */ { *data = sGeneralInfo_test; return RTE_E_OK; } FUNC(Std_ReturnType, ctaaVehicleHub_CODE) PpasvVehHubVehicleDynamic_ReadData(P2VAR(tisVehicleDynamic, AUTOMATIC, RTE_CTAAVEHICLEHUB_APPL_VAR) data) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */ { *data = sVehicleDynamic_test; return RTE_E_OK; } FUNC(Std_ReturnType, ctaaVehicleHub_CODE) PpasvVehHubLightCmd_ReadData(P2VAR(tisLightCmd, AUTOMATIC, RTE_CTAAVEHICLEHUB_APPL_VAR) data) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */ { *data = LightCmd_test; return RTE_E_OK; } FUNC(Std_ReturnType, RTE_CODE) Rte_Read_ctaaStpM_PpareAFSAfsOutput_sValue(P2VAR(tisAfsOutput, AUTOMATIC, RTE_CTAASTPM_APPL_VAR) data) /* PRQA S 1505, 3206 */ /* MD_MSR_Rule8.7, MD_Rte_3206 */ { Std_ReturnType ret = RTE_E_OK; *data = sAfsOutput_test; return ret; } FUNC(Std_ReturnType, RTE_CODE) Rte_Read_ctaaStpM_PpareAVACAvacPosition_sValue(P2VAR(tisAvacPosition, AUTOMATIC, RTE_CTAASTPM_APPL_VAR) data) /* PRQA S 1505, 3206 */ /* MD_MSR_Rule8.7, MD_Rte_3206 */ { Std_ReturnType ret = RTE_E_OK; *data = PosOut_test; return ret; } FUNC(Std_ReturnType, ctasSysVolt_CODE) PpasvSysVoltSysVoltResult_Get(uint8 profileIdx, P2VAR(tisSysVolt_Result, AUTOMATIC, RTE_CTASSYSVOLT_APPL_VAR) sVoltage) /* PRQA S 0624, 3206 */ /* MD_Rte_0624, MD_Rte_3206 */ { Std_ReturnType ret = RTE_E_OK; return ret; } FUNC(Std_ReturnType, RTE_CODE) Rte_Read_ctaaStpM_PpareSysMonMotorFailSafe_sMotorFailsafe(P2VAR(tisMotor_FS, AUTOMATIC, RTE_CTAASTPM_APPL_VAR) data) /* PRQA S 1505, 3206 */ /* MD_MSR_Rule8.7, MD_Rte_3206 */ { Std_ReturnType ret = RTE_E_OK; *data = FailSafe_test; return ret; } //output FUNC(Std_ReturnType, RTE_CODE) Rte_Write_ctaaStpM_PpaseStpMStpMVerticalTgt_sStpMVerticalTgt(P2CONST(tisStpMVerticalTgt, AUTOMATIC, RTE_CTAASTPM_APPL_DATA) data) /* PRQA S 1505, 2982 */ /* MD_MSR_Rule8.7, MD_Rte_2982 */ { Std_ReturnType ret = RTE_E_OK; return ret; } void SwcNvmWrapper_WriteNvmReq(uint8 blockId, uint8* ValPtr) { memcpy(&Rte_ctaaAvac_PimCalibrationZeroLevel[0], ValPtr, sizeof(Rte_ctaaAvac_PimCalibrationZeroLevel)); } //----------------------------------------------------------------------------- /// \Test Case : Mt_riStpMInit /// /// \Test Case Description /// - Test subject: /// /// - Preconditions: none /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_riStpMInit(void) { Rte_riStpMInit(); AL_UNITTEST_CHECK(stpm_nInAVACAngle0Data , 0, == ); AL_UNITTEST_CHECK(stpm_nInAVACAngle1Data , 0, == ); AL_UNITTEST_CHECK(stpm_ucInAVACAngleQty , 3, == ); AL_UNITTEST_CHECK(stpm_unInVehicleSpeedData, 0, == ); AL_UNITTEST_CHECK(Uds_unInVehicleSpeedData, 0, == ); AL_UNITTEST_CHECK(stpm_ucInVehicleSpeedQty, 3, == ); AL_UNITTEST_CHECK(stpm_ucSuspensionHeightQty, 3, == ); AL_UNITTEST_CHECK(stpm_nInAfsOutput_Offset, 0, == ); AL_UNITTEST_CHECK(stpm_ucInAfsOutputQty, 3, == ); AL_UNITTEST_CHECK(stpm_ucInLowerBeamLampCmd, 0, == ); AL_UNITTEST_CHECK(stpm_ucInLowerBeamLampQty, 3, == ); AL_UNITTEST_CHECK(stpm_ucInPowerModeData, 0, == ); AL_UNITTEST_CHECK(stpm_ucInPowerModeQty, 3, == ); } //----------------------------------------------------------------------------- /// \Test Case : Mt_rpStmpCycle /// /// \Test Case Description /// - Test subject: The number of actual runs simulated /// /// - Preconditions: none /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_rpStmpCycle(uint8 condition) { uint8 i; if (condition) { for (i = 0; i <= 16; i++) //Simulate calibrated conditions { sVehicleDynamic_test.sSuspensionHeight.usValueFL = i; sVehicleDynamic_test.sSuspensionHeight.usValueFR = i; sVehicleDynamic_test.sSuspensionHeight.usValueRL = i; sVehicleDynamic_test.sSuspensionHeight.usValueRR = i; Rte_rpStpM20ms(); } } else { for (i = 0; i <= 16; i++) //Simulate no calibrated { sVehicleDynamic_test.sSuspensionHeight.usValueFL = 0xff; sVehicleDynamic_test.sSuspensionHeight.usValueFR = 0xff; sVehicleDynamic_test.sSuspensionHeight.usValueRL = 0xff; sVehicleDynamic_test.sSuspensionHeight.usValueRR = 0xff; Rte_rpStpM20ms(); } } } //----------------------------------------------------------------------------- /// \Test Case : Mt_rrStpMWorking /// /// \Test Case Description /// - Test subject: /// /// - Preconditions: none /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_rrStpMWorking(void) { sGeneralInfo_test.sPowerMode.eStatus = 1; //enable stpm sGeneralInfo_test.sPowerMode.eQty = 0; FailSafe_test.eVertical = 1; Rte_rpStpM20ms(); AL_UNITTEST_CHECK(stpm_VerticalTgt.eReferenceLeft, STPMREFERENCEVER_DISABLED, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eReferenceRight, STPMREFERENCEVER_DISABLED, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eSafetyOpLeft, STPMSAFETYPSTNVER_SAFETYPOSITION, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eSafetyOpRight, STPMSAFETYPSTNVER_SAFETYPOSITION, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.usTargetAngleLR, STPM_OFFSET_DEFAULT, == ); FailSafe_test.eVertical = 2; Rte_rpStpM20ms(); AL_UNITTEST_CHECK(stpm_VerticalTgt.eReferenceLeft, STPMREFERENCEVER_DISABLED, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eReferenceRight, STPMREFERENCEVER_DISABLED, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eSafetyOpLeft, STPMSAFETYPSTNVER_SAFETYFEEZE, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eSafetyOpRight, STPMSAFETYPSTNVER_SAFETYFEEZE, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.usTargetAngleLR, STPM_OFFSET_DEFAULT, == ); sVehicleDynamic_test.sSpeed.usValue = 0; sVehicleDynamic_test.sSpeed.eQty = 0; sVehicleDynamic_test.sSuspensionHeight.eQty = 0; sAfsOutput_test.ssStepOffset = -57; LightCmd_test.sLowerBeam.boValue = 1; LightCmd_test.sLowerBeam.eQty = 0; PosOut_test.ssVerAngle0 = 114; PosOut_test.eAvacSigQty = 0; FailSafe_test.eVertical = 0; Rte_rpStpM20ms(); AL_UNITTEST_CHECK(stpm_VerticalTgt.eReferenceLeft, STPMREFERENCEVER_ALLOWED, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eReferenceRight, STPMREFERENCEVER_ALLOWED, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eSafetyOpLeft, STPMSAFETYPSTNVER_NONE, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.eSafetyOpRight, STPMSAFETYPSTNVER_NONE, == ); AL_UNITTEST_CHECK(stpm_VerticalTgt.usTargetAngleLR, 557, == ); PosOut_test.ssVerAngle0 = 600; Rte_rpStpM20ms(); AL_UNITTEST_CHECK(stpm_VerticalTgt.usTargetAngleLR, 1000, == ); PosOut_test.ssVerAngle0 = -500; Rte_rpStpM20ms(); AL_UNITTEST_CHECK(stpm_VerticalTgt.usTargetAngleLR, 0, == ); } //----------------------------------------------------------------------------- /// \Test Case : Mt_rrStpMSensorCali /// /// \Test Case Description /// - Test subject: /// /// - Preconditions: none /// /// - Expected test results: /// - All conditions and assigned values mentioned for each test case/step shall be reached and passed /// //----------------------------------------------------------------------------- void Mt_rrStpMSensorCali(void) { uint8 result1 = 0; Std_ReturnType result2 = 0; uint8 result3 = 3; result2 = Rte_rsStpmSensorCaliResult(&result1); Rte_rpStpM20ms(); AL_UNITTEST_CHECK(result2, CALIBRATION_SEQUENCEERROR, == ); sVehicleDynamic_test.sSpeed.usValue = 60; sVehicleDynamic_test.sSpeed.eQty = 0; Rte_rpStpM20ms(); (void)Rte_rrStpmSensorCaliStart(); Rte_rpStpM20ms(); AL_UNITTEST_CHECK(SensorCalibrationState, SensorCaliState_Finished, == ); result2 = Rte_rsStpmSensorCaliResult(&result1); Rte_rpStpM20ms(); AL_UNITTEST_CHECK(result1, 1, == ); //NO CALIBRATED sVehicleDynamic_test.sSpeed.usValue = 0; sVehicleDynamic_test.sSpeed.eQty = 0; Rte_rpStpM20ms(); (void)Rte_rrStpmSensorCaliStart(); Rte_rpStpM20ms(); result2 = Rte_rsStpmSensorCaliResult(&result1); AL_UNITTEST_CHECK(result2, CALIBRATION_PENDING, == ); Mt_rpStmpCycle(1); AL_UNITTEST_CHECK(Rte_ctaaAvac_PimCalibrationZeroLevel[0], 7, == ); result2 = Rte_rsStpmSensorCaliResult(&result1); Rte_rpStpM20ms(); AL_UNITTEST_CHECK(result2, CALIBRATION_NO_ERROR, == ); AL_UNITTEST_CHECK(result1, 0, == ); //CALIBRATED Rte_rsStpmCalibrationState(&result3); Rte_rpStpM20ms(); AL_UNITTEST_CHECK(result3, 0, == ); //CALIBRATED sVehicleDynamic_test.sSpeed.usValue = 60; sVehicleDynamic_test.sSpeed.eQty = 0; Rte_rpStpM20ms(); (void)Rte_rrStpmSensorCaliStart(); Rte_rpStpM20ms(); sVehicleDynamic_test.sSpeed.usValue = 0; sVehicleDynamic_test.sSpeed.eQty = 0; Rte_rpStpM20ms(); (void)Rte_rrStpmSensorCaliStart(); Mt_rpStmpCycle(0); AL_UNITTEST_CHECK(Rte_ctaaAvac_PimCalibrationZeroLevel[0], 0xff, == ); Rte_rsStpmCalibrationState(&result3); Rte_rpStpM20ms(); AL_UNITTEST_CHECK(Rte_ctaaAvac_PimCalibrationZeroLevel[0], 0xff, == ); AL_UNITTEST_CHECK(result3, 1, == ); //NO CALIBRATED } // ---------------------------------------------------------------------------- // Add Test Cases //----------------------------------------------------------------------------- void ALUnitTest_AddTests(void) { ALUnitTest_AddFunction("Mt_riStpMInit", Mt_riStpMInit); ALUnitTest_AddFunction("Mt_rrStpMWorking", Mt_rrStpMWorking); ALUnitTest_AddFunction("Mt_rrStpMSensorCali", Mt_rrStpMSensorCali); }