/** * @author ETSI STF517 * @version $URL$ * $Id$ * @desc SREM TP functions * */ module ItsSrem_TpFunctions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsSremSsem import from LibItsSremSsem_TestSystem all; import from LibItsSremSsem_Functions all; import from LibItsSremSsem_Templates all; import from LibItsSremSsem_TypesAndValues all; import from LibItsSremSsem_Pics all; group iTS_SRole { group sreMessageDissemination { group sreMessageFormat { /** * @desc TP Function for TC_IS_TLC_MSGF_BV_01 */ function f_IS_TLC_MSGF_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; // Test control if (PICS_RSU or not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": not PICS_RSU and PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(ssemNewContent)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu )) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_MSGF_BV_01 } // End of group sreMessageFormat group sreCommunication { /** * @desc TP Function for TC_IS_TLC_COMM_BV_01_01 */ function f_IS_TLC_COMM_BV_01_01 () runs on ItsSremSsem { // Local variables const UInt8 c_gnNhBtpB := 2; var SremInd v_sremInd; // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(ssemNewContent)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithGnParameters( mw_sremPdu( mw_sremWellFormatted ), c_gnNhBtpB )) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Expected SREM encapsultated in BTP-B packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] sremSsemPort.receive(mw_sremIndWithGnParameters(mw_sremPdu(mw_sremWellFormatted), omit)) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": INCONC: no GN NH information in SremInd ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } [] sremSsemPort.receive(mw_sremInd(mw_sremPdu(mw_defaultSrem))) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": FAIL: Expected SREM received, but not encapsulated in BTP-B packet ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_COMM_BV_01_01 /** * @desc TP Function for TC_IS_TLC_COMM_BV_01_02 */ function f_IS_TLC_COMM_BV_01_02 () runs on ItsSremSsem { // Local variables const UInt16 c_gnNhBtpBPort := 2007; var SremInd v_sremInd; // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(ssemNewContent)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithBtpParameters( mw_sremPdu, c_gnNhBtpBPort, 0 )) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Expected SREM encapsultated in BTP packet with port value 2003 received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] sremSsemPort.receive(mw_sremInd(mw_sremPdu(mw_defaultSrem))) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": FAIL: Expected SREM received, but not addressed to the correct destination port. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_COMM_BV_01_02 /** * @desc TP Function for TC_IS_TLC_COMM_BV_03 */ function f_IS_TLC_COMM_BV_03 () runs on ItsSremSsem { // Local variables const UInt8 c_gnHtGbc := 4; var SremInd v_sremInd; // Test control if (PICS_RSU or not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": not PICS_RSU and PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(ssemNewContent)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithGnParameters( mw_sremPdu( mw_sremWellFormatted ), -, c_gnHtGbc )) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Expected SREM encapsulated in GBC packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] sremSsemPort.receive( mw_sremIndWithGnParameters( mw_sremPdu( mw_sremWellFormatted ), -, omit )) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": FAIL: no GN HT information in SremInd. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted ))) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": FAIL: Expected SREM received, but not encapsulated in GBC packet. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_COMM_BV_03 } // End of group sreCommunication } // End of group sreMessageDissemination group sreMessageProcessing { /** * @desc TP Function for TC_IS_TLC_MSGF_BV_03 */ function f_IS_TLC_MSGF_BV_03 () runs on ItsSremSsem { // Local variables var SsemReq v_ssemReq; var integer i; if (PICS_RSU or not PICS_SSEM_RECEPTION) { log("*** " & testcasename() & ": not PICS_RSU and PICS_SSEM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_ssemReq := valueof(m_ssemReq(m_ssemPdu(m_defaultSsem))); sremSsemPort.send(v_ssemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSremEvents) and not match (v_ssemReq.msgOut , vc_utSsemEvents[i].sreMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSsemEvents) ) { log("*** " & testcasename() & ": PASS: SREM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SREM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_MSGF_BV_03 } // End of group sreMessageProcessing } // End of group iTS_SRole group rsuRole { group sreMessageDisseminationRsu { group sreMessageFormatRsu { /** * @desc TP Function for TC_IS_TLC_MSGF_BV_04 */ function f_IS_TLC_MSGF_BV_04 () runs on ItsSremSsem { // Local variables // Test control if (PICS_RSU or not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": not PICS_RSU and PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Send SSEM sremSsemPort.send( m_sremReq( m_ssemPdu( m_ssemPdu ))); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_MSGF_BV_04 } // End of group sreMessageFormatRsu group sreCommunicationRsu { } // End of group sreCommunicationRsu } // End of group sreMessageDisseminationRsu group sreMessageProcessingRsu { /** * @desc TP Function for TC_IS_TLC_MSGF_BV_02 */ function f_IS_TLC_MSGF_BV_02 () runs on ItsSremSsem { // Local variables var SsemReq v_sremReq; var integer i; if (PICS_RSU or not PICS_SREM_RECEPTION) { log("*** " & testcasename() & ": not PICS_RSU and PICS_SREM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_sremReq := valueof(m_ssemReq(m_sremPdu(m_defaultSrem))); sremSsemPort.send(v_sremReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSremEvents) and not match (v_sremReq.msgOut , vc_utSremEvents[i].sreMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSsemEvents) ) { log("*** " & testcasename() & ": PASS: SSEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SSEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLC_MSGF_BV_02 } // End of group sreMessageProcessingRsu } // End of group rsuRole } // End of module ItsSrem_TpFunctions