Loading ttcn/dPMR_Functions.ttcn +37 −94 Original line number Diff line number Diff line Loading @@ -99,25 +99,6 @@ group configFunctions { // /** // * @desc The ISF MSUT is configured to use PXT_APPLICABLE_COMMON_ID. // * An CSF MSUT does not need to be configured. It will receive // * in the Header frame the CalledId and OwnId. // * @param p_cc is the CoulourCode used // * @param p_politeLvl is the Polite level used // * @param p_callType is the CallType used // */ // function f_msConfigureTx(ColourCode p_cc, PoliteLvl p_politeLvl, CallType p_callType) // runs on Mse // return FncRetCode { // var FncRetCode v_ret := e_success; // if (PIC_ISF_OR_CSF == e_isf) { // v_ret := f_handshake_Ut(m_msCfgParamsIsfPoliteTx(f_getChannelNrFromColourCode(p_cc), p_politeLvl, p_callType, int2bit(PXT_APPLICABLE_COMMON_ID,8))); } // else { // v_ret := f_handshake_Ut(m_msCfgParamsCsfPoliteTx(f_getChannelNrFromColourCode(p_cc), p_politeLvl, p_callType, fx_calcDialString(PXT_CSF_ADDRESS_TESTER))); // } // return v_ret; // }//end f_msConfigureTx /** * @desc Configure Upper Tester Loading Loading @@ -165,83 +146,45 @@ return ChannelNumber { var IsfChannelNr ret_isfChannelNr; var CsfChannelNr ret_csfChannelNr; var IsfColourCode v_isf_cc; var CsfColourCode v_csf_cc; if (PIC_ISF_OR_CSF == e_isf) { select (p_cc) { case (c_grpAcf1) { ret_isfChannelNr := e_isfChannelNr_1; } case (c_grpAcf2) { ret_isfChannelNr := e_isfChannelNr_2; } case (c_grpAcf3) { ret_isfChannelNr := e_isfChannelNr_3; } case (c_grpAcf4) { ret_isfChannelNr := e_isfChannelNr_4; } case (c_grpAcf5) { ret_isfChannelNr := e_isfChannelNr_5; } case (c_grpAcf6) { ret_isfChannelNr := e_isfChannelNr_6; } case (c_grpAcf7) { ret_isfChannelNr := e_isfChannelNr_7; } case (c_grpAcf8) { ret_isfChannelNr := e_isfChannelNr_8; } case (c_grpAcf9) { ret_isfChannelNr := e_isfChannelNr_9; } case (c_grpAcf10) { ret_isfChannelNr := e_isfChannelNr_10; } case (c_grpAcf11) { ret_isfChannelNr := e_isfChannelNr_11; } case (c_grpAcf12) { ret_isfChannelNr := e_isfChannelNr_12; } case (c_grpAcf13) { ret_isfChannelNr := e_isfChannelNr_13; } case (c_grpAcf14) { ret_isfChannelNr := e_isfChannelNr_14; } case (c_grpAcf15) { ret_isfChannelNr := e_isfChannelNr_15; } case (c_grpAcf16) { ret_isfChannelNr := e_isfChannelNr_16; } case else { // TODO fix it! if we come here then we are in error } } v_isf_cc := p_cc.isfColourCode; if (c_grpAcf1 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_1} if (c_grpAcf2 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_2} if (c_grpAcf3 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_3} if (c_grpAcf4 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_4} if (c_grpAcf5 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_5} if (c_grpAcf6 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_6} if (c_grpAcf7 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_7} if (c_grpAcf8 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_8} if (c_grpAcf9 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_9} if (c_grpAcf10 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_10} if (c_grpAcf11 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_11} if (c_grpAcf12 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_12} if (c_grpAcf13 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_13} if (c_grpAcf14 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_14} if (c_grpAcf15 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_15} if (c_grpAcf16 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_16} return { isfChannelNr := ret_isfChannelNr }; } else { // its e_csf select (p_cc) { case (c_grpBcf1) { ret_csfChannelNr := e_csfChannelNr_1; } case (c_grpBcf2) { ret_csfChannelNr := e_csfChannelNr_2; } case (c_grpBcf3) { ret_csfChannelNr := e_csfChannelNr_3; } case (c_grpBcf4) { ret_csfChannelNr := e_csfChannelNr_4; } case (c_grpBcf5) { ret_csfChannelNr := e_csfChannelNr_5; } case (c_grpBcf6) { ret_csfChannelNr := e_csfChannelNr_6; } case (c_grpBcf7) { ret_csfChannelNr := e_csfChannelNr_7; } case (c_grpBcf8) { ret_csfChannelNr := e_csfChannelNr_8; } case (c_grpBcf9) { ret_csfChannelNr := e_csfChannelNr_9; } case (c_grpBcf10) { ret_csfChannelNr := e_csfChannelNr_10; } case (c_grpBcf11) { ret_csfChannelNr := e_csfChannelNr_11; } case (c_grpBcf12) { ret_csfChannelNr := e_csfChannelNr_12; } case (c_grpBcf13) { ret_csfChannelNr := e_csfChannelNr_13; } case (c_grpBcf14) { ret_csfChannelNr := e_csfChannelNr_14; } case (c_grpBcf15) { ret_csfChannelNr := e_csfChannelNr_15; } case (c_grpBcf16) { ret_csfChannelNr := e_csfChannelNr_16; } case else { // TODO fix it! if we come here then we are in error } } v_csf_cc := p_cc.isfColourCode; if (c_grpBcf1 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_1} if (c_grpBcf2 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_2} if (c_grpBcf3 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_3} if (c_grpBcf4 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_4} if (c_grpBcf5 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_5} if (c_grpBcf6 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_6} if (c_grpBcf7 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_7} if (c_grpBcf8 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_8} if (c_grpBcf9 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_9} if (c_grpBcf10 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_10} if (c_grpBcf11 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_11} if (c_grpBcf12 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_12} if (c_grpBcf13 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_13} if (c_grpBcf14 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_14} if (c_grpBcf15 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_15} if (c_grpBcf16 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_16} return { csfChannelNr := ret_csfChannelNr }; } } Loading ttcn/dPMR_Pixits.ttcn +46 −63 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ module dPMR_Pixits { import from dPMR_Types all; import from dPMR_Values all; group ChannelUsedInTests { /** * @desc ISF Channel Number to be used in ISF test cases. * @remark see clause 6.1.5 Loading @@ -26,8 +28,10 @@ module dPMR_Pixits { */ modulepar {CsfChannelNr PXT_CSF_CHANNEL_NR := e_csfChannelNr_1 } ////TODO JP add clauses + make groups } // end ChannelUsedInTests group InputData { /** * @desc Voice Test Tone for frame 1, 2, 3 and 4, must be chosen * They consist each of 4x72 bits of data, =288 bits Loading @@ -38,12 +42,9 @@ module dPMR_Pixits { modulepar {Payload PXT_VOICE_TEST_TONE_F3} modulepar {Payload PXT_VOICE_TEST_TONE_F4} // TODO This to be removed, shall not be fixed // /** // * @desc Type of call // */ // modulepar { CallType PXT_CALL_TYPE := e_voiceGrp } } // end InputData group AddressesAndIdsUsed { /** * @desc Applicable Common Id used for ISF only * @remark see clause 8.1.1.1 Loading @@ -61,25 +62,7 @@ module dPMR_Pixits { * @remark see clause 8.2.2 and A.2 */ modulepar {CSFAddress PXT_CSF_ADDRESS_IUT := '111111110000000000000001'B } // TODO This to be removed, shall not be fixed // /** // * @desc The politeness level to be used by the IUT attempts to transmit // */ // modulepar {PoliteLvl PXT_POLITE_LVL := e_impolite} /** TODO JP might be remove (moved to default values) * @desc The ISF common ID used by IUT */ // TODO JP remove? this is not used // modulepar {Common_ID PXT_ISF_COM_ID := '00000001'B} /** TODO JP might be remove (moved to default values) * @desc The Dialstring of the CSF address to be dialled by the IUT */ // TODO JP remove? this is not used // modulepar { DialString PXT_CSF_DIALSTRING := "1234567" } } // end AddressesAndIdsUsed group dPMR_Timers { Loading ttcn/dPMR_Templates.ttcn +48 −52 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ } // end m_headerInformation template HeaderInformation mw_headerInformationVoiceTx ( MsAddress p_calledId , MsAddress p_ownId, CommunicationsMode p_commMode, Loading @@ -264,7 +265,6 @@ template MsAddress m_msAddressFromIsfAddr( ISFAddress p_iadr ) := { isfAddress := p_iadr } // end m_msAddressFromIsfAddr Loading @@ -276,17 +276,15 @@ } //end group InformationElementTemplates template ISFAddress m_isfAddrFromCommonId( Common_ID p_cid ) := { common_ID := p_cid, fixedPart := c_fixedPartAddr } // end m_msAddressFromCommonId group ConfigurationTemplates { //TODO JP use xxx_utRequest / xxx_utConfirm // rename all templates template UtRequest m_testToneDetected_utRequest( ChannelNumber p_channelNumber, Common_ID p_commonId, UtActParams p_utActParameter ) := { Loading @@ -298,6 +296,17 @@ utActParams := p_utActParameter } template UtRequest m_testToneNotDetected_utRequest( ChannelNumber p_channelNumber, UtActParams p_utActParameter ) := { channelNr := p_channelNumber, politeLvl := omit , callType := omit , dialString := omit , isfCidAddr := omit, utActParams := p_utActParameter } template UtRequest m_msToStandBy_utRequest( ChannelNumber p_channelNumber, in template DialString p_dialString, in template Common_ID p_commonId ) := { Loading @@ -309,13 +318,16 @@ utActParams := omit } template UtRequest m_msPressPttThenDekeyPtt_utRequest( ChannelNumber p_channelNumber, DialString p_dialstr ) := { template UtRequest m_msPressPttThenDekeyPtt_utRequest( ChannelNumber p_channelNumber, in template DialString p_dialstr , in template Common_ID p_commonId, UtActParams p_utActParameter) := { channelNr := p_channelNumber, politeLvl := omit , callType := omit , dialString := p_dialstr, isfCidAddr := omit , utActParams := omit utActParams := p_utActParameter } template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, DialString p_dialstr ) := { Loading @@ -328,24 +340,6 @@ template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, Dial } template UtRequest m_msCfgParamsIsfPoliteTx( ChannelNumber p_channelNumber, PoliteLvl p_pl, CallType p_ct, Common_ID p_cid ) := { channelNr := p_channelNumber, politeLvl := p_pl, callType := p_ct, dialString := omit, isfCidAddr := p_cid, utActParams := omit } template UtRequest m_msCfgParamsCsfPoliteTx( ChannelNumber p_channelNumber, PoliteLvl p_pl, CallType p_ct, DialString p_dialStr) := { channelNr := p_channelNumber, politeLvl := p_pl, callType := p_ct, dialString := p_dialStr, isfCidAddr := omit, utActParams := omit } //TODO JP template UtRequest m_msAct_utReq( ChannelNumber p_channelNumber) := { Loading @@ -359,10 +353,12 @@ template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, Dial } // end group ConfigurationTemplates // TODO check these complements if they are correct.... group FncRetCodeTmplts { template FncRetCode m_success := e_success; template FncRetCode m_noSuccess := complement(e_success); template FncRetCode m_noSuccess := complement(m_success); }//end FncRetCodeTmplts Loading @@ -372,7 +368,7 @@ template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, Dial } template UtConfirm mw_utConfirm_noSuccess := { success := complement(e_ut_success), success := e_ut_noSuccess, observation := * } Loading ttcn/dPMR_TestCases.ttcn +142 −12 Original line number Diff line number Diff line Loading @@ -57,6 +57,32 @@ module dPMR_TestCases { } // end TC_PMR_0824_01 /** * @param p_cc The colour code (channel) used */ testcase TC_PMR_0824_03(ColourCode p_cc) 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_testToneTransmissionCommon_ID_set_to_default_MS01(p_cc)); v_ut.start(f_TC_msWaitVoiceReceived_UT(p_cc)); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone,c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_0824_01 } // end group AllCall group Framing { Loading Loading @@ -106,7 +132,7 @@ module dPMR_TestCases { //Test body v_mse.start(f_TC_voiceTx_MS01(p_cc)); // v_ut.start(f_TC_msPressPttThenDekeyPtt_UT(p_cc, PXT_CALL_TYPE)); v_ut.start(f_TC_msPressPttThenDekeyPtt_UT(p_cc)); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); Loading Loading @@ -173,6 +199,52 @@ module dPMR_TestCases { } // end f_TC_voiceTransmissionCommon_ID_set_to_255_MS01 /** * @desc this function will send a voice (test Tone) transmission with Common id set to default * @param p_cc Colour Code */ function f_TC_testToneTransmissionCommon_ID_set_to_default_MS01(ColourCode p_cc) runs on Mse{ // Variables var default v_dftMse; var FncRetCode v_ret := e_success; //Test System Parameters f_initMse_isfAllCall(c_iutAllCall, c_testerNoAllCall); //Default v_dftMse := activate(a_dftMse()); //Preamble f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body dp1Port.send( m_payloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), p_cc), m_superFrameListWith4SuperFrames( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, p_cc), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, p_cc) ) ), m_endFrameConnectReq) ); f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end f_TC_testToneTransmissionCommon_ID_set_to_default_MS01 /** * @desc Checks that the MS responds with an ACK when receiving an Connect Request message. * @param p_cc Colour Code Loading @@ -181,12 +253,13 @@ module dPMR_TestCases { runs on Mse{ // Variables var FncRetCode v_ret := e_success; var default defvar; //Test System Parameters f_initMse(); //Default activate(a_dftMse()); defvar := activate(a_dftMse()); //Preamble f_clientSyncAndVerdict(c_prDone, v_ret); Loading Loading @@ -231,12 +304,14 @@ module dPMR_TestCases { var FncRetCode v_ret := e_success; var UInt16 v_sfCount := 0; var boolean v_headerReceived := false; var default defvar; //Test System Parameters f_initMse(); //Default activate(a_dftMse()); defvar := activate(a_dftMse()); //Preamble f_clientSyncAndVerdict(c_prDone, v_ret); Loading Loading @@ -300,7 +375,7 @@ module dPMR_TestCases { }//end commonTCFunctions group utTCFunctions { group ut_TC_Functions { /** * @desc This function waits for the indication from the UT that IUT has output the 'audible test tone'. Loading Loading @@ -344,6 +419,48 @@ module dPMR_TestCases { } // end function f_TC_msWaitVoiceReceived_UT /** * @desc This function waits for the indication from the UT that IUT has not output the 'audible test tone'. * * @param p_cc Colour Code */ function f_TC_msWaitVoiceNotReceived_UT( ColourCode p_cc) 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()); //Preamble v_ret := f_handshake_Ut(m_testToneNotDetected_utRequest(f_getChannelNrFromColourCode(p_cc), e_testToneNotReceived)); f_clientSyncAndVerdict(c_prDone, v_ret); //Test body tc_maxCaseExecPeriod.start; alt { []utPort.receive(mw_utConfirm_success){ tc_maxCaseExecPeriod.stop; setverdict(pass); } []tc_maxCaseExecPeriod.timeout{ log("**** f_TC_msWaitVoiceReceived_UT: Timeout: Expected message not received. ****"); setverdict(fail); } }//end alt f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end function f_TC_msWaitVoiceNotReceived_UT /** * @desc This function will put the MS in an idle mode listening to a * certain channel using the Pixit id or address Loading @@ -353,12 +470,13 @@ module dPMR_TestCases { runs on Ut { //Variables var FncRetCode v_ret := e_success; var default defvar; //Test System Parameters f_initUt(); //Default activate(a_dftUt()); defvar := activate(a_dftUt()); //Preamble if (PIC_ISF_OR_CSF == e_isf) { Loading Loading @@ -386,24 +504,36 @@ module dPMR_TestCases { * @param p_politeLvl Polite Level * @param p_callType Call Type */ function f_TC_msPressPttThenDekeyPtt_UT(ColourCode p_cc, PoliteLvl p_politeLvl, CallType p_callType) function f_TC_msPressPttThenDekeyPtt_UT(ColourCode p_cc) runs on Ut{ //Variables var FncRetCode v_ret := e_success; var default defvar; //Test System Parameters f_initUt(); //Default activate(a_dftUt()); defvar := activate(a_dftUt()); //Preamble // TODO JP SM FK Why should this have a polite level, // TODO JP fix! v_ret := f_handshake_Ut(m_msPressPttThenDekeyPtt_utRequest(p_cc,)); // TODO JP REMOVE v_ret := f_msConfigureTx(p_cc, p_politeLvl, p_callType); f_TC_msToStandby_UT(p_cc); f_clientSyncAndVerdict(c_prDone, v_ret); //Test body//TODO JP make it an f_handshake_Ut(m_testToneDetected_utReq) if (PIC_ISF_OR_CSF == e_isf) { v_ret := f_handshake_Ut(m_msPressPttThenDekeyPtt_utRequest( f_getChannelNrFromColourCode(p_cc), omit , f_getCommonId(vc_ut.iutId), e_pressPtt)); } else { v_ret := f_handshake_Ut(m_msPressPttThenDekeyPtt_utRequest( f_getChannelNrFromColourCode(p_cc), c_defaultCallGroup, omit , e_pressPtt)); } //v_ret := f_handshake_Ut(m_msAct_utReq); //if (v_ret != e_success) {f_clientSyncAndVerdict(c_tbDone, v_ret);} Loading @@ -413,6 +543,6 @@ module dPMR_TestCases { }//end f_TC_msPressPttThenDekeyPtt_UT }//end utTCFunctions }//end ut_TC_Functions } // end module dPMR_TestCases ttcn/dPMR_Types.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -518,7 +518,8 @@ module dPMR_Types { e_pressPtt (0), //Please press PTT and speak and release PTT //e_dekeyPtt (1), e_statusMessageReceived (1), //Have you received a status message? e_testToneReceived (2) //Have you heard a test tone? e_testToneReceived (2), //Have you heard a test tone? e_testToneNotReceived (3) //Have you NOT heard a test tone? } // ------------ MS configuration parameters --------------- Loading Loading
ttcn/dPMR_Functions.ttcn +37 −94 Original line number Diff line number Diff line Loading @@ -99,25 +99,6 @@ group configFunctions { // /** // * @desc The ISF MSUT is configured to use PXT_APPLICABLE_COMMON_ID. // * An CSF MSUT does not need to be configured. It will receive // * in the Header frame the CalledId and OwnId. // * @param p_cc is the CoulourCode used // * @param p_politeLvl is the Polite level used // * @param p_callType is the CallType used // */ // function f_msConfigureTx(ColourCode p_cc, PoliteLvl p_politeLvl, CallType p_callType) // runs on Mse // return FncRetCode { // var FncRetCode v_ret := e_success; // if (PIC_ISF_OR_CSF == e_isf) { // v_ret := f_handshake_Ut(m_msCfgParamsIsfPoliteTx(f_getChannelNrFromColourCode(p_cc), p_politeLvl, p_callType, int2bit(PXT_APPLICABLE_COMMON_ID,8))); } // else { // v_ret := f_handshake_Ut(m_msCfgParamsCsfPoliteTx(f_getChannelNrFromColourCode(p_cc), p_politeLvl, p_callType, fx_calcDialString(PXT_CSF_ADDRESS_TESTER))); // } // return v_ret; // }//end f_msConfigureTx /** * @desc Configure Upper Tester Loading Loading @@ -165,83 +146,45 @@ return ChannelNumber { var IsfChannelNr ret_isfChannelNr; var CsfChannelNr ret_csfChannelNr; var IsfColourCode v_isf_cc; var CsfColourCode v_csf_cc; if (PIC_ISF_OR_CSF == e_isf) { select (p_cc) { case (c_grpAcf1) { ret_isfChannelNr := e_isfChannelNr_1; } case (c_grpAcf2) { ret_isfChannelNr := e_isfChannelNr_2; } case (c_grpAcf3) { ret_isfChannelNr := e_isfChannelNr_3; } case (c_grpAcf4) { ret_isfChannelNr := e_isfChannelNr_4; } case (c_grpAcf5) { ret_isfChannelNr := e_isfChannelNr_5; } case (c_grpAcf6) { ret_isfChannelNr := e_isfChannelNr_6; } case (c_grpAcf7) { ret_isfChannelNr := e_isfChannelNr_7; } case (c_grpAcf8) { ret_isfChannelNr := e_isfChannelNr_8; } case (c_grpAcf9) { ret_isfChannelNr := e_isfChannelNr_9; } case (c_grpAcf10) { ret_isfChannelNr := e_isfChannelNr_10; } case (c_grpAcf11) { ret_isfChannelNr := e_isfChannelNr_11; } case (c_grpAcf12) { ret_isfChannelNr := e_isfChannelNr_12; } case (c_grpAcf13) { ret_isfChannelNr := e_isfChannelNr_13; } case (c_grpAcf14) { ret_isfChannelNr := e_isfChannelNr_14; } case (c_grpAcf15) { ret_isfChannelNr := e_isfChannelNr_15; } case (c_grpAcf16) { ret_isfChannelNr := e_isfChannelNr_16; } case else { // TODO fix it! if we come here then we are in error } } v_isf_cc := p_cc.isfColourCode; if (c_grpAcf1 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_1} if (c_grpAcf2 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_2} if (c_grpAcf3 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_3} if (c_grpAcf4 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_4} if (c_grpAcf5 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_5} if (c_grpAcf6 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_6} if (c_grpAcf7 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_7} if (c_grpAcf8 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_8} if (c_grpAcf9 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_9} if (c_grpAcf10 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_10} if (c_grpAcf11 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_11} if (c_grpAcf12 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_12} if (c_grpAcf13 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_13} if (c_grpAcf14 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_14} if (c_grpAcf15 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_15} if (c_grpAcf16 == v_isf_cc) {ret_isfChannelNr := e_isfChannelNr_16} return { isfChannelNr := ret_isfChannelNr }; } else { // its e_csf select (p_cc) { case (c_grpBcf1) { ret_csfChannelNr := e_csfChannelNr_1; } case (c_grpBcf2) { ret_csfChannelNr := e_csfChannelNr_2; } case (c_grpBcf3) { ret_csfChannelNr := e_csfChannelNr_3; } case (c_grpBcf4) { ret_csfChannelNr := e_csfChannelNr_4; } case (c_grpBcf5) { ret_csfChannelNr := e_csfChannelNr_5; } case (c_grpBcf6) { ret_csfChannelNr := e_csfChannelNr_6; } case (c_grpBcf7) { ret_csfChannelNr := e_csfChannelNr_7; } case (c_grpBcf8) { ret_csfChannelNr := e_csfChannelNr_8; } case (c_grpBcf9) { ret_csfChannelNr := e_csfChannelNr_9; } case (c_grpBcf10) { ret_csfChannelNr := e_csfChannelNr_10; } case (c_grpBcf11) { ret_csfChannelNr := e_csfChannelNr_11; } case (c_grpBcf12) { ret_csfChannelNr := e_csfChannelNr_12; } case (c_grpBcf13) { ret_csfChannelNr := e_csfChannelNr_13; } case (c_grpBcf14) { ret_csfChannelNr := e_csfChannelNr_14; } case (c_grpBcf15) { ret_csfChannelNr := e_csfChannelNr_15; } case (c_grpBcf16) { ret_csfChannelNr := e_csfChannelNr_16; } case else { // TODO fix it! if we come here then we are in error } } v_csf_cc := p_cc.isfColourCode; if (c_grpBcf1 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_1} if (c_grpBcf2 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_2} if (c_grpBcf3 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_3} if (c_grpBcf4 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_4} if (c_grpBcf5 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_5} if (c_grpBcf6 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_6} if (c_grpBcf7 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_7} if (c_grpBcf8 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_8} if (c_grpBcf9 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_9} if (c_grpBcf10 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_10} if (c_grpBcf11 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_11} if (c_grpBcf12 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_12} if (c_grpBcf13 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_13} if (c_grpBcf14 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_14} if (c_grpBcf15 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_15} if (c_grpBcf16 == v_csf_cc) {ret_csfChannelNr := e_csfChannelNr_16} return { csfChannelNr := ret_csfChannelNr }; } } Loading
ttcn/dPMR_Pixits.ttcn +46 −63 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ module dPMR_Pixits { import from dPMR_Types all; import from dPMR_Values all; group ChannelUsedInTests { /** * @desc ISF Channel Number to be used in ISF test cases. * @remark see clause 6.1.5 Loading @@ -26,8 +28,10 @@ module dPMR_Pixits { */ modulepar {CsfChannelNr PXT_CSF_CHANNEL_NR := e_csfChannelNr_1 } ////TODO JP add clauses + make groups } // end ChannelUsedInTests group InputData { /** * @desc Voice Test Tone for frame 1, 2, 3 and 4, must be chosen * They consist each of 4x72 bits of data, =288 bits Loading @@ -38,12 +42,9 @@ module dPMR_Pixits { modulepar {Payload PXT_VOICE_TEST_TONE_F3} modulepar {Payload PXT_VOICE_TEST_TONE_F4} // TODO This to be removed, shall not be fixed // /** // * @desc Type of call // */ // modulepar { CallType PXT_CALL_TYPE := e_voiceGrp } } // end InputData group AddressesAndIdsUsed { /** * @desc Applicable Common Id used for ISF only * @remark see clause 8.1.1.1 Loading @@ -61,25 +62,7 @@ module dPMR_Pixits { * @remark see clause 8.2.2 and A.2 */ modulepar {CSFAddress PXT_CSF_ADDRESS_IUT := '111111110000000000000001'B } // TODO This to be removed, shall not be fixed // /** // * @desc The politeness level to be used by the IUT attempts to transmit // */ // modulepar {PoliteLvl PXT_POLITE_LVL := e_impolite} /** TODO JP might be remove (moved to default values) * @desc The ISF common ID used by IUT */ // TODO JP remove? this is not used // modulepar {Common_ID PXT_ISF_COM_ID := '00000001'B} /** TODO JP might be remove (moved to default values) * @desc The Dialstring of the CSF address to be dialled by the IUT */ // TODO JP remove? this is not used // modulepar { DialString PXT_CSF_DIALSTRING := "1234567" } } // end AddressesAndIdsUsed group dPMR_Timers { Loading
ttcn/dPMR_Templates.ttcn +48 −52 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ } // end m_headerInformation template HeaderInformation mw_headerInformationVoiceTx ( MsAddress p_calledId , MsAddress p_ownId, CommunicationsMode p_commMode, Loading @@ -264,7 +265,6 @@ template MsAddress m_msAddressFromIsfAddr( ISFAddress p_iadr ) := { isfAddress := p_iadr } // end m_msAddressFromIsfAddr Loading @@ -276,17 +276,15 @@ } //end group InformationElementTemplates template ISFAddress m_isfAddrFromCommonId( Common_ID p_cid ) := { common_ID := p_cid, fixedPart := c_fixedPartAddr } // end m_msAddressFromCommonId group ConfigurationTemplates { //TODO JP use xxx_utRequest / xxx_utConfirm // rename all templates template UtRequest m_testToneDetected_utRequest( ChannelNumber p_channelNumber, Common_ID p_commonId, UtActParams p_utActParameter ) := { Loading @@ -298,6 +296,17 @@ utActParams := p_utActParameter } template UtRequest m_testToneNotDetected_utRequest( ChannelNumber p_channelNumber, UtActParams p_utActParameter ) := { channelNr := p_channelNumber, politeLvl := omit , callType := omit , dialString := omit , isfCidAddr := omit, utActParams := p_utActParameter } template UtRequest m_msToStandBy_utRequest( ChannelNumber p_channelNumber, in template DialString p_dialString, in template Common_ID p_commonId ) := { Loading @@ -309,13 +318,16 @@ utActParams := omit } template UtRequest m_msPressPttThenDekeyPtt_utRequest( ChannelNumber p_channelNumber, DialString p_dialstr ) := { template UtRequest m_msPressPttThenDekeyPtt_utRequest( ChannelNumber p_channelNumber, in template DialString p_dialstr , in template Common_ID p_commonId, UtActParams p_utActParameter) := { channelNr := p_channelNumber, politeLvl := omit , callType := omit , dialString := p_dialstr, isfCidAddr := omit , utActParams := omit utActParams := p_utActParameter } template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, DialString p_dialstr ) := { Loading @@ -328,24 +340,6 @@ template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, Dial } template UtRequest m_msCfgParamsIsfPoliteTx( ChannelNumber p_channelNumber, PoliteLvl p_pl, CallType p_ct, Common_ID p_cid ) := { channelNr := p_channelNumber, politeLvl := p_pl, callType := p_ct, dialString := omit, isfCidAddr := p_cid, utActParams := omit } template UtRequest m_msCfgParamsCsfPoliteTx( ChannelNumber p_channelNumber, PoliteLvl p_pl, CallType p_ct, DialString p_dialStr) := { channelNr := p_channelNumber, politeLvl := p_pl, callType := p_ct, dialString := p_dialStr, isfCidAddr := omit, utActParams := omit } //TODO JP template UtRequest m_msAct_utReq( ChannelNumber p_channelNumber) := { Loading @@ -359,10 +353,12 @@ template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, Dial } // end group ConfigurationTemplates // TODO check these complements if they are correct.... group FncRetCodeTmplts { template FncRetCode m_success := e_success; template FncRetCode m_noSuccess := complement(e_success); template FncRetCode m_noSuccess := complement(m_success); }//end FncRetCodeTmplts Loading @@ -372,7 +368,7 @@ template UtRequest m_msCfgParamsCsfPoliteRx( ChannelNumber p_channelNumber, Dial } template UtConfirm mw_utConfirm_noSuccess := { success := complement(e_ut_success), success := e_ut_noSuccess, observation := * } Loading
ttcn/dPMR_TestCases.ttcn +142 −12 Original line number Diff line number Diff line Loading @@ -57,6 +57,32 @@ module dPMR_TestCases { } // end TC_PMR_0824_01 /** * @param p_cc The colour code (channel) used */ testcase TC_PMR_0824_03(ColourCode p_cc) 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_testToneTransmissionCommon_ID_set_to_default_MS01(p_cc)); v_ut.start(f_TC_msWaitVoiceReceived_UT(p_cc)); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone,c_tbDone}); // Configuration Down f_cfMseDown(v_mse, v_ut); } // end TC_PMR_0824_01 } // end group AllCall group Framing { Loading Loading @@ -106,7 +132,7 @@ module dPMR_TestCases { //Test body v_mse.start(f_TC_voiceTx_MS01(p_cc)); // v_ut.start(f_TC_msPressPttThenDekeyPtt_UT(p_cc, PXT_CALL_TYPE)); v_ut.start(f_TC_msPressPttThenDekeyPtt_UT(p_cc)); // synchronize both PTCs f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); Loading Loading @@ -173,6 +199,52 @@ module dPMR_TestCases { } // end f_TC_voiceTransmissionCommon_ID_set_to_255_MS01 /** * @desc this function will send a voice (test Tone) transmission with Common id set to default * @param p_cc Colour Code */ function f_TC_testToneTransmissionCommon_ID_set_to_default_MS01(ColourCode p_cc) runs on Mse{ // Variables var default v_dftMse; var FncRetCode v_ret := e_success; //Test System Parameters f_initMse_isfAllCall(c_iutAllCall, c_testerNoAllCall); //Default v_dftMse := activate(a_dftMse()); //Preamble f_clientSyncAndVerdict(c_prDone, v_ret); //Test Body dp1Port.send( m_payloadTransmission( m_headerFrame( m_headerInformation(e_commStartHeader, vc_mse.iutId, vc_mse.testerId, e_voice, e_p2p), p_cc), m_superFrameListWith4SuperFrames( m_superFrame( m_frame1AudibleTestTone(vc_mse.iutIdUP, PXT_VOICE_TEST_TONE_F1), m_frame2AudibleTestTone(vc_mse.iutIdLP, PXT_VOICE_TEST_TONE_F2, p_cc), m_frame3AudibleTestTone(vc_mse.testerIdUP, PXT_VOICE_TEST_TONE_F3), m_frame4AudibleTestTone(vc_mse.testerIdLP, PXT_VOICE_TEST_TONE_F4, p_cc) ) ), m_endFrameConnectReq) ); f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end f_TC_testToneTransmissionCommon_ID_set_to_default_MS01 /** * @desc Checks that the MS responds with an ACK when receiving an Connect Request message. * @param p_cc Colour Code Loading @@ -181,12 +253,13 @@ module dPMR_TestCases { runs on Mse{ // Variables var FncRetCode v_ret := e_success; var default defvar; //Test System Parameters f_initMse(); //Default activate(a_dftMse()); defvar := activate(a_dftMse()); //Preamble f_clientSyncAndVerdict(c_prDone, v_ret); Loading Loading @@ -231,12 +304,14 @@ module dPMR_TestCases { var FncRetCode v_ret := e_success; var UInt16 v_sfCount := 0; var boolean v_headerReceived := false; var default defvar; //Test System Parameters f_initMse(); //Default activate(a_dftMse()); defvar := activate(a_dftMse()); //Preamble f_clientSyncAndVerdict(c_prDone, v_ret); Loading Loading @@ -300,7 +375,7 @@ module dPMR_TestCases { }//end commonTCFunctions group utTCFunctions { group ut_TC_Functions { /** * @desc This function waits for the indication from the UT that IUT has output the 'audible test tone'. Loading Loading @@ -344,6 +419,48 @@ module dPMR_TestCases { } // end function f_TC_msWaitVoiceReceived_UT /** * @desc This function waits for the indication from the UT that IUT has not output the 'audible test tone'. * * @param p_cc Colour Code */ function f_TC_msWaitVoiceNotReceived_UT( ColourCode p_cc) 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()); //Preamble v_ret := f_handshake_Ut(m_testToneNotDetected_utRequest(f_getChannelNrFromColourCode(p_cc), e_testToneNotReceived)); f_clientSyncAndVerdict(c_prDone, v_ret); //Test body tc_maxCaseExecPeriod.start; alt { []utPort.receive(mw_utConfirm_success){ tc_maxCaseExecPeriod.stop; setverdict(pass); } []tc_maxCaseExecPeriod.timeout{ log("**** f_TC_msWaitVoiceReceived_UT: Timeout: Expected message not received. ****"); setverdict(fail); } }//end alt f_clientSyncAndVerdict(c_tbDone, v_ret); //no Postamble deactivate; } // end function f_TC_msWaitVoiceNotReceived_UT /** * @desc This function will put the MS in an idle mode listening to a * certain channel using the Pixit id or address Loading @@ -353,12 +470,13 @@ module dPMR_TestCases { runs on Ut { //Variables var FncRetCode v_ret := e_success; var default defvar; //Test System Parameters f_initUt(); //Default activate(a_dftUt()); defvar := activate(a_dftUt()); //Preamble if (PIC_ISF_OR_CSF == e_isf) { Loading Loading @@ -386,24 +504,36 @@ module dPMR_TestCases { * @param p_politeLvl Polite Level * @param p_callType Call Type */ function f_TC_msPressPttThenDekeyPtt_UT(ColourCode p_cc, PoliteLvl p_politeLvl, CallType p_callType) function f_TC_msPressPttThenDekeyPtt_UT(ColourCode p_cc) runs on Ut{ //Variables var FncRetCode v_ret := e_success; var default defvar; //Test System Parameters f_initUt(); //Default activate(a_dftUt()); defvar := activate(a_dftUt()); //Preamble // TODO JP SM FK Why should this have a polite level, // TODO JP fix! v_ret := f_handshake_Ut(m_msPressPttThenDekeyPtt_utRequest(p_cc,)); // TODO JP REMOVE v_ret := f_msConfigureTx(p_cc, p_politeLvl, p_callType); f_TC_msToStandby_UT(p_cc); f_clientSyncAndVerdict(c_prDone, v_ret); //Test body//TODO JP make it an f_handshake_Ut(m_testToneDetected_utReq) if (PIC_ISF_OR_CSF == e_isf) { v_ret := f_handshake_Ut(m_msPressPttThenDekeyPtt_utRequest( f_getChannelNrFromColourCode(p_cc), omit , f_getCommonId(vc_ut.iutId), e_pressPtt)); } else { v_ret := f_handshake_Ut(m_msPressPttThenDekeyPtt_utRequest( f_getChannelNrFromColourCode(p_cc), c_defaultCallGroup, omit , e_pressPtt)); } //v_ret := f_handshake_Ut(m_msAct_utReq); //if (v_ret != e_success) {f_clientSyncAndVerdict(c_tbDone, v_ret);} Loading @@ -413,6 +543,6 @@ module dPMR_TestCases { }//end f_TC_msPressPttThenDekeyPtt_UT }//end utTCFunctions }//end ut_TC_Functions } // end module dPMR_TestCases
ttcn/dPMR_Types.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -518,7 +518,8 @@ module dPMR_Types { e_pressPtt (0), //Please press PTT and speak and release PTT //e_dekeyPtt (1), e_statusMessageReceived (1), //Have you received a status message? e_testToneReceived (2) //Have you heard a test tone? e_testToneReceived (2), //Have you heard a test tone? e_testToneNotReceived (3) //Have you NOT heard a test tone? } // ------------ MS configuration parameters --------------- Loading