Loading ttcn/dPMR_Pixits.ttcn +6 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,12 @@ module dPMR_Pixits { * @desc Time of Max Case Execution */ modulepar {float PXT_MAX_CASE_EXEC_PERIOD := 5000E-3} /** * @desc Time of Max TxWait */ modulepar {float PXT_MAX_TXWAIT_PERIOD := 0.320} } // end dPMR_Timers group additional { Loading ttcn/dPMR_Templates.ttcn +21 −0 Original line number Diff line number Diff line Loading @@ -661,6 +661,20 @@ callInformation := ? } // end mw_headerInformationVoiceTx template HeaderInformation mw_headerInformationStatusTx ( template MsAddress p_calledId , template MsAddress p_ownId, template CommunicationsMode p_commMode, template CommsFormat p_commFormat ) := { headerType := e_statusReqHdr, calledId := p_calledId, ownId := p_ownId, communicationsMode := p_commMode, commsFormat := p_commFormat, reserved2bit := c_reserved2bits, callInformation := ? } // end mw_headerInformationStatusTx // template MsAddress mw_msAddress( ISFAddress p_isfAddress) := // { isfAddress := p_isfAddress } template MsAddress mw_msAddress( template Common_ID p_commonId, template FixedPart p_fixedPart) := Loading Loading @@ -705,6 +719,13 @@ reserved4bit := c_reserved4bits } // end m_endInformation template EndInformation mw_endInformationStatus( AckRequest p_ackReq ) := { endType := e_endFrameWithStatusMsg , ackRequest := p_ackReq, txWait := ?, statusMessage := '01001'B, reserved4bit := c_reserved4bits } // end mw_endInformationStatus Loading ttcn/dPMR_TestCases.ttcn +548 −14 Original line number Diff line number Diff line Loading @@ -308,6 +308,45 @@ module dPMR_TestCases { f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1004_01 testcase TC_PMR_1005_01( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body // v_mse.start(f_TC_transmitOnWrongCC_MS02()); // External function that will do the sending on wrong channel v_mse.start(f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01()); if (PIC_ISF_OR_CSF == e_isf) { v_ut.start(f_TC_msAction_UT(e_toStandby, m_commandISFCSF_utRequest( omit , c_defaultCommonId, e_makePttCallWhitin300msAftertesttone))); } else { v_ut.start(f_TC_msAction_UT(e_toStandby, m_commandISFCSF_utRequest( c_defaultPeerToPeerDialString, omit , e_makePttCallWhitin300msAftertesttone))); } f_startValidation( "TC_PMR_1005_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1005_01 /** * interference on channel, IUT config to impolite */ Loading Loading @@ -347,7 +386,6 @@ module dPMR_TestCases { /** * interference on channel, IUT config to polite to own cc */ // TODO JP, see if this really is ok, it will wait for the t_ack to go down and then send the ack testcase TC_PMR_1007_02( ) runs on ServerSyncComp system TestAdapter { Loading Loading @@ -601,9 +639,8 @@ module dPMR_TestCases { } // end TC_PMR_1011_01 /** * interference on channel, IUT config to polite to own cc, multipla ack within T_ack * interference on channel, IUT config to impolite to own cc, multiple acks */ // TODO JP, see if this really is ok, it will wait for the t_ack to go down and then send the ack testcase TC_PMR_1012_01( ) runs on ServerSyncComp system TestAdapter { Loading @@ -618,6 +655,41 @@ module dPMR_TestCases { //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body //v_mse.start(f_TC_transmitLongVoice_MS02()); xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()), f_getColourCode(), c_102dBm); v_mse.start(f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01()); v_ut.start(f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT(e_impolite)); f_startValidation( "TC_PMR_1012_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1012_01 /** * interference on channel, IUT config to polite to own cc, multipla ack within T_ack */ testcase TC_PMR_1012_02( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body //v_mse.start(f_TC_transmitLongVoice_MS02()); xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()), Loading @@ -627,14 +699,51 @@ module dPMR_TestCases { v_ut.start(f_TC_msToStandbyPoliteLevelUseAckTimerConfigMultipleAcks_UT(e_politeCc)); f_startValidation( "TC_PMR_1012_01",v_mse_val,v_ut_val); f_startValidation( "TC_PMR_1012_02",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1007_02 } // end TC_PMR_1012_02 /** * interference on channel, IUT config to polite to own cc, multiple acks */ testcase TC_PMR_1012_03( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body //v_mse.start(f_TC_transmitLongVoice_MS02()); xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()), f_getColourCode(), c_102dBm); v_mse.start(f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01()); v_ut.start(f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT(e_politeCc)); f_startValidation( "TC_PMR_1012_03",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1012_03 } // end group ChannelAccess Loading Loading @@ -4117,7 +4226,7 @@ module dPMR_TestCases { } // end TC_PMR_1420_03 /** * Broadcast with invalid numeric group address * Broadcast with numeric group address */ testcase TC_PMR_1420_04( ) runs on ServerSyncComp Loading @@ -4134,12 +4243,12 @@ module dPMR_TestCases { f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body // actually Tester need to do synching v_mse.start(f_TC_voiceTxNotTransmitted_MS01()); // sure, if something received then error... v_mse.start(f_TC_voiceTxBroadcastWithTesterId_MS01(c_defaultCSFIUTtalkGroupAddress)); v_ut.start(f_TC_msAction_UT(e_toStandbyAndConfigNumericGroup9991234, m_commandCSF_utRequest( c_defaultBroadcastInvalidNumericGroupDialString, e_reportCallFail))); m_commandCSF_utRequest( c_defaultBroadcastNumericGroupDialString, e_enterDialStringAndPressSendKeyOrHash))); f_startValidation( "TC_PMR_1420_04",v_mse_val,v_ut_val); Loading Loading @@ -4214,6 +4323,107 @@ module dPMR_TestCases { f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1420_06 /** * Broadcast with invalid numeric group address */ testcase TC_PMR_1420_07( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body v_mse.start(f_TC_voiceTxNotTransmitted_MS01()); // sure, if something received then error... v_ut.start(f_TC_msAction_UT(e_toStandbyAndConfigNumericGroup9991234, m_commandCSF_utRequest( c_defaultBroadcastInvalidNumericGroupDialString, e_reportCallFail))); f_startValidation( "TC_PMR_1420_07",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1420_07 /** * Status command with individual address */ testcase TC_PMR_1421_01( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body v_mse.start(f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01(c_defaultIutCSFAddress)); v_ut.start(f_TC_msAction_UT(e_toStandby, m_commandCSF_utRequest( c_defaultStatusCommandDialString, e_enterDialStringAndPressSendKeyOrHash))); f_startValidation( "TC_PMR_1421_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1421_01 /** * forced talkgroup address */ testcase TC_PMR_1423_01( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body v_mse.start(f_TC_voiceTxWithTesterId_MS01(c_defaultCSFIUTtalkGroupAddress)); v_ut.start(f_TC_msAction_UT(e_toStandbyAndNotConfigNumericGroup9991234, m_commandCSF_utRequest( c_defaultForcedTalkGroupDialString, e_enterDialStringAndPressSendKeyOrHash))); f_startValidation( "TC_PMR_1423_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1423_01 /** * call cancel */ Loading Loading @@ -5302,10 +5512,11 @@ module dPMR_TestCases { { tc_ac.stop; if (tc_t_ack.running) { log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWithin_t_ack_MS01: T_ACK_TIMER still running, ack sent too early ****"); setverdict(fail); } else { tc_t_ack.stop; setverdict(pass); } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWithin_t_ack_MS01: ACK not received within T_ACK_TIMER ****"); setverdict(fail); } } [] tc_ac.timeout { Loading Loading @@ -5383,6 +5594,7 @@ module dPMR_TestCases { [] tc_t_ack.timeout { tc_ac.stop; if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) { setverdict(pass); } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01: To few or to many acks received ****"); setverdict(fail); Loading @@ -5396,6 +5608,152 @@ module dPMR_TestCases { } // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01 /** * @desc this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge * receive 2 to 5 acks */ function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01() runs on Mse{ // Variables var default v_dftMse; var FncRetCode v_ret := e_success; var integer v_nrOfAcksReceived; //Test System Parameters f_initMse(); //Default v_dftMse := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body tc_ac.start ; dp1Port.send( m_voiceorT1orT2PayloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), vc_mse.colourCode), m_superFrameList_4Elem( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1, e_p2p), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, vc_mse.colourCode, e_p2p), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3, e_p2p), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, vc_mse.colourCode, e_p2p) ) ), m_endFrame(m_endInformationAck)) ); v_nrOfAcksReceived := 0; alt { [] dp1Port.receive(m_acknowledgement( m_headerInformation(e_ackHeader, vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode) ) { v_nrOfAcksReceived := v_nrOfAcksReceived+1; repeat; } [] tc_ac.timeout { if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) { setverdict(pass) } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01: To few or to many acks received ****"); setverdict(fail); } } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01 /** * @desc this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge * receive 2 to 5 acks, when interferance is gone */ function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01() runs on Mse{ // Variables var default v_dftMse; var FncRetCode v_ret := e_success; var integer v_nrOfAcksReceived; //Test System Parameters f_initMse(); //Default v_dftMse := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body tc_ac.start ; dp1Port.send( m_voiceorT1orT2PayloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), vc_mse.colourCode), m_superFrameList_4Elem( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1, e_p2p), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, vc_mse.colourCode, e_p2p), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3, e_p2p), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, vc_mse.colourCode, e_p2p) ) ), m_endFrame(m_endInformationAck)) ); tc_t_toStopInterference.start; v_nrOfAcksReceived := 0; alt { [] dp1Port.receive(m_acknowledgement( m_headerInformation(e_ackHeader, vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode) ) { if (tc_t_toStopInterference.running) { tc_t_toStopInterference.stop; log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01: Interference still on, ack sent too early ****"); setverdict(fail); } else { v_nrOfAcksReceived := v_nrOfAcksReceived+1; repeat; } } [] tc_ac.timeout { if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) { setverdict(pass) } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01: To few or to many acks received ****"); setverdict(fail); } } [] tc_t_toStopInterference.timeout { // Just receive it and xf_stopTransmittingVoice(); repeat; } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01 /** * @desc this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge */ Loading Loading @@ -5443,7 +5801,8 @@ module dPMR_TestCases { ) { tc_ac.stop; if (tc_t_ack.running) { if (tc_t_toStopInterference.running) { tc_t_toStopInterference.stop; log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWhenNoInterference_MS01: Interference still on, ack sent too early ****"); setverdict(fail); } else { Loading Loading @@ -5986,6 +6345,97 @@ module dPMR_TestCases { } // end function f_TC_voiceTx_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, and that it is not received until after the TXWAIT * transmitted in the last endframe. */ function f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01 ( ) runs on Mse{ // Variables var FncRetCode v_ret := e_success; var UInt16 v_sfCount := 0; var default v_defvar; timer tc_txWait := PXT_MAX_TXWAIT_PERIOD; //Test System Parameters f_initMse(); //Default v_defvar := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body dp1Port.send( m_voiceorT1orT2PayloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), vc_mse.colourCode), m_superFrameList_4Elem( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1, e_callAll), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, vc_mse.colourCode, e_callAll), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3, e_callAll), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, vc_mse.colourCode, e_callAll) ) ), m_endFrame(m_endInformationNoAck)) ); // start the timer for the txwait time tc_ac.start ; tc_txWait.start alt { [] dp1Port.receive( m_voiceorT1orT2PayloadTransmission( m_headerFrame( mw_headerInformationTx( vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode), mw_superFrameList_OneOrManyElem( m_superFrame( mw_frame1Voice(vc_mse.testerIdUP ), mw_frame2Voice(vc_mse.testerIdLP, vc_mse.colourCode), mw_frame3Voice(vc_mse.iutIdUP), mw_frame4Voice(vc_mse.iutIdLP,vc_mse.colourCode))), m_endFrame(mw_endInformation(e_noAckReq)))) { // received correctly if (tc_txWait.running) { tc_txWait.stop; tc_ac.stop ; log("**** f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01: Timeout: tc_txWait running, message coming too soon ****"); setverdict(fail); } else { tc_ac.stop ; setverdict(pass); } } [] tc_txWait.timeout { repeat; } [] tc_ac.timeout { log("**** f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01: Timeout: TC Timer expiration before reception of complete Voice transmission ****"); setverdict(fail); } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); deactivate; } // end function f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, is sent to the tester id Loading Loading @@ -6046,6 +6496,66 @@ module dPMR_TestCases { } // end function f_TC_voiceTxWithId_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, is sent to the tester id for a Status Request * @param p_address is the receiving entity */ function f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01 ( MsAddress p_address ) runs on Mse{ // Variables var FncRetCode v_ret := e_success; var UInt16 v_sfCount := 0; var default v_defvar; //Test System Parameters f_initMse(); vc_mse.testerId := p_address; vc_mse.testerIdUP := f_msAddress2Upper(p_address); vc_mse.testerIdLP := f_msAddress2Lower(p_address); //Default v_defvar := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body tc_ac.start ; alt { [] dp1Port.receive( m_voiceorT1orT2PayloadTransmission( m_headerFrame( mw_headerInformationStatusTx( vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode), mw_superFrameList_OneOrManyElem( m_superFrame( mw_frame1Voice(vc_mse.testerIdUP ), mw_frame2Voice(vc_mse.testerIdLP, vc_mse.colourCode), mw_frame3Voice(vc_mse.iutIdUP), mw_frame4Voice(vc_mse.iutIdLP,vc_mse.colourCode))), m_endFrame(mw_endInformationStatus(e_noAckReq)))) { // received correctly tc_ac.stop ; setverdict(pass); } [] tc_ac.timeout { log("**** f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01: Timeout: TC Timer expiration before reception of complete Voice transmission ****"); setverdict(fail); } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); deactivate; } // end function f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, is sent to the tester id Loading Loading @@ -7929,6 +8439,30 @@ module dPMR_TestCases { } // end f_TC_msToStandbyPoliteLevelUseAckTimerConfigMultipleAcks_UT /** * @desc This function will put the MS in an idle mode listening to a * certain channel using the Pixit id or address with the desired Polite Level * and config the IUT to send multiple acks */ function f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT(PoliteLvl p_politeLevel ) runs on Ut { //Variables var default v_dftUt; var FncRetCode v_ret := e_success; //Test System Parameters f_initUt(); //Default v_dftUt := activate(a_dftUt()); v_ret := f_msToStandbyPoliteLevel_UT(e_toStandbyAndMultipleAcks, p_politeLevel); f_clientSyncAndVerdict(c_prDone, v_ret); deactivate; } // end f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT }//end group ut_TC_Functions Loading ttcn/dPMR_TestExecution.ttcn +6 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ module dPMR_TestExecution { // group ChannelAccess { // Clause 5.1.2 if (PIC_MS_POLITE_OWN_CC) {execute(TC_PMR_1004_01() );} execute(TC_PMR_1005_01() ); if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_02() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_03() );} Loading @@ -48,6 +48,8 @@ module dPMR_TestExecution { if (PIC_ISF_OR_CSF == e_isf) {execute(TC_PMR_1010_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1011_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1012_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1012_02() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1012_03() );} //} // group Framing {// Clause 5.1.3 Loading Loading @@ -199,6 +201,9 @@ module dPMR_TestExecution { if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_04() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_05() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_06() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_07() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1421_01() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1423_01() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1424_01() );} // } // end group DialingPlan Loading ttcn/dPMR_TestSystem.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ group componentDefs { timer tc_ac := PXT_TAC; timer tc_noac := PXT_TNOAC; timer tc_wait := PXT_TWAIT; timer tc_t_ack := 3.0; // TODO JP cannot use the pics, get circular reference!!! Check why timer tc_t_ack := 3.0; // TODO JP cannot use the PICS, get circular reference!!! Check why timer tc_t_toStopInterference := 1.0; //Component variable Loading Loading
ttcn/dPMR_Pixits.ttcn +6 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,12 @@ module dPMR_Pixits { * @desc Time of Max Case Execution */ modulepar {float PXT_MAX_CASE_EXEC_PERIOD := 5000E-3} /** * @desc Time of Max TxWait */ modulepar {float PXT_MAX_TXWAIT_PERIOD := 0.320} } // end dPMR_Timers group additional { Loading
ttcn/dPMR_Templates.ttcn +21 −0 Original line number Diff line number Diff line Loading @@ -661,6 +661,20 @@ callInformation := ? } // end mw_headerInformationVoiceTx template HeaderInformation mw_headerInformationStatusTx ( template MsAddress p_calledId , template MsAddress p_ownId, template CommunicationsMode p_commMode, template CommsFormat p_commFormat ) := { headerType := e_statusReqHdr, calledId := p_calledId, ownId := p_ownId, communicationsMode := p_commMode, commsFormat := p_commFormat, reserved2bit := c_reserved2bits, callInformation := ? } // end mw_headerInformationStatusTx // template MsAddress mw_msAddress( ISFAddress p_isfAddress) := // { isfAddress := p_isfAddress } template MsAddress mw_msAddress( template Common_ID p_commonId, template FixedPart p_fixedPart) := Loading Loading @@ -705,6 +719,13 @@ reserved4bit := c_reserved4bits } // end m_endInformation template EndInformation mw_endInformationStatus( AckRequest p_ackReq ) := { endType := e_endFrameWithStatusMsg , ackRequest := p_ackReq, txWait := ?, statusMessage := '01001'B, reserved4bit := c_reserved4bits } // end mw_endInformationStatus Loading
ttcn/dPMR_TestCases.ttcn +548 −14 Original line number Diff line number Diff line Loading @@ -308,6 +308,45 @@ module dPMR_TestCases { f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1004_01 testcase TC_PMR_1005_01( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body // v_mse.start(f_TC_transmitOnWrongCC_MS02()); // External function that will do the sending on wrong channel v_mse.start(f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01()); if (PIC_ISF_OR_CSF == e_isf) { v_ut.start(f_TC_msAction_UT(e_toStandby, m_commandISFCSF_utRequest( omit , c_defaultCommonId, e_makePttCallWhitin300msAftertesttone))); } else { v_ut.start(f_TC_msAction_UT(e_toStandby, m_commandISFCSF_utRequest( c_defaultPeerToPeerDialString, omit , e_makePttCallWhitin300msAftertesttone))); } f_startValidation( "TC_PMR_1005_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1005_01 /** * interference on channel, IUT config to impolite */ Loading Loading @@ -347,7 +386,6 @@ module dPMR_TestCases { /** * interference on channel, IUT config to polite to own cc */ // TODO JP, see if this really is ok, it will wait for the t_ack to go down and then send the ack testcase TC_PMR_1007_02( ) runs on ServerSyncComp system TestAdapter { Loading Loading @@ -601,9 +639,8 @@ module dPMR_TestCases { } // end TC_PMR_1011_01 /** * interference on channel, IUT config to polite to own cc, multipla ack within T_ack * interference on channel, IUT config to impolite to own cc, multiple acks */ // TODO JP, see if this really is ok, it will wait for the t_ack to go down and then send the ack testcase TC_PMR_1012_01( ) runs on ServerSyncComp system TestAdapter { Loading @@ -618,6 +655,41 @@ module dPMR_TestCases { //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body //v_mse.start(f_TC_transmitLongVoice_MS02()); xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()), f_getColourCode(), c_102dBm); v_mse.start(f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01()); v_ut.start(f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT(e_impolite)); f_startValidation( "TC_PMR_1012_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1012_01 /** * interference on channel, IUT config to polite to own cc, multipla ack within T_ack */ testcase TC_PMR_1012_02( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body //v_mse.start(f_TC_transmitLongVoice_MS02()); xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()), Loading @@ -627,14 +699,51 @@ module dPMR_TestCases { v_ut.start(f_TC_msToStandbyPoliteLevelUseAckTimerConfigMultipleAcks_UT(e_politeCc)); f_startValidation( "TC_PMR_1012_01",v_mse_val,v_ut_val); f_startValidation( "TC_PMR_1012_02",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1007_02 } // end TC_PMR_1012_02 /** * interference on channel, IUT config to polite to own cc, multiple acks */ testcase TC_PMR_1012_03( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body //v_mse.start(f_TC_transmitLongVoice_MS02()); xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()), f_getColourCode(), c_102dBm); v_mse.start(f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01()); v_ut.start(f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT(e_politeCc)); f_startValidation( "TC_PMR_1012_03",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1012_03 } // end group ChannelAccess Loading Loading @@ -4117,7 +4226,7 @@ module dPMR_TestCases { } // end TC_PMR_1420_03 /** * Broadcast with invalid numeric group address * Broadcast with numeric group address */ testcase TC_PMR_1420_04( ) runs on ServerSyncComp Loading @@ -4134,12 +4243,12 @@ module dPMR_TestCases { f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body // actually Tester need to do synching v_mse.start(f_TC_voiceTxNotTransmitted_MS01()); // sure, if something received then error... v_mse.start(f_TC_voiceTxBroadcastWithTesterId_MS01(c_defaultCSFIUTtalkGroupAddress)); v_ut.start(f_TC_msAction_UT(e_toStandbyAndConfigNumericGroup9991234, m_commandCSF_utRequest( c_defaultBroadcastInvalidNumericGroupDialString, e_reportCallFail))); m_commandCSF_utRequest( c_defaultBroadcastNumericGroupDialString, e_enterDialStringAndPressSendKeyOrHash))); f_startValidation( "TC_PMR_1420_04",v_mse_val,v_ut_val); Loading Loading @@ -4214,6 +4323,107 @@ module dPMR_TestCases { f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1420_06 /** * Broadcast with invalid numeric group address */ testcase TC_PMR_1420_07( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body v_mse.start(f_TC_voiceTxNotTransmitted_MS01()); // sure, if something received then error... v_ut.start(f_TC_msAction_UT(e_toStandbyAndConfigNumericGroup9991234, m_commandCSF_utRequest( c_defaultBroadcastInvalidNumericGroupDialString, e_reportCallFail))); f_startValidation( "TC_PMR_1420_07",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1420_07 /** * Status command with individual address */ testcase TC_PMR_1421_01( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body v_mse.start(f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01(c_defaultIutCSFAddress)); v_ut.start(f_TC_msAction_UT(e_toStandby, m_commandCSF_utRequest( c_defaultStatusCommandDialString, e_enterDialStringAndPressSendKeyOrHash))); f_startValidation( "TC_PMR_1421_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1421_01 /** * forced talkgroup address */ testcase TC_PMR_1423_01( ) runs on ServerSyncComp system TestAdapter { var Mse v_mse; var Ut v_ut; var FncRetCode v_ret := e_success; var Mse v_mse_val; var Mse v_ut_val; //Configuration Up //f_cfMseUp(v_mse, v_ut); f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL //Test body v_mse.start(f_TC_voiceTxWithTesterId_MS01(c_defaultCSFIUTtalkGroupAddress)); v_ut.start(f_TC_msAction_UT(e_toStandbyAndNotConfigNumericGroup9991234, m_commandCSF_utRequest( c_defaultForcedTalkGroupDialString, e_enterDialStringAndPressSendKeyOrHash))); f_startValidation( "TC_PMR_1423_01",v_mse_val,v_ut_val); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_1423_01 /** * call cancel */ Loading Loading @@ -5302,10 +5512,11 @@ module dPMR_TestCases { { tc_ac.stop; if (tc_t_ack.running) { log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWithin_t_ack_MS01: T_ACK_TIMER still running, ack sent too early ****"); setverdict(fail); } else { tc_t_ack.stop; setverdict(pass); } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWithin_t_ack_MS01: ACK not received within T_ACK_TIMER ****"); setverdict(fail); } } [] tc_ac.timeout { Loading Loading @@ -5383,6 +5594,7 @@ module dPMR_TestCases { [] tc_t_ack.timeout { tc_ac.stop; if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) { setverdict(pass); } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01: To few or to many acks received ****"); setverdict(fail); Loading @@ -5396,6 +5608,152 @@ module dPMR_TestCases { } // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01 /** * @desc this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge * receive 2 to 5 acks */ function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01() runs on Mse{ // Variables var default v_dftMse; var FncRetCode v_ret := e_success; var integer v_nrOfAcksReceived; //Test System Parameters f_initMse(); //Default v_dftMse := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body tc_ac.start ; dp1Port.send( m_voiceorT1orT2PayloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), vc_mse.colourCode), m_superFrameList_4Elem( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1, e_p2p), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, vc_mse.colourCode, e_p2p), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3, e_p2p), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, vc_mse.colourCode, e_p2p) ) ), m_endFrame(m_endInformationAck)) ); v_nrOfAcksReceived := 0; alt { [] dp1Port.receive(m_acknowledgement( m_headerInformation(e_ackHeader, vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode) ) { v_nrOfAcksReceived := v_nrOfAcksReceived+1; repeat; } [] tc_ac.timeout { if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) { setverdict(pass) } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01: To few or to many acks received ****"); setverdict(fail); } } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcks_MS01 /** * @desc this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge * receive 2 to 5 acks, when interferance is gone */ function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01() runs on Mse{ // Variables var default v_dftMse; var FncRetCode v_ret := e_success; var integer v_nrOfAcksReceived; //Test System Parameters f_initMse(); //Default v_dftMse := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body tc_ac.start ; dp1Port.send( m_voiceorT1orT2PayloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), vc_mse.colourCode), m_superFrameList_4Elem( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1, e_p2p), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, vc_mse.colourCode, e_p2p), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3, e_p2p), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, vc_mse.colourCode, e_p2p) ) ), m_endFrame(m_endInformationAck)) ); tc_t_toStopInterference.start; v_nrOfAcksReceived := 0; alt { [] dp1Port.receive(m_acknowledgement( m_headerInformation(e_ackHeader, vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode) ) { if (tc_t_toStopInterference.running) { tc_t_toStopInterference.stop; log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01: Interference still on, ack sent too early ****"); setverdict(fail); } else { v_nrOfAcksReceived := v_nrOfAcksReceived+1; repeat; } } [] tc_ac.timeout { if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) { setverdict(pass) } else { log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01: To few or to many acks received ****"); setverdict(fail); } } [] tc_t_toStopInterference.timeout { // Just receive it and xf_stopTransmittingVoice(); repeat; } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksAfterInterferance_MS01 /** * @desc this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge */ Loading Loading @@ -5443,7 +5801,8 @@ module dPMR_TestCases { ) { tc_ac.stop; if (tc_t_ack.running) { if (tc_t_toStopInterference.running) { tc_t_toStopInterference.stop; log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWhenNoInterference_MS01: Interference still on, ack sent too early ****"); setverdict(fail); } else { Loading Loading @@ -5986,6 +6345,97 @@ module dPMR_TestCases { } // end function f_TC_voiceTx_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, and that it is not received until after the TXWAIT * transmitted in the last endframe. */ function f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01 ( ) runs on Mse{ // Variables var FncRetCode v_ret := e_success; var UInt16 v_sfCount := 0; var default v_defvar; timer tc_txWait := PXT_MAX_TXWAIT_PERIOD; //Test System Parameters f_initMse(); //Default v_defvar := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body dp1Port.send( m_voiceorT1orT2PayloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), vc_mse.colourCode), m_superFrameList_4Elem( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1, e_callAll), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, vc_mse.colourCode, e_callAll), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3, e_callAll), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, vc_mse.colourCode, e_callAll) ) ), m_endFrame(m_endInformationNoAck)) ); // start the timer for the txwait time tc_ac.start ; tc_txWait.start alt { [] dp1Port.receive( m_voiceorT1orT2PayloadTransmission( m_headerFrame( mw_headerInformationTx( vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode), mw_superFrameList_OneOrManyElem( m_superFrame( mw_frame1Voice(vc_mse.testerIdUP ), mw_frame2Voice(vc_mse.testerIdLP, vc_mse.colourCode), mw_frame3Voice(vc_mse.iutIdUP), mw_frame4Voice(vc_mse.iutIdLP,vc_mse.colourCode))), m_endFrame(mw_endInformation(e_noAckReq)))) { // received correctly if (tc_txWait.running) { tc_txWait.stop; tc_ac.stop ; log("**** f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01: Timeout: tc_txWait running, message coming too soon ****"); setverdict(fail); } else { tc_ac.stop ; setverdict(pass); } } [] tc_txWait.timeout { repeat; } [] tc_ac.timeout { log("**** f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01: Timeout: TC Timer expiration before reception of complete Voice transmission ****"); setverdict(fail); } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); deactivate; } // end function f_TC_SendVoiceWithTxWaitAndVoiceTxAfterSend_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, is sent to the tester id Loading Loading @@ -6046,6 +6496,66 @@ module dPMR_TestCases { } // end function f_TC_voiceTxWithId_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, is sent to the tester id for a Status Request * @param p_address is the receiving entity */ function f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01 ( MsAddress p_address ) runs on Mse{ // Variables var FncRetCode v_ret := e_success; var UInt16 v_sfCount := 0; var default v_defvar; //Test System Parameters f_initMse(); vc_mse.testerId := p_address; vc_mse.testerIdUP := f_msAddress2Upper(p_address); vc_mse.testerIdLP := f_msAddress2Lower(p_address); //Default v_defvar := activate(a_dftMse(vc_mse.colourCode, e_voice)); //Preamble v_ret := f_taToStandby(); f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body tc_ac.start ; alt { [] dp1Port.receive( m_voiceorT1orT2PayloadTransmission( m_headerFrame( mw_headerInformationStatusTx( vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p), vc_mse.colourCode), mw_superFrameList_OneOrManyElem( m_superFrame( mw_frame1Voice(vc_mse.testerIdUP ), mw_frame2Voice(vc_mse.testerIdLP, vc_mse.colourCode), mw_frame3Voice(vc_mse.iutIdUP), mw_frame4Voice(vc_mse.iutIdLP,vc_mse.colourCode))), m_endFrame(mw_endInformationStatus(e_noAckReq)))) { // received correctly tc_ac.stop ; setverdict(pass); } [] tc_ac.timeout { log("**** f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01: Timeout: TC Timer expiration before reception of complete Voice transmission ****"); setverdict(fail); } } // end alt f_clientSyncAndVerdict(c_tbDone, v_ret); deactivate; } // end function f_TC_voiceTxWithTesterIdAndCheckHeaderAndEndFrameForStatusCommand_MS01 /** * @desc Check that a voice transmission from the MS (IUT) consists of a Header Frame, a list of * Super Frames, and an End Frame, is sent to the tester id Loading Loading @@ -7929,6 +8439,30 @@ module dPMR_TestCases { } // end f_TC_msToStandbyPoliteLevelUseAckTimerConfigMultipleAcks_UT /** * @desc This function will put the MS in an idle mode listening to a * certain channel using the Pixit id or address with the desired Polite Level * and config the IUT to send multiple acks */ function f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT(PoliteLvl p_politeLevel ) runs on Ut { //Variables var default v_dftUt; var FncRetCode v_ret := e_success; //Test System Parameters f_initUt(); //Default v_dftUt := activate(a_dftUt()); v_ret := f_msToStandbyPoliteLevel_UT(e_toStandbyAndMultipleAcks, p_politeLevel); f_clientSyncAndVerdict(c_prDone, v_ret); deactivate; } // end f_TC_msToStandbyPoliteLevelConfigMultipleAcks_UT }//end group ut_TC_Functions Loading
ttcn/dPMR_TestExecution.ttcn +6 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ module dPMR_TestExecution { // group ChannelAccess { // Clause 5.1.2 if (PIC_MS_POLITE_OWN_CC) {execute(TC_PMR_1004_01() );} execute(TC_PMR_1005_01() ); if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_02() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_03() );} Loading @@ -48,6 +48,8 @@ module dPMR_TestExecution { if (PIC_ISF_OR_CSF == e_isf) {execute(TC_PMR_1010_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1011_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1012_01() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1012_02() );} if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1012_03() );} //} // group Framing {// Clause 5.1.3 Loading Loading @@ -199,6 +201,9 @@ module dPMR_TestExecution { if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_04() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_05() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_06() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1420_07() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1421_01() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1423_01() );} if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1424_01() );} // } // end group DialingPlan Loading
ttcn/dPMR_TestSystem.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ group componentDefs { timer tc_ac := PXT_TAC; timer tc_noac := PXT_TNOAC; timer tc_wait := PXT_TWAIT; timer tc_t_ack := 3.0; // TODO JP cannot use the pics, get circular reference!!! Check why timer tc_t_ack := 3.0; // TODO JP cannot use the PICS, get circular reference!!! Check why timer tc_t_toStopInterference := 1.0; //Component variable Loading