Loading ttcn/AtsAutoInterop/ItsAutoInterop_Functions.ttcn +26 −300 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ module ItsAutoInterop_Functions { import from LibItsGeoNetworking_TypesAndValues all; import from LibItsGeoNetworking_Templates all; import from LibItsGeoNetworking_Pics all; import from LibItsGeoNetworking_Functions all; import from LibItsGeoNetworking_TestSystem all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; import from LibItsSecurity_Templates all; Loading @@ -31,54 +33,18 @@ module ItsAutoInterop_Functions { group utFunctions { /** * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsAutoInteropGeonetworking { //deactivate autoInteropPort default alts vc_autoInteropDefaultActive := false; utPort.send(p_init); tc_wait.start; alt { //FIXME RGY As discussed, port in type is changed to a top-level union type // [] utPort.receive(UtInitializeResult:true) { [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } [] utPort.receive { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_wait.timeout { log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } //activate autoInteropPort default alts vc_autoInteropDefaultActive := true; } /** * @desc Triggers event from the application layer * @param p_event The event to trigger. */ function f_utTriggerEvent(template (value) UtAutoInteropTrigger p_event) runs on ItsAutoInteropGeonetworking { function f_utTriggerEvent(template (value) UtAutoInteropTrigger p_event) runs on ItsBaseGeoNetworking { //deactivate autoInteropPort default alts vc_autoInteropDefaultActive := false; vc_gnDefaultActive := false; utPort.send(p_event); tc_wait.start; alt { //FIXME RGY As discussed, port in type is changed to a top-level union type // [] utPort.receive(UtAutoInteropTriggerResult:true) { [] utPort.receive(UtAutoInteropTriggerResult:true) { tc_wait.stop; } Loading @@ -90,7 +56,7 @@ module ItsAutoInterop_Functions { } //activate autoInteropPort default alts vc_autoInteropDefaultActive := true; vc_gnDefaultActive := true; } } // End of group utFunctions Loading @@ -104,7 +70,7 @@ module ItsAutoInterop_Functions { function f_hmiInitializeIut(template (value) HmiInitialize p_init) runs on ItsAutoInteropGeonetworking { //deactivate autoInteropPort default alts vc_autoInteropDefaultActive := false; vc_gnDefaultActive := false; hmiPort.send(p_init); tc_wait.start; Loading @@ -127,7 +93,7 @@ module ItsAutoInterop_Functions { } //activate autoInteropPort default alts vc_autoInteropDefaultActive := true; vc_gnDefaultActive := true; } Loading @@ -143,7 +109,7 @@ module ItsAutoInterop_Functions { function f_cfPtcUp( in ItsAutoInteropGeonetworking p_eut, in Scenario p_scenario := e_staticPosition // TODO Not used ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // EUT //map(p_eut:acPort, system:acPort); Not used Loading @@ -155,7 +121,7 @@ module ItsAutoInterop_Functions { //activate(a_cfPtcDown()); // FIXME To be done //Initialze the IUT f_initialiseSecuredMode(); LibItsGeoNetworking_Functions.f_initialiseSecuredMode(); // MTC intializes IUT f_initialState(p_scenario); Loading @@ -175,7 +141,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); Loading Loading @@ -208,7 +174,7 @@ module ItsAutoInterop_Functions { function f_mtcCf02Up( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); Loading Loading @@ -237,7 +203,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); Loading @@ -263,8 +229,9 @@ module ItsAutoInterop_Functions { * @desc The default preamble. */ function f_prDefault() runs on ItsAutoInteropGeonetworking { activate(a_default()); activate(a_utDefault()); activate(ItsAutoInterop_Functions.a_default()); activate(LibItsGeoNetworking_Functions.a_default()); activate(LibItsGeoNetworking_Functions.a_utDefault()); activate(a_hmiDefault()); } Loading @@ -278,7 +245,7 @@ module ItsAutoInterop_Functions { */ function f_cfPtcDown( inout ItsAutoInteropGeonetworking p_eut ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut.done; Loading Loading @@ -307,7 +274,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut1.done; Loading Loading @@ -340,7 +307,7 @@ module ItsAutoInterop_Functions { function f_mtcCf02Down( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut1.done; Loading @@ -365,7 +332,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut1.done; Loading @@ -391,7 +358,7 @@ module ItsAutoInterop_Functions { */ function f_poDefault() runs on ItsAutoInteropGeonetworking { deactivate; f_acStopScenario(); LibItsGeoNetworking_Functions.f_acStopScenario(); } } // End of group postambles Loading @@ -416,183 +383,6 @@ module ItsAutoInterop_Functions { } // End of group autoInteropPosition group autoInteropConfiguration { /** * @desc Brings the IUT into an initial state. * @remark Component variable vc_hashedId8ToBeUsed shall be set with the IUT certificate to be used */ function f_initialState(Scenario p_scenario := e_staticPosition) runs on ItsAutoInteropGeonetworking { if (PICS_GN_SECURITY) { var Oct8 v_hashedId8ToBeUsed := f_setupIutCertificate(vc_hashedId8ToBeUsed); if (oct2int(v_hashedId8ToBeUsed) == 0) { v_hashedId8ToBeUsed := 'FFFFFFFFFFFFFFFF'O; // Reset to unknown value, the IUT will use its own certificates } f_utInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); // TODO f_hmiInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); } // else, default behavior else { f_utInitializeIut(m_gnInitialize); f_hmiInitializeIut(m_hmiInitialize); } // TODO f_acLoadScenario(p_scenario); // TODO f_acStartScenario(); } /** * @desc Initialise secure mode if required */ function f_initialiseSecuredMode() runs on ItsAutoInteropGeonetworking { if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { if(e_success != f_acEnableSecurity()){ log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); stop; } } } // End of function f_initialiseSecuredMode() function f_uninitialiseSecuredMode() runs on ItsAutoInteropGeonetworking { if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { f_acDisableSecurity(); } } // End of function f_initialiseSecuredMode() /** * @desc Triggers test adapter to enable security support * @return FncRetCode */ function f_acEnableSecurity() runs on ItsAutoInteropGeonetworking return FncRetCode { // Local variables // Load certificates if (PICS_GN_SECURITY) { if( not f_loadCertificates(PX_IUT_SEC_CONFIG_NAME) ) { return e_error; } // FIXME Useless??? // // Initialize vc_location // f_setGenerationLocation( // f_getTsLatitude(), // f_getTsLongitude() // ); return f_acTriggerSecEvent(m_acEnableSecurity(cc_taCert_A)); } return f_acTriggerSecEvent(m_acEnableSecurity(PX_CERT_FOR_TS)); } /** * @desc Triggers test adapter to disable security support * @return FncRetCode */ function f_acDisableSecurity() runs on ItsAutoInteropGeonetworking return FncRetCode { f_unloadCertificates(); return f_acTriggerSecEvent(m_acDisableSecurity); } /** * @desc Triggers event in the test system adaptation. * @param p_event The event to trigger * @return FncRetCode */ function f_acTriggerSecEvent( in template (value) AcSecPrimitive p_event ) runs on ItsAutoInteropGeonetworking return FncRetCode { var FncRetCode v_ret := e_success; acPort.send(p_event); tc_ac.start; alt { [] acPort.receive(m_acSecResponseSuccess) { tc_ac.stop; } [] acPort.receive { tc_ac.stop; log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_ac.timeout { log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } return v_ret; } } // End of group autoInteropConfiguration group adapterControl { /** * @desc Triggers event in the test system adaptation. * @param p_event The event to trigger * @return FncRetCode */ function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsAutoInteropGeonetworking return FncRetCode { var FncRetCode v_ret := e_success; acPort.send(p_event); tc_ac.start; alt { [] acPort.receive(m_acGnssResponseSuccess) { tc_ac.stop; } [] acPort.receive { tc_ac.stop; log("*** f_acTriggerEvent: ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_ac.timeout { log("*** f_acTriggerEvent: ERROR: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } return v_ret; } /** * @desc Loads the given scenario * @param p_scenario The scenario to load. */ function f_acLoadScenario(Scenario p_scenario) runs on ItsAutoInteropGeonetworking { if (PX_GNSS_SCENARIO_SUPPORT==true) { f_acTriggerGnssEvent(m_loadScenario(p_scenario)); } } // end f_acLoadScenario /** * @desc Starts a loaded scenario */ function f_acStartScenario() runs on ItsAutoInteropGeonetworking { if (PX_GNSS_SCENARIO_SUPPORT==true) { f_acTriggerGnssEvent(m_startScenario); vc_scenarioStarted := true; } } // end f_acStartScenario /** * @desc Stops a loaded scenario */ function f_acStopScenario() runs on ItsAutoInteropGeonetworking { if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { f_acTriggerGnssEvent(m_stopScenario); vc_scenarioStarted := false; } } // end f_acStopScenario } // End of group adapterControl group autoInteropAltsteps { /** Loading @@ -602,47 +392,7 @@ module ItsAutoInterop_Functions { // Local variables var GeoNetworkingInd v_gnInd; [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering LSRequest mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsRequestPacket( ?, ? )))) { // Skip LS messages repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering LSReply mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsReplyPacket( ?, ? )))) { // Skip LS messages repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering Secured CA messages mw_geoNwInd( mw_geoNwSecPdu( mdw_securedMessage_CAMs, ? ))) { // Skip CA messages log("*** a_default: WARNING: Skip secured CA messages ***"); repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering Secured DEN messages mw_geoNwInd( mw_geoNwSecPdu( mdw_securedMessage_DENMs, ? ))) { // Skip DEN messages log("*** a_default: WARNING: Skip secured DEN messages ***"); repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( [vc_gnDefaultActive] geoNetworkingPort.receive( mw_geoNwInd( ? )) -> value v_gnInd { // Unexpected GeoNetworking message ==> require refine filtering above Loading @@ -652,40 +402,16 @@ module ItsAutoInterop_Functions { v_gnInd )); } [vc_autoInteropDefaultActive] eutGeoNetworkingPort.receive { // Unexpected EutGeoNetworking message ==> require refine filtering above [vc_gnDefaultActive] eutGeoNetworkingPort.receive { // Unexpected EutGeoNetworking message ==> require refine filtering above log("*** a_default: ERROR: Received an unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_wait.timeout { log("*** a_default: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] tc_ac.timeout { log("*** a_default: ERROR: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] a_shutdown() { log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } /** * @desc The default for handling upper tester messages. */ altstep a_utDefault() runs on ItsAutoInteropGeonetworking { var UtGnEventInd v_ind; [vc_utDefaultActive] utPort.receive(UtGnEventInd:?) -> value v_ind { //store every upper tester indication received vc_utInds[lengthof(vc_utInds)] := v_ind; repeat; } [vc_utDefaultActive] utPort.receive { log("*** " & testcasename() & ": INFO: Received unexpected UT message from IUT ***"); repeat; } } /** * @desc The default for handling HMI messages. */ Loading Loading @@ -720,7 +446,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4*/ ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { [] a_shutdown() { // f_mtcCf01Down(p_eut1, p_eut2, p_eut3, p_eut4); log("*** a_mtcCf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); Loading @@ -734,7 +460,7 @@ module ItsAutoInterop_Functions { altstep a_mtcCf02Down( /*inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2*/ ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { [] a_shutdown() { // f_mtcCf02Down(p_eut1, p_eut2); log("*** a_mtcCf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); Loading @@ -749,7 +475,7 @@ module ItsAutoInterop_Functions { /*inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3*/ ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { [] a_shutdown() { // f_mtcCf03Down(p_eut1, p_eut2, p_eut3); log("*** a_mtcCf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); Loading ttcn/AtsAutoInterop/ItsAutoInterop_Pics.ttcn +11 −10 Original line number Diff line number Diff line Loading @@ -3,24 +3,15 @@ module ItsAutoInterop_Pics { // LibCommon import from LibCommon_BasicTypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsBtp import from LibItsBtp_TypesAndValues all; import from LibItsBtp_Templates all; // LibItsGeoNetworking import from LibItsGeoNetworking_TypesAndValues all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; /** * @desc BTP destination port identifier for CAM protocol * @see TODO * @see ETSI DTS/ITS0144 Table */ modulepar BtpPortId PICS_CAM_BTP_DESTINATION_PORT := 2001; Loading Loading @@ -104,4 +95,14 @@ module ItsAutoInterop_Pics { elevation := '0000'O } /** * @desc Absolute coordinate for TARGET_GEOAREA * @see TODO */ modulepar ThreeDLocation PICS_TARGET_GEOAREA := { latitude := 435522970, longitude := 103000170, elevation := '0000'O } } // End of module ItsAutoInterop_Pics ttcn/AtsAutoInterop/ItsAutoInterop_Pixits.ttcn +3 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ module ItsAutoInterop_Pixits { modulepar charstring PX_PCAP_MIDs_FILTER := "00:00:00:00:00:01;00:00:00:00:00:02"; /** * @desc PCAP frame offsets to skip when starting to play the PCAP file * @desc The PCAP frame offsets to skip when starting to play the PCAP file */ modulepar UInt32 PX_PCAP_START_OFFSET := 0; Loading Loading @@ -74,9 +74,9 @@ module ItsAutoInterop_Pixits { modulepar integer PX_EUT4_ID := 3; /** * @desc Epsilon distance between the vehicule and a position * @desc Pre-defined security distance */ modulepar float PX_EPSILON_DISTANCE := 1.0; modulepar float PX_PRE_DEFINED_SECURITY_DISTANCE := 0.0; /** * @desc Pre-defined security distance for forward collision risk condition Loading ttcn/AtsAutoInterop/ItsAutoInterop_Templates.ttcn +13 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,19 @@ module ItsAutoInterop_Templates { longitude := valueof(p_position.longitude) } // End of template mw_denm_stationId /** * @desc Receive template for the destinationArea which indicates the TARGET_GEOAREA * @param p_gnAddress GN_Address to be contained in the long position vector */ template (present) LongPosVector mw_longPosVector_targetArea( template (present) Int32 p_latitude := ?, template (present) Int32 p_longitude := ? ) := { latitude := p_latitude, longitude := p_longitude } // End of template mw_longPosVector_targetArea /** * @desc Receive template for GeoNetworking DENM Packet * @param p_sourceLongPosVec Source position vector of destination Loading ttcn/AtsAutoInterop/ItsAutoInterop_TestCases.ttcn +1004 −179 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
ttcn/AtsAutoInterop/ItsAutoInterop_Functions.ttcn +26 −300 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ module ItsAutoInterop_Functions { import from LibItsGeoNetworking_TypesAndValues all; import from LibItsGeoNetworking_Templates all; import from LibItsGeoNetworking_Pics all; import from LibItsGeoNetworking_Functions all; import from LibItsGeoNetworking_TestSystem all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; import from LibItsSecurity_Templates all; Loading @@ -31,54 +33,18 @@ module ItsAutoInterop_Functions { group utFunctions { /** * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsAutoInteropGeonetworking { //deactivate autoInteropPort default alts vc_autoInteropDefaultActive := false; utPort.send(p_init); tc_wait.start; alt { //FIXME RGY As discussed, port in type is changed to a top-level union type // [] utPort.receive(UtInitializeResult:true) { [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } [] utPort.receive { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_wait.timeout { log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } //activate autoInteropPort default alts vc_autoInteropDefaultActive := true; } /** * @desc Triggers event from the application layer * @param p_event The event to trigger. */ function f_utTriggerEvent(template (value) UtAutoInteropTrigger p_event) runs on ItsAutoInteropGeonetworking { function f_utTriggerEvent(template (value) UtAutoInteropTrigger p_event) runs on ItsBaseGeoNetworking { //deactivate autoInteropPort default alts vc_autoInteropDefaultActive := false; vc_gnDefaultActive := false; utPort.send(p_event); tc_wait.start; alt { //FIXME RGY As discussed, port in type is changed to a top-level union type // [] utPort.receive(UtAutoInteropTriggerResult:true) { [] utPort.receive(UtAutoInteropTriggerResult:true) { tc_wait.stop; } Loading @@ -90,7 +56,7 @@ module ItsAutoInterop_Functions { } //activate autoInteropPort default alts vc_autoInteropDefaultActive := true; vc_gnDefaultActive := true; } } // End of group utFunctions Loading @@ -104,7 +70,7 @@ module ItsAutoInterop_Functions { function f_hmiInitializeIut(template (value) HmiInitialize p_init) runs on ItsAutoInteropGeonetworking { //deactivate autoInteropPort default alts vc_autoInteropDefaultActive := false; vc_gnDefaultActive := false; hmiPort.send(p_init); tc_wait.start; Loading @@ -127,7 +93,7 @@ module ItsAutoInterop_Functions { } //activate autoInteropPort default alts vc_autoInteropDefaultActive := true; vc_gnDefaultActive := true; } Loading @@ -143,7 +109,7 @@ module ItsAutoInterop_Functions { function f_cfPtcUp( in ItsAutoInteropGeonetworking p_eut, in Scenario p_scenario := e_staticPosition // TODO Not used ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // EUT //map(p_eut:acPort, system:acPort); Not used Loading @@ -155,7 +121,7 @@ module ItsAutoInterop_Functions { //activate(a_cfPtcDown()); // FIXME To be done //Initialze the IUT f_initialiseSecuredMode(); LibItsGeoNetworking_Functions.f_initialiseSecuredMode(); // MTC intializes IUT f_initialState(p_scenario); Loading @@ -175,7 +141,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); Loading Loading @@ -208,7 +174,7 @@ module ItsAutoInterop_Functions { function f_mtcCf02Up( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); Loading Loading @@ -237,7 +203,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); Loading @@ -263,8 +229,9 @@ module ItsAutoInterop_Functions { * @desc The default preamble. */ function f_prDefault() runs on ItsAutoInteropGeonetworking { activate(a_default()); activate(a_utDefault()); activate(ItsAutoInterop_Functions.a_default()); activate(LibItsGeoNetworking_Functions.a_default()); activate(LibItsGeoNetworking_Functions.a_utDefault()); activate(a_hmiDefault()); } Loading @@ -278,7 +245,7 @@ module ItsAutoInterop_Functions { */ function f_cfPtcDown( inout ItsAutoInteropGeonetworking p_eut ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut.done; Loading Loading @@ -307,7 +274,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut1.done; Loading Loading @@ -340,7 +307,7 @@ module ItsAutoInterop_Functions { function f_mtcCf02Down( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut1.done; Loading @@ -365,7 +332,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3 ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { // Wait components done p_eut1.done; Loading @@ -391,7 +358,7 @@ module ItsAutoInterop_Functions { */ function f_poDefault() runs on ItsAutoInteropGeonetworking { deactivate; f_acStopScenario(); LibItsGeoNetworking_Functions.f_acStopScenario(); } } // End of group postambles Loading @@ -416,183 +383,6 @@ module ItsAutoInterop_Functions { } // End of group autoInteropPosition group autoInteropConfiguration { /** * @desc Brings the IUT into an initial state. * @remark Component variable vc_hashedId8ToBeUsed shall be set with the IUT certificate to be used */ function f_initialState(Scenario p_scenario := e_staticPosition) runs on ItsAutoInteropGeonetworking { if (PICS_GN_SECURITY) { var Oct8 v_hashedId8ToBeUsed := f_setupIutCertificate(vc_hashedId8ToBeUsed); if (oct2int(v_hashedId8ToBeUsed) == 0) { v_hashedId8ToBeUsed := 'FFFFFFFFFFFFFFFF'O; // Reset to unknown value, the IUT will use its own certificates } f_utInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); // TODO f_hmiInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); } // else, default behavior else { f_utInitializeIut(m_gnInitialize); f_hmiInitializeIut(m_hmiInitialize); } // TODO f_acLoadScenario(p_scenario); // TODO f_acStartScenario(); } /** * @desc Initialise secure mode if required */ function f_initialiseSecuredMode() runs on ItsAutoInteropGeonetworking { if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { if(e_success != f_acEnableSecurity()){ log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); stop; } } } // End of function f_initialiseSecuredMode() function f_uninitialiseSecuredMode() runs on ItsAutoInteropGeonetworking { if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { f_acDisableSecurity(); } } // End of function f_initialiseSecuredMode() /** * @desc Triggers test adapter to enable security support * @return FncRetCode */ function f_acEnableSecurity() runs on ItsAutoInteropGeonetworking return FncRetCode { // Local variables // Load certificates if (PICS_GN_SECURITY) { if( not f_loadCertificates(PX_IUT_SEC_CONFIG_NAME) ) { return e_error; } // FIXME Useless??? // // Initialize vc_location // f_setGenerationLocation( // f_getTsLatitude(), // f_getTsLongitude() // ); return f_acTriggerSecEvent(m_acEnableSecurity(cc_taCert_A)); } return f_acTriggerSecEvent(m_acEnableSecurity(PX_CERT_FOR_TS)); } /** * @desc Triggers test adapter to disable security support * @return FncRetCode */ function f_acDisableSecurity() runs on ItsAutoInteropGeonetworking return FncRetCode { f_unloadCertificates(); return f_acTriggerSecEvent(m_acDisableSecurity); } /** * @desc Triggers event in the test system adaptation. * @param p_event The event to trigger * @return FncRetCode */ function f_acTriggerSecEvent( in template (value) AcSecPrimitive p_event ) runs on ItsAutoInteropGeonetworking return FncRetCode { var FncRetCode v_ret := e_success; acPort.send(p_event); tc_ac.start; alt { [] acPort.receive(m_acSecResponseSuccess) { tc_ac.stop; } [] acPort.receive { tc_ac.stop; log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_ac.timeout { log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } return v_ret; } } // End of group autoInteropConfiguration group adapterControl { /** * @desc Triggers event in the test system adaptation. * @param p_event The event to trigger * @return FncRetCode */ function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsAutoInteropGeonetworking return FncRetCode { var FncRetCode v_ret := e_success; acPort.send(p_event); tc_ac.start; alt { [] acPort.receive(m_acGnssResponseSuccess) { tc_ac.stop; } [] acPort.receive { tc_ac.stop; log("*** f_acTriggerEvent: ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_ac.timeout { log("*** f_acTriggerEvent: ERROR: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } return v_ret; } /** * @desc Loads the given scenario * @param p_scenario The scenario to load. */ function f_acLoadScenario(Scenario p_scenario) runs on ItsAutoInteropGeonetworking { if (PX_GNSS_SCENARIO_SUPPORT==true) { f_acTriggerGnssEvent(m_loadScenario(p_scenario)); } } // end f_acLoadScenario /** * @desc Starts a loaded scenario */ function f_acStartScenario() runs on ItsAutoInteropGeonetworking { if (PX_GNSS_SCENARIO_SUPPORT==true) { f_acTriggerGnssEvent(m_startScenario); vc_scenarioStarted := true; } } // end f_acStartScenario /** * @desc Stops a loaded scenario */ function f_acStopScenario() runs on ItsAutoInteropGeonetworking { if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { f_acTriggerGnssEvent(m_stopScenario); vc_scenarioStarted := false; } } // end f_acStopScenario } // End of group adapterControl group autoInteropAltsteps { /** Loading @@ -602,47 +392,7 @@ module ItsAutoInterop_Functions { // Local variables var GeoNetworkingInd v_gnInd; [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering LSRequest mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsRequestPacket( ?, ? )))) { // Skip LS messages repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering LSReply mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsReplyPacket( ?, ? )))) { // Skip LS messages repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering Secured CA messages mw_geoNwInd( mw_geoNwSecPdu( mdw_securedMessage_CAMs, ? ))) { // Skip CA messages log("*** a_default: WARNING: Skip secured CA messages ***"); repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( // Filtering Secured DEN messages mw_geoNwInd( mw_geoNwSecPdu( mdw_securedMessage_DENMs, ? ))) { // Skip DEN messages log("*** a_default: WARNING: Skip secured DEN messages ***"); repeat; } [vc_autoInteropDefaultActive] geoNetworkingPort.receive( [vc_gnDefaultActive] geoNetworkingPort.receive( mw_geoNwInd( ? )) -> value v_gnInd { // Unexpected GeoNetworking message ==> require refine filtering above Loading @@ -652,40 +402,16 @@ module ItsAutoInterop_Functions { v_gnInd )); } [vc_autoInteropDefaultActive] eutGeoNetworkingPort.receive { // Unexpected EutGeoNetworking message ==> require refine filtering above [vc_gnDefaultActive] eutGeoNetworkingPort.receive { // Unexpected EutGeoNetworking message ==> require refine filtering above log("*** a_default: ERROR: Received an unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_wait.timeout { log("*** a_default: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] tc_ac.timeout { log("*** a_default: ERROR: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] a_shutdown() { log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } /** * @desc The default for handling upper tester messages. */ altstep a_utDefault() runs on ItsAutoInteropGeonetworking { var UtGnEventInd v_ind; [vc_utDefaultActive] utPort.receive(UtGnEventInd:?) -> value v_ind { //store every upper tester indication received vc_utInds[lengthof(vc_utInds)] := v_ind; repeat; } [vc_utDefaultActive] utPort.receive { log("*** " & testcasename() & ": INFO: Received unexpected UT message from IUT ***"); repeat; } } /** * @desc The default for handling HMI messages. */ Loading Loading @@ -720,7 +446,7 @@ module ItsAutoInterop_Functions { inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4*/ ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { [] a_shutdown() { // f_mtcCf01Down(p_eut1, p_eut2, p_eut3, p_eut4); log("*** a_mtcCf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); Loading @@ -734,7 +460,7 @@ module ItsAutoInterop_Functions { altstep a_mtcCf02Down( /*inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2*/ ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { [] a_shutdown() { // f_mtcCf02Down(p_eut1, p_eut2); log("*** a_mtcCf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); Loading @@ -749,7 +475,7 @@ module ItsAutoInterop_Functions { /*inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3*/ ) runs on ItsAutoInteropGeoNetworkingMtc /* TITAN TODO: mtc ItsAutoInteropGeoNetworkingMtc system ItsAutoInteropGeoNetworkingSystem */ { ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsAutoInteropGeoNetworkingSystem */ { [] a_shutdown() { // f_mtcCf03Down(p_eut1, p_eut2, p_eut3); log("*** a_mtcCf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); Loading
ttcn/AtsAutoInterop/ItsAutoInterop_Pics.ttcn +11 −10 Original line number Diff line number Diff line Loading @@ -3,24 +3,15 @@ module ItsAutoInterop_Pics { // LibCommon import from LibCommon_BasicTypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsBtp import from LibItsBtp_TypesAndValues all; import from LibItsBtp_Templates all; // LibItsGeoNetworking import from LibItsGeoNetworking_TypesAndValues all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; /** * @desc BTP destination port identifier for CAM protocol * @see TODO * @see ETSI DTS/ITS0144 Table */ modulepar BtpPortId PICS_CAM_BTP_DESTINATION_PORT := 2001; Loading Loading @@ -104,4 +95,14 @@ module ItsAutoInterop_Pics { elevation := '0000'O } /** * @desc Absolute coordinate for TARGET_GEOAREA * @see TODO */ modulepar ThreeDLocation PICS_TARGET_GEOAREA := { latitude := 435522970, longitude := 103000170, elevation := '0000'O } } // End of module ItsAutoInterop_Pics
ttcn/AtsAutoInterop/ItsAutoInterop_Pixits.ttcn +3 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ module ItsAutoInterop_Pixits { modulepar charstring PX_PCAP_MIDs_FILTER := "00:00:00:00:00:01;00:00:00:00:00:02"; /** * @desc PCAP frame offsets to skip when starting to play the PCAP file * @desc The PCAP frame offsets to skip when starting to play the PCAP file */ modulepar UInt32 PX_PCAP_START_OFFSET := 0; Loading Loading @@ -74,9 +74,9 @@ module ItsAutoInterop_Pixits { modulepar integer PX_EUT4_ID := 3; /** * @desc Epsilon distance between the vehicule and a position * @desc Pre-defined security distance */ modulepar float PX_EPSILON_DISTANCE := 1.0; modulepar float PX_PRE_DEFINED_SECURITY_DISTANCE := 0.0; /** * @desc Pre-defined security distance for forward collision risk condition Loading
ttcn/AtsAutoInterop/ItsAutoInterop_Templates.ttcn +13 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,19 @@ module ItsAutoInterop_Templates { longitude := valueof(p_position.longitude) } // End of template mw_denm_stationId /** * @desc Receive template for the destinationArea which indicates the TARGET_GEOAREA * @param p_gnAddress GN_Address to be contained in the long position vector */ template (present) LongPosVector mw_longPosVector_targetArea( template (present) Int32 p_latitude := ?, template (present) Int32 p_longitude := ? ) := { latitude := p_latitude, longitude := p_longitude } // End of template mw_longPosVector_targetArea /** * @desc Receive template for GeoNetworking DENM Packet * @param p_sourceLongPosVec Source position vector of destination Loading
ttcn/AtsAutoInterop/ItsAutoInterop_TestCases.ttcn +1004 −179 File changed.Preview size limit exceeded, changes collapsed. Show changes