Commit 9cbeb193 authored by petersenj's avatar petersenj
Browse files

All testcases developed except 0837_01 and 0844_01

parent bc8af424
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -140,6 +140,12 @@ module dPMR_Pixits {
		*	@desc Time of Max Case Execution
		*	@desc Time of Max Case Execution
		*/
		*/
		modulepar {float PXT_MAX_CASE_EXEC_PERIOD := 5000E-3} 
		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
	} // end dPMR_Timers
	
	
	group additional {
	group additional {
+21 −0
Original line number Original line Diff line number Diff line
@@ -661,6 +661,20 @@
	  		callInformation := ?
	  		callInformation := ?
		} // end mw_headerInformationVoiceTx
		} // 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) :=
//		template MsAddress mw_msAddress( ISFAddress p_isfAddress) :=
//			{ isfAddress := p_isfAddress }
//			{ isfAddress := p_isfAddress }
		template MsAddress mw_msAddress( template Common_ID  p_commonId, template FixedPart p_fixedPart) :=
		template MsAddress mw_msAddress( template Common_ID  p_commonId, template FixedPart p_fixedPart) :=
@@ -705,6 +719,13 @@
	  		reserved4bit := c_reserved4bits
	  		reserved4bit := c_reserved4bits
		} // end m_endInformation
		} // 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






+548 −14
Original line number Original line Diff line number Diff line
@@ -308,6 +308,45 @@ module dPMR_TestCases {
				f_cfMseDown(v_mse, v_ut);
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_1004_01
			} // 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
			* interference on channel, IUT config to impolite
			*/
			*/
@@ -347,7 +386,6 @@ module dPMR_TestCases {
			/**
			/**
			* interference on channel, IUT config to polite to own cc
			* 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(   )
			testcase TC_PMR_1007_02(   )
			runs on ServerSyncComp
			runs on ServerSyncComp
			system TestAdapter {
			system TestAdapter {
@@ -601,9 +639,8 @@ module dPMR_TestCases {
			} // end TC_PMR_1011_01
			} // 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(   )
			testcase TC_PMR_1012_01(   )
			runs on ServerSyncComp
			runs on ServerSyncComp
			system TestAdapter {
			system TestAdapter {
@@ -618,6 +655,41 @@ module dPMR_TestCases {
				//f_cfMseUp(v_mse, v_ut);
				//f_cfMseUp(v_mse, v_ut);
				f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL
				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  
				//Test body  
				//v_mse.start(f_TC_transmitLongVoice_MS02());
				//v_mse.start(f_TC_transmitLongVoice_MS02());
				xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()),
				xf_transmitVoice(f_getChannelNrFromColourCode(f_getColourCode()),
@@ -627,14 +699,51 @@ module dPMR_TestCases {
				v_ut.start(f_TC_msToStandbyPoliteLevelUseAckTimerConfigMultipleAcks_UT(e_politeCc));
				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
				// synchronize both PTCs
				f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
				f_serverSync2ClientsAndStop({c_prDone, c_tbDone});


				// Configuration Down
				// Configuration Down
				f_cfMseDown(v_mse, v_ut);
				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
		} // end group ChannelAccess


@@ -4117,7 +4226,7 @@ module dPMR_TestCases {
			} // end TC_PMR_1420_03
			} // end TC_PMR_1420_03


			/**
			/**
			* Broadcast with invalid numeric group address
			* Broadcast with numeric group address
			*/
			*/
			testcase TC_PMR_1420_04(   )
			testcase TC_PMR_1420_04(   )
			runs on ServerSyncComp
			runs on ServerSyncComp
@@ -4134,12 +4243,12 @@ module dPMR_TestCases {
				f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL
				f_cfMseUp_val(v_mse, v_ut, v_mse_val, v_ut_val); //SM VAL


				//Test body  
				//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, 
				v_ut.start(f_TC_msAction_UT(e_toStandbyAndConfigNumericGroup9991234, 
												m_commandCSF_utRequest(	c_defaultBroadcastInvalidNumericGroupDialString, 
												m_commandCSF_utRequest(	c_defaultBroadcastNumericGroupDialString, 
																		e_reportCallFail)));
																		e_enterDialStringAndPressSendKeyOrHash)));


				f_startValidation( "TC_PMR_1420_04",v_mse_val,v_ut_val);
				f_startValidation( "TC_PMR_1420_04",v_mse_val,v_ut_val);


@@ -4214,6 +4323,107 @@ module dPMR_TestCases {
				f_cfMseDown(v_mse, v_ut);
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_1420_06
			} // 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
			* call cancel
			*/
			*/
@@ -5302,10 +5512,11 @@ module dPMR_TestCases {
					{
					{
						tc_ac.stop;
						tc_ac.stop;
						if (tc_t_ack.running) {
						if (tc_t_ack.running) {
							log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWithin_t_ack_MS01: T_ACK_TIMER still running, ack sent too early ****");
							tc_t_ack.stop;
							setverdict(fail);
						} else {
							setverdict(pass);
							setverdict(pass);
						} else {
							log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWithin_t_ack_MS01: ACK not received within T_ACK_TIMER ****");
							setverdict(fail);
						}
						}
					}
					}
				[] tc_ac.timeout {
				[] tc_ac.timeout {
@@ -5383,6 +5594,7 @@ module dPMR_TestCases {
				[] tc_t_ack.timeout {
				[] tc_t_ack.timeout {
						tc_ac.stop;
						tc_ac.stop;
						if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) {
						if (v_nrOfAcksReceived >1 and v_nrOfAcksReceived < 6) {
							setverdict(pass);
						} else {
						} else {
							log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01: To few or to many acks received ****");
							log("**** f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01: To few or to many acks received ****");
							setverdict(fail);
							setverdict(fail);
@@ -5396,6 +5608,152 @@ module dPMR_TestCases {


		} // end function f_TC_sendVoiceWithAckReqAndReceiveMultipleAcksWithin_t_ack_MS01
		} // 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
		 * @desc 	this function will send a voice (test Tone) transmission with default addresses default (p2p in CSF) and ask for acknowledge
		 */
		 */
@@ -5443,7 +5801,8 @@ module dPMR_TestCases {
								   )
								   )
					{
					{
						tc_ac.stop;
						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 ****");
							log("**** f_TC_sendVoiceWithAckReqAndReceiveAckWhenNoInterference_MS01: Interference still on, ack sent too early ****");
							setverdict(fail);
							setverdict(fail);
						} else {
						} else {
@@ -5986,6 +6345,97 @@ module dPMR_TestCases {


		} // end function f_TC_voiceTx_MS01
		} // 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
		* @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
		*       Super Frames, and an End Frame, is sent to the tester id
@@ -6046,6 +6496,66 @@ module dPMR_TestCases {


		} // end function f_TC_voiceTxWithId_MS01
		} // 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
		* @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
		*       Super Frames, and an End Frame, is sent to the tester id
@@ -7929,6 +8439,30 @@ module dPMR_TestCases {
				
				
			} // end f_TC_msToStandbyPoliteLevelUseAckTimerConfigMultipleAcks_UT
			} // 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
	}//end group ut_TC_Functions
	
	
+6 −1
Original line number Original line Diff line number Diff line
@@ -37,7 +37,7 @@ module dPMR_TestExecution {
		// 	group ChannelAccess  { // Clause 5.1.2
		// 	group ChannelAccess  { // Clause 5.1.2


			if (PIC_MS_POLITE_OWN_CC) {execute(TC_PMR_1004_01() );}
			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_01() );}
			if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_02() );}
			if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_02() );}
			if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_03() );}
			if (PIC_ISF_OR_CSF == e_csf) {execute(TC_PMR_1007_03() );}
@@ -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_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_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_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
		//	group Framing {// Clause 5.1.3
@@ -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_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_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_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() );} 
				if (PIC_CSF_NUMBER_AND_DIALING_SUPPORT and PIC_CSF_ADDRESS_SPACE_MAPPING) {execute(TC_PMR_1424_01() );} 
				
				
		//	} // end group DialingPlan
		//	} // end group DialingPlan
+1 −1
Original line number Original line Diff line number Diff line
@@ -34,7 +34,7 @@ group componentDefs {
		timer tc_ac := PXT_TAC;
		timer tc_ac := PXT_TAC;
		timer tc_noac := PXT_TNOAC;
		timer tc_noac := PXT_TNOAC;
		timer tc_wait := PXT_TWAIT;
		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;
		timer tc_t_toStopInterference := 1.0;


		//Component variable
		//Component variable
Loading