Commit da05d55e authored by petersenj's avatar petersenj
Browse files

Implemented 0406_03, 0406_04, 0407_03 and 0407_04

parent 7df894de
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -341,6 +341,61 @@
		        payload := p_payload
			} // end tamplate m_frame4T1Data

			template Frame1 m_frame1T2Data (CalledIdUP p_calledIdUP,
											template Payload p_framePayload,
											in template SlowData p_slowData)  := {
				frameSync := c_fs2,
				frameNumber := e_frame1,
				calledIdUP := p_calledIdUP,
		   		communicationsMode := e_dataT2,
		        commsFormat := e_p2p, 
		        reserved2bit := c_reserved2bits,
		        slowData := p_slowData,
		        payload := p_framePayload
			} // end template m_frame1T2Data



		  	template Frame2 m_frame2T2Data (CalledIdLP p_calledIdLP,
											template Payload p_payload, ColourCode p_cc,
											in template SlowData p_slowData)  := {
				colourCode := p_cc,
				frameNumber := e_frame2,
				calledIdLP := p_calledIdLP,
		   		communicationsMode := e_dataT2,
		        commsFormat := e_p2p, 
		        reserved2bit := c_reserved2bits,
		        slowData := p_slowData,
		        payload := p_payload
			} // end template m_frame2T2Data


		  	template Frame3 m_frame3T2Data (OwnIdUP p_ownIdUP,
											template Payload p_payload,
											in template SlowData p_slowData)  := {
				frameSync := c_fs2,
				frameNumber := e_frame3,
				ownIdUP := p_ownIdUP,
		   		communicationsMode := e_dataT2,
		        commsFormat := e_p2p, 
		        reserved2bit := c_reserved2bits,
		        slowData := p_slowData,
		        payload := p_payload
			} // end template m_frame3T2Data

		  	template Frame4 m_frame4T2Data (OwnIdLP p_ownIdLP,
											template Payload p_payload, ColourCode p_cc,
											in template SlowData p_slowData)  := {
				colourCode := p_cc,
				frameNumber := e_frame4,
				ownIdLP := p_ownIdLP,
		   		communicationsMode := e_dataT2,
		        commsFormat := e_p2p, 
		        reserved2bit := c_reserved2bits,
		        slowData := p_slowData,
		        payload := p_payload
			} // end tamplate m_frame4T2Data

			template Frame1 mw_frame1dataT1orT2 ( 	CalledIdUP p_calledIdUP, 
													in template CommunicationsMode p_commsMode,
													in template SlowData p_slowData)  := {
+301 −1
Original line number Diff line number Diff line
@@ -781,6 +781,56 @@ module dPMR_TestCases {
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_0406_02

			/**
			* acknowledge to T2 Data
			*/
			testcase TC_PMR_0406_03()
			runs on ServerSyncComp
			system TestAdapter {

				//Variables
				var Mse v_mse;
				var Ut v_ut;

				//Configuration Up
				f_cfMseUp(v_mse, v_ut);

				//Test body
				v_mse.start(f_TC_ackOnT2Data_MS01());
				v_ut.start(f_TC_msToStandby_UT()); 

				// synchronize both PTCs
				f_serverSync2ClientsAndStop({c_prDone});

				// Configuration Down
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_0406_03

			/**
			* acknowledge to T2 Data
			*/
			testcase TC_PMR_0406_04()
			runs on ServerSyncComp
			system TestAdapter {

				//Variables
				var Mse v_mse;
				var Ut v_ut;

				//Configuration Up
				f_cfMseUp(v_mse, v_ut);

				//Test body
				v_mse.start(f_TC_ackOnT3Data_MS01());
				v_ut.start(f_TC_msToStandby_UT()); 

				// synchronize both PTCs
				f_serverSync2ClientsAndStop({c_prDone});

				// Configuration Down
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_0406_04

			/**
			* manual disconnection request
			*/
@@ -837,6 +887,64 @@ module dPMR_TestCases {
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_0407_02

			/**
			* automatic disconnection request on t3 data
			*/
			testcase TC_PMR_0407_03(   )
			runs on ServerSyncComp
			system TestAdapter {
		      	var Mse v_mse;
				var Ut v_ut;
				var FncRetCode v_ret := e_success;

				//Configuration Up
				f_cfMseUp(v_mse, v_ut);

				//Test body  
				v_mse.start(f_TC_T2DataWithAutomaticDisconnectionRequestTx_MS01());
				v_ut.start(f_TC_msAction_UT(e_toStandby, 
								m_commandCSF_utRequest(	c_defaultPeerToPeerDialString , 
														e_makeT2DataWithAutomaticDisconnectionRequest)));




				// synchronize both PTCs
				f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

				// Configuration Down
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_0407_03

			/**
			* automatic disconnection request on t3 data
			*/
			testcase TC_PMR_0407_04(   )
			runs on ServerSyncComp
			system TestAdapter {
		      	var Mse v_mse;
				var Ut v_ut;
				var FncRetCode v_ret := e_success;

				//Configuration Up
				f_cfMseUp(v_mse, v_ut);

				//Test body  
				v_mse.start(f_TC_T3Tx_MS01());
				v_ut.start(f_TC_msAction_UT(e_toStandby, 
								m_commandCSF_utRequest(	c_defaultPeerToPeerDialString , 
														e_makeT3DataWithAutomaticDisconnectionRequest)));




				// synchronize both PTCs
				f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

				// Configuration Down
				f_cfMseDown(v_mse, v_ut);
			} // end TC_PMR_0407_04

			/**
			* csf colour code
			*/
@@ -1729,6 +1837,33 @@ module dPMR_TestCases {

					} // end TC_PMR_0807_01

					/**
					* T1 data transmission
					*/
					testcase TC_PMR_0831_01(   )
					runs on ServerSyncComp
					system TestAdapter {
				      	var Mse v_mse;
						var Ut v_ut;
						var FncRetCode v_ret := e_success;

						//Configuration Up
						f_cfMseUp(v_mse, v_ut);

						//Test body
						v_mse.start(f_TC_T1DataHeaderTx_MS01());
						v_ut.start(f_TC_msAction_UT(e_toStandby, 
										m_commandCSF_utRequest(	c_defaultPeerToPeerDialString , 
																e_makeT1DataCallStatusMessage)));

						// synchronize both PTCs
						f_serverSync2ClientsAndStop({c_prDone, c_tbDone});

						// Configuration Down
						f_cfMseDown(v_mse, v_ut);

					} // end TC_PMR_0831_01

				} // end group typeT1Data

				group typeT2Data { // Clause 5.1.3.4.1
@@ -3128,6 +3263,88 @@ module dPMR_TestCases {

		} // end function f_TC_ackOnT1Data_MS01

		/**
		* @desc Checks that the MS responds with an ACK when receiving T2 data and ack req in endframe.
		*/
		function f_TC_ackOnT2Data_MS01( )
		runs on Mse{
			// Variables
			var FncRetCode v_ret := e_success;
			var default v_defvar;

			//Test System Parameters
			f_initMse();
		
			//Default
			v_defvar := activate(a_dftMse(vc_mse.colourCode, e_dataT1));

			//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_dataT2, 
										e_p2p),
									vc_mse.colourCode),
								m_superFrameList_1Elem(
									m_superFrame( 
										m_frame1T2Data(	vc_mse.testerIdUP, 
														m_T1Payload(PXT_DATA_T1_F1),
														m_slowData(	e_DataInFrame,
																	e_shortFileTransfer,
																	e_continueAfterFrame,
																	PXT_DATA_T1_F1_length)),
										m_frame2T2Data(	vc_mse.testerIdLP, 
														m_T1Payload(PXT_DATA_T1_F2), 
														vc_mse.colourCode,
														m_slowData(	e_DataInFrame,
																	e_shortFileTransfer,
																	e_continueAfterFrame,
																	PXT_DATA_T1_F2_length)),
										m_frame3T2Data(	vc_mse.iutIdUP, 
														m_T1Payload(PXT_DATA_T1_F3),
														m_slowData(	e_DataInFrame,
																	e_shortFileTransfer,
																	e_continueAfterFrame,
																	PXT_DATA_T1_F3_length)),
										m_frame4T2Data(	vc_mse.iutIdLP, 
														m_T1Payload(PXT_DATA_T1_F4),
														vc_mse.colourCode,
														m_slowData(	e_DataInFrame,
																	e_shortFileTransfer,
																	e_finishAfterFrame,
																	PXT_DATA_T1_F4_length)))),
										m_endFrame(m_endInformationAck))); 

			alt {
				[] dp1Port.receive(m_acknowledgement( 
									    m_headerInformation(e_ackHeader, vc_mse.testerId, vc_mse.iutId, e_voice, e_p2p),
										vc_mse.colourCode)
								   )
					{
						tc_ac.stop;
						setverdict(pass);
					}
				[] tc_ac.timeout {
						log("**** f_TC_ackOnT2Data_MS01: Timeout: TC Timer expiration before reception of Acknowledgement ****");
						setverdict(fail);	
					}
			} // end alt

			//no Postamble
		
			deactivate;

		} // end function f_TC_ackOnT2Data_MS01


		/**
		* @desc Checks that the MS responds with an ACK when receiving T3 data and ack req in endframe.
		*/
@@ -4418,7 +4635,7 @@ module dPMR_TestCases {

			deactivate;

		} // end function f_TC_T3Tx_MS01
		} // end function f_TC_T3Tx1400Bytes_MS01

		/**
		* @desc	Check that a T3 Data message is received and nack: resending from wrong packet and terminate
@@ -4717,6 +4934,89 @@ module dPMR_TestCases {

		} // end function f_TC_T1DataWithAutomaticDisconnectionRequestTx_MS01

		/**
		* @desc	Check that a data on T2 transmission from the MS (IUT) consists of a Header Frame, a list of
		*       Super Frames, and an End Frame, and that it is disconnected automatically with the disconnection request
		*/
		function f_TC_T2DataWithAutomaticDisconnectionRequestTx_MS01 ( )
		runs on Mse {
			// Variables
			var FncRetCode v_ret := e_success;
			var UInt16 v_sfCount := 0;
			var default v_defvar;


			//Test System Parameters
			f_initMse();
	
			//Default
			v_defvar := activate(a_dftMse(vc_mse.colourCode, e_dataT1));

			//Preamble
			v_ret := f_taToStandby();
			f_clientSyncAndVerdict(c_prDone, v_ret);

			//Test Body
			tc_ac.start ;
			alt {
				[] dp1Port.receive(	m_voiceorT1orT2PayloadTransmission(
										m_headerFrame(
											mw_headerInformationTx(
												vc_mse.testerId, 
												vc_mse.iutId, 
												e_dataT2, 
												e_p2p),
					                    	vc_mse.colourCode),
										mw_superFrameList_OneOrManyElem(
											m_superFrame(
												mw_frame1dataT1orT2(
														vc_mse.testerIdUP,
														e_dataT2,
														mw_slowData(?,?,?,?)),
												mw_frame2dataT1orT2(
														vc_mse.colourCode,
														vc_mse.testerIdLP,
														e_dataT2,
														mw_slowData(?,?,?,?)),
												mw_frame3dataT1orT2(
														vc_mse.iutIdUP,
														e_dataT2,
														mw_slowData(?,?,?,?)),
												mw_frame4dataT1orT2(
														vc_mse.colourCode,
														vc_mse.iutIdLP,
														e_dataT2,
														mw_slowData(?,?,?,?)))),
										m_endFrame(mw_endInformation(e_noAckReq)))) 
 				{
					// received correctly
					dp1Port.send(	m_acknowledgement(
										m_headerInformation(e_ackHeader, vc_mse.testerId, vc_mse.iutId, e_dataT1, e_p2p),
										vc_mse.colourCode));
					repeat;
				}
			[] dp1Port.receive(	m_disconnectRequest(
									m_headerFrame(
										m_headerInformation(e_unconnReqHeader,vc_mse.testerId, vc_mse.iutId, e_dataT1, e_p2p),
										vc_mse.colourCode),
									m_endFrame(mw_endInformation(e_noAckReq))))
				{
					tc_ac.stop;
					setverdict(pass);
				}
			  [] tc_ac.timeout
			  	{
					log("**** f_TC_T2DataWithAutomaticDisconnectionRequestTx_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_T2DataWithAutomaticDisconnectionRequestTx_MS01

		/**
		* @desc	receive data on T1 or T23 transmission from the MS (IUT) , check that SLD fields ok
		*/
+9 −1
Original line number Diff line number Diff line
@@ -35,6 +35,10 @@ module dPMR_TestExecution {
			
			execute(TC_PMR_1008_01() );
			if ((PIC_ISF_OR_CSF == e_isf) and PIC_ISF_VOICE_SUPPORT) {execute(TC_PMR_1009_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() );}

		//}
		//	group Framing {// Clause 5.1.3
			if (PIC_CSF_VOICE_SUPPORT or PIC_ISF_VOICE_SUPPORT) {execute(TC_PMR_0401_01() );}
@@ -58,10 +62,14 @@ module dPMR_TestExecution {
			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_VOICE_SUPPORT) {execute(TC_PMR_0406_01() );} //TODO remark that voice support is perhaps optional according to Pete

			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_TYPE_1_DATA_SUPPORT) {execute(TC_PMR_0406_02() );} 
			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_TYPE_2_DATA_SUPPORT) {execute(TC_PMR_0406_03() );} 
			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_TYPE_3_DATA_SUPPORT) {execute(TC_PMR_0406_04() );} 

			if ((PIC_ISF_OR_CSF == e_csf) and PIC_MANUAL_DISCONNECTION_REQUEST) {execute(TC_PMR_0407_01() );}

			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_TYPE_1_DATA_SUPPORT and PIC_AUTOMATIC_DISCONNECTION_REQUEST) {execute(TC_PMR_0407_02() );}
			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_TYPE_2_DATA_SUPPORT and PIC_AUTOMATIC_DISCONNECTION_REQUEST) {execute(TC_PMR_0407_03() );}
			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_TYPE_3_DATA_SUPPORT and PIC_AUTOMATIC_DISCONNECTION_REQUEST) {execute(TC_PMR_0407_04() );}

			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_VOICE_SUPPORT) {execute(TC_PMR_0811_01({csfColourCode :=c_grpBcf1}, e_useCsfChannel1) );} // TODO! just change a few parameters and all colour code TCs are covered.
			if ((PIC_ISF_OR_CSF == e_csf) and PIC_CSF_VOICE_SUPPORT) {execute(TC_PMR_0811_02({csfColourCode :=c_grpBcf2}, e_useCsfChannel2) );} // TODO! just change a few parameters and all colour code TCs are covered.
+3 −1
Original line number Diff line number Diff line
@@ -585,7 +585,9 @@ module dPMR_Types {
			e_makeT3DataCallWith1400Bytes (62), // make a T3 data call with 1400 bytes payload
			e_setCommonIdTo255 (63), // set common Id to 255
			e_politeToOwnCC (64), // set to be polite to own ColourCode
			e_makeGroupCall (65) // Make a group call to default group address (in ISF it is just a call)
			e_makeT2DataWithAutomaticDisconnectionRequest (65), // Make a T1 data with Automatic Disconnection Request
			e_makeT3DataWithAutomaticDisconnectionRequest (66), // Make a T1 data with Automatic Disconnection Request
			e_makeT1DataCallStatusMessage (67) // Make a T1 data with Automatic Disconnection Request
			
			}