module ItsAutoInterop_Functions { // LibItsCommon import from LibItsCommon_TypesAndValues all; // LibItsGeoNetworking import from LibItsGeoNetworking_TypesAndValues all; import from LibItsGeoNetworking_Functions all; import from LibItsGeoNetworking_TestSystem all; // ItsInterop import from ItsAutoInterop_TestSystem all; /** * @desc Set up an EUT component * @param p_eut The component reference * @param p_scenario The GNSS scenario. Default: e_staticPosition */ function f_cfPtcUp( in ItsAutoInteropGeonetworking p_eut, in Scenario p_scenario := e_staticPosition // TODO Not used ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // EUT //map(p_eut:acPort, system:acPort); Not used //map(p_eut:utPort, system:utPort); Not used map(p_eut:hmiPort, system:hmiPort); map(p_eut:geoNetworkingPort, system:geoNetworkingPort); connect(p_eut:syncPort, self:syncPort); //activate(a_cfPtcDown()); // FIXME To be done //Initialze the IUT f_initialiseSecuredMode(); // MTC intializes IUT f_initialState(p_scenario); } // End of function f_cfPtcUp /** * @desc Set up MTC for configuration #1 * @param p_eut1 The component reference for EUT1 * @param p_eut2 The component reference for EUT2 * @param p_eut3 The component reference for EUT3 * @param p_eut4 The component reference for EUT4 * @see Draft ETSI TS yyy xxx-2 V0.0.8 (2017-02) Clause 5.3.1 CF-01: Verify complete forwarding message scenario */ function f_mtcCf01Up( out ItsAutoInteropGeonetworking p_eut1, out ItsAutoInteropGeonetworking p_eut2, out ItsAutoInteropGeonetworking p_eut3, out ItsAutoInteropGeonetworking p_eut4 ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); p_eut2 := ItsAutoInteropGeonetworking.create(c_compNodeC); p_eut3 := ItsAutoInteropGeonetworking.create(c_compNodeD); p_eut4 := ItsAutoInteropGeonetworking.create(c_compNodeE); // Map & Connect map(self:acPort, system:acPort); map(self:utPort, system:utPort); connect(self:syncPort, mtc:syncPort); // EUT1/EUT2/EUT3/EUT4 disconnect(p_eut1:eutGeoNetworkingPort, p_eut2:eutGeoNetworkingPort); // EUT1 & EUT2 are on-link disconnect(p_eut1:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); // EUT1 & EUT3 are on-link disconnect(p_eut2:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); // EUT2 & EUT3 are on-link disconnect(p_eut2:eutGeoNetworkingPort, p_eut4:eutGeoNetworkingPort); // EUT2 & EUT4 are on-link disconnect(p_eut3:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); // EUT3 & EUT4 are on-link // EUT1 & EUT4 are of-link activate(a_cf04Down()); } // End of function f_mtcCf01Up /** * @desc Set up MTC for configuration #2 * @param p_eut1 The component reference for EUT1 * @param p_eut2 The component reference for EUT2 * @see Draft ETSI TS yyy xxx-2 V0.0.8 (2017-02) Clause 5.3.2 CF-02: Road Works Warning configuration */ function f_mtcCf02Up( out ItsAutoInteropGeonetworking p_eut1, out ItsAutoInteropGeonetworking p_eut2 ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); p_eut2 := ItsAutoInteropGeonetworking.create(c_compNodeC); // Map & Connect map(self:acPort, system:acPort); map(self:utPort, system:utPort); connect(self:syncPort, mtc:syncPort); // EUT1/EUT2 connect(p_eut1:eutGeoNetworkingPort, p_eut2:eutGeoNetworkingPort); activate(a_cf02Down()); } // End of function f_mtcCf02Up /** * @desc Set up MTC for configuration #3 * @param p_eut1 The component reference for EUT1 * @param p_eut2 The component reference for EUT2 * @param p_eut3 The component reference for EUT3 * @see Draft ETSI TS yyy xxx-2 V0.0.8 (2017-02) Clause 5.3.3 CF-03: CA messages */ function f_mtcCf03Up( out ItsAutoInteropGeonetworking p_eut1, out ItsAutoInteropGeonetworking p_eut2, out ItsAutoInteropGeonetworking p_eut3 ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Create components p_eut1 := ItsAutoInteropGeonetworking.create(c_compNodeB); p_eut2 := ItsAutoInteropGeonetworking.create(c_compNodeC); p_eut3 := ItsAutoInteropGeonetworking.create(c_compNodeD); // Map & Connect map(self:acPort, system:acPort); map(self:utPort, system:utPort); connect(self:syncPort, mtc:syncPort); // EUT1/EUT2/EUT3 connect(p_eut1:eutGeoNetworkingPort, p_eut2:eutGeoNetworkingPort); connect(p_eut1:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); connect(p_eut2:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); activate(a_cf03Down()); } // End of function f_mtcCf03Up /** * @desc Shutdown an EUT component * @param p_eut The component reference */ function f_cfPtcDown( inout ItsAutoInteropGeonetworking p_eut ) runs on ItsAutoInteropGeonetworking /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Wait components done p_eut.done; deactivate; // EUT //unmap(p_eut:acPort, system:acPort); Not used //unmap(p_eut:utPort, system:utPort); Not used unmap(p_eut:hmiPort, system:hmiPort); unmap(p_eut:geoNetworkingPort, system:geoNetworkingPort); disconnect(p_eut:syncPort, self:syncPort); } // End of function f_cfPtcDown /** * @desc Shutdown MTC for configuration #1 * @param p_eut1 The component reference for EUT1 * @param p_eut2 The component reference for EUT2 * @param p_eut3 The component reference for EUT3 * @param p_eut4 The component reference for EUT4 * @see Draft ETSI TS yyy xxx-2 V0.0.8 (2017-02) Clause 5.3.1 CF-01: Verify complete forwarding message scenario */ function f_mtcCf01Down( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3, inout ItsAutoInteropGeonetworking p_eut4 ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Wait components done p_eut1.done; p_eut2.done; p_eut3.done; p_eut4.done; deactivate; // Unmap & disconnect unmap(self:acPort, system:acPort); unmap(self:utPort, system:utPort); disconnect(self:syncPort, mtc:syncPort); // EUT1/EUT2/EUT3/EUT4 disconnect(p_eut1:eutGeoNetworkingPort, p_eut2:eutGeoNetworkingPort); disconnect(p_eut1:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); disconnect(p_eut2:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); disconnect(p_eut2:eutGeoNetworkingPort, p_eut4:eutGeoNetworkingPort); disconnect(p_eut3:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); } // End of function f_mtcCf01Down /** * @desc Shutdown MTC for configuration #2 * @param p_eut1 The component reference for EUT1 * @param p_eut2 The component reference for EUT2 * @see Draft ETSI TS yyy xxx-2 V0.0.8 (2017-02) Clause 5.3.2 CF-02: Road Works Warning configuration */ function f_mtcCf02Down( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2 ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Wait components done p_eut1.done; p_eut2.done; deactivate; // Unmap & disconnect unmap(self:acPort, system:acPort); unmap(self:utPort, system:utPort); disconnect(self:syncPort, mtc:syncPort); } // End of function f_mtcCf02Down /** * @desc Shutdown MTC with three components * @param p_eut1 The component reference for EUT1 * @param p_eut2 The component reference for EUT2 * @param p_eut3 The component reference for EUT3 */ function f_mtcCf03Down( inout ItsAutoInteropGeonetworking p_eut1, inout ItsAutoInteropGeonetworking p_eut2, inout ItsAutoInteropGeonetworking p_eut3 ) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Wait components done p_eut1.done; p_eut2.done; p_eut3.done; deactivate; // Unmap & disconnect unmap(self:acPort, system:acPort); unmap(self:utPort, system:utPort); disconnect(self:syncPort, mtc:syncPort); // EUT1/EUT2/EUT3 disconnect(p_eut1:eutGeoNetworkingPort, p_eut2:eutGeoNetworkingPort); disconnect(p_eut1:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); disconnect(p_eut3:eutGeoNetworkingPort, p_eut3:eutGeoNetworkingPort); } // End of function f_mtcCf03Down } // End of module ItsAutoInterop_Functions