/** * @author ETSI STF517 / STF525 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsIVIM/ItsIvim_TpFunctions.ttcn $ * $Id: ItsIvim_TpFunctions.ttcn,v 1.7 2019/01/07 08:56:01 dte Exp $ * @desc IVIM TP functions * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * */ module ItsIvim_TpFunctions { // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; import from LibCommon_BasicTypesAndValues all; // LibItsCommon import from LibItsCommon_Pixits all; import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; import from LibItsCommon_ASN1_NamedNumbers all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from IVIM_PDU_Descriptions language "ASN.1:1997" all; import from IVI language "ASN.1:1997" all; // LibItsIVIM import from LibItsIvim_TypesAndValues all; import from LibItsIvim_Templates all; import from LibItsIvim_TestSystem all; import from LibItsIvim_Functions all; import from LibItsIvim_Pics all; import from LibItsIvim_ASN1_IVInamedNumbers all; group iviMessageTransmission { group iviMessageFormat { /** * @desc TP Function for TC_IS_IVI_MSGF_BV_01 */ function f_IS_IVI_MSGF_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent())); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_01 } // End of group iviMessageFormat group iviEventGeneration { function f_IS_IVI_EVGN_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_01 function f_IS_IVI_EVGN_BV_02() runs on ItsIvim { // Local variables var template (value) UtIvimTriggerList v_utTriggers := { m_utTriggerEvent(c_duration_2sec, f_getCurrentTime() - 1000 * c_duration_2sec, -/*, -, -*/), m_utTriggerEvent(c_duration_4sec, f_getCurrentTime() - 1000 * c_duration_4sec, -/*, -, -*/), m_utTriggerEvent(c_duration_6sec, f_getCurrentTime() - 1000 * c_duration_6sec, -/*, -, -*/) } var boolean v_success := true; var IviIdentificationNumberList v_iviIdentificationNumbers; var IvimInd v_ivimInd; var integer i; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); for (i := 0; i < lengthof(v_utTriggers) - 1; i := i + 1) { f_utTriggerEvent(valueof(v_utTriggers[i])); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); v_iviIdentificationNumbers[i] := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; } f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(valueof(v_utTriggers[lengthof(v_utTriggers) - 1])); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); v_iviIdentificationNumbers[lengthof(v_iviIdentificationNumbers) - 1] := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; //check the action id for (i := 0; i < lengthof(v_iviIdentificationNumbers) - 1; i := i + 1) { if (v_iviIdentificationNumbers[lengthof(v_iviIdentificationNumbers) - 1] == v_iviIdentificationNumbers[i]) { v_success := false; } } if (v_success==true) { log("*** " & testcasename() & ": PASS: IviIdentificationNumber field indicating unused value. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IviIdentificationNumber field indicating used value. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble for (i := 0; i < lengthof(v_iviIdentificationNumbers); i := i + 1) { f_poCancelEvent(e_iut, v_iviIdentificationNumbers[i]); } f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_02 function f_IS_IVI_EVGN_BV_03() runs on ItsIvim { // Local variables var template (value) UtIvimTriggerList v_utTriggers := { m_utTriggerEvent(c_duration_2sec, f_getCurrentTime() - 1000 * c_duration_2sec, -/*, -, -*/), m_utTriggerEvent(c_duration_4sec, f_getCurrentTime() - 1000 * c_duration_4sec, -/*, -, -*/), m_utTriggerEvent(c_duration_6sec, f_getCurrentTime() - 1000 * c_duration_6sec, -/*, -, -*/) } var IviIdentificationNumber v_iviIdentificationNumber; var boolean v_success := true; var IvimInd v_ivimInd; var integer i; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); for (i := 0; i < lengthof(v_utTriggers) - 1; i := i + 1) { f_utTriggerEvent(valueof(v_utTriggers[i])); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); f_poCancelEvent(e_iut, v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber); } //save the last IVI identification number v_iviIdentificationNumber := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(valueof(v_utTriggers[lengthof(v_utTriggers) - 1])); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber + 1, IviStatus_new_ ))))) -> value v_ivimInd { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); v_iviIdentificationNumber := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_03 function f_IS_IVI_EVGN_BV_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_04 function f_IS_IVI_EVGN_BV_05() runs on ItsIvim { // Local variables const integer c_epsilon := 500; // maximum c_epsilon cannot exceed 500ms var IviIdentificationNumber v_iviIdentificationNumber; var TimestampIts v_timestamp; var IvimInd v_iviMsg; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_timestamp := f_getCurrentTime(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_timestamp( -, v_iviIdentificationNumber, IviStatus_new_ ))))) -> value v_iviMsg { tc_ac.stop; if (f_abs(v_iviMsg.msgIn.ivi.mandatory.timeStamp - v_timestamp) < c_epsilon) { log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: TimeStamp value is out of range (" & int2str(c_epsilon) & "). ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_05 } // End of group iviEventGeneration group iviEventUpdate { function f_IS_IVI_EVUP_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, -, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, -, IviStatus_update_ ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_05 function f_IS_IVI_EVUP_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; var TimestampIts v_validTo; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_validTo := f_getCurrentTime() + 1000 * 3600; // Current ITS time + one hour f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, -, -, v_validTo)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_validTo( -, v_iviIdentificationNumber, IviStatus_update_, v_validTo ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_06 function f_IS_IVI_EVUP_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; var TimestampIts v_validFrom; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_validFrom := f_getCurrentTime() + 1000 * 3600; // Current ITS time + one hour f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, -, v_validFrom)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_validFrom( -, v_iviIdentificationNumber, IviStatus_update_, v_validFrom ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_07 function f_IS_IVI_EVUP_BV_04() runs on ItsIvim { // Local variables const integer c_epsilon := 500; // maximum c_epsilon cannot exceed 500ms var IviIdentificationNumber v_iviIdentificationNumber; var TimestampIts v_timestamp; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_timestamp := f_getCurrentTime(); f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_timestamp( -, v_iviIdentificationNumber, IviStatus_update_ ))))) -> value v_rcvdMsg { tc_ac.stop; if (f_abs(v_rcvdMsg.msgIn.ivi.mandatory.timeStamp - v_timestamp) < c_epsilon) { log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: TimeStamp value is out of range (" & int2str(c_epsilon) & "). ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_08 function f_IS_IVI_EVUP_BV_05() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IVIM_MSD_FMT_BV_09 } // End of group iviEventUpdate group iviEventRepetition { function f_IS_IVI_EVRP_BV_01() runs on ItsIvim { // Local variables const integer c_maxLoopValue := 10; const TimestampIts c_repetitionInterval := c_duration_4sec; var integer v_counter := 0; var boolean v_ivimReceived := false; const float c_minTransInterval := int2float(c_repetitionInterval) * 0.90; const float c_maxTransInterval := int2float(c_repetitionInterval) * 1.10; var Times v_times := {}; var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent(c_repetition_interval_deactivated)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, c_duration_4sec)); tc_ac.start(60.0); ivimPort.clear; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ ))))) { v_times[v_counter] := tc_ac.read; v_counter := v_counter + 1; if (v_counter < c_maxLoopValue) { repeat; } } [] tc_ac.timeout { log("*** " & testcasename() & ": FAIL: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } if (v_counter==c_maxLoopValue) { for (v_counter:=1; v_counter