Commit e50575fc authored by tepelmann's avatar tepelmann
Browse files

Implemented f_getIutLongPosVector in using new function

f_acGetLongPosVector which retrieves the info from received beacons.
Introduced new AcGNEvent and AcGNResult to handle the request.
Added mapping of ac port.
Restructured confXXUp functions to initialize the IUT before trying to get the beacon's long position vector.
Removed prInitialState from testcases as it is done now in the confXXUp functions.
parent e93396b0
Loading
Loading
Loading
Loading
+87 −25
Original line number Original line Diff line number Diff line
@@ -71,18 +71,25 @@ module LibItsGeoNetworking_Functions {
            // Variables
            // Variables
            var PositionTable v_positionTable := {};
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();
            var LongPosVector v_iutLongPosVector, v_nodeALongPosVector, v_nodeBLongPosVector, v_nodeDLongPosVector;
            var LongPosVector v_nodeALongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeA_longitudeFactor, c_compNodeA_latitudeFactor);
            var LongPosVector v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            var LongPosVector v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            
            // Map
            // Map
            map(self:acPort, system:acPort);
            map(self:utPort, system:utPort);
            map(self:utPort, system:utPort);
            map(self:geoNetworkingPort, system:geoNetworkingPort);
            map(self:geoNetworkingPort, system:geoNetworkingPort);
            
            
            // Connect
            // Connect
            f_connect4SelfOrClientSync();
            f_connect4SelfOrClientSync();
            
            
            //Initialze the IUT
            f_initialState();
            
            //Get positions
            v_iutLongPosVector := f_getIutLongPosVector();
            v_nodeALongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeA_longitudeFactor, c_compNodeA_latitudeFactor);
            v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            // Propagate GN addresses
            // Propagate GN addresses
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
@@ -108,6 +115,7 @@ module LibItsGeoNetworking_Functions {
        function f_cf01Down() runs on ItsNt {
        function f_cf01Down() runs on ItsNt {


            // Unmap
            // Unmap
            unmap(self:acPort, system:acPort);
            unmap(self:utPort, system:utPort);
            unmap(self:utPort, system:utPort);
            unmap(self:geoNetworkingPort, system:geoNetworkingPort);
            unmap(self:geoNetworkingPort, system:geoNetworkingPort);
            
            
@@ -133,16 +141,15 @@ module LibItsGeoNetworking_Functions {
            // Variables
            // Variables
            var PositionTable v_positionTable := {};
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();            
            var LongPosVector v_iutLongPosVector, v_nodeBLongPosVector, v_nodeCLongPosVector, v_nodeDLongPosVector;
            var LongPosVector v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            var LongPosVector v_nodeCLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeC_longitudeFactor, c_compNodeC_latitudeFactor);
            var LongPosVector v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            
            // Create
            // Create
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeD := ItsNt.create(c_compNodeD) alive;
            p_nodeD := ItsNt.create(c_compNodeD) alive;


            // Map            
            // Map            
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeD:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeD:utPort, system:utPort);
            map(p_nodeD:utPort, system:utPort);
            map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
            map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -152,6 +159,15 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeD:syncPort, self:syncPort);
            connect(p_nodeD:syncPort, self:syncPort);
        
        
            //Initialze the IUT
            f_initialState();
            
            //Get positions
            v_iutLongPosVector := f_getIutLongPosVector();
            v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            v_nodeCLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeC_longitudeFactor, c_compNodeC_latitudeFactor);
            v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            // Propagate GN addresses
            // Propagate GN addresses
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
            v_nodeCLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeC);
            v_nodeCLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeC);
@@ -183,6 +199,8 @@ module LibItsGeoNetworking_Functions {
        function f_cf02Down(in ItsNt p_nodeB, in ItsNt p_nodeD) runs on ItsMtc {
        function f_cf02Down(in ItsNt p_nodeB, in ItsNt p_nodeD) runs on ItsMtc {
            
            
            // Unmap
            // Unmap
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeD:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeD:utPort, system:utPort);
            unmap(p_nodeD:utPort, system:utPort);
            unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
            unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -209,17 +227,15 @@ module LibItsGeoNetworking_Functions {
            // Variables
            // Variables
            var PositionTable v_positionTable := {};
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();
            var LongPosVector v_iutLongPosVector, v_nodeALongPosVector, v_nodeBLongPosVector, v_nodeCLongPosVector, v_nodeDLongPosVector;
            var LongPosVector v_nodeALongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeA_longitudeFactor, c_compNodeA_latitudeFactor);
            var LongPosVector v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            var LongPosVector v_nodeCLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeC_longitudeFactor, c_compNodeC_latitudeFactor);
            var LongPosVector v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            
            // Create
            // Create
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeC := ItsNt.create(c_compNodeC) alive;
            p_nodeC := ItsNt.create(c_compNodeC) alive;


            // Map
            // Map
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeC:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeC:utPort, system:utPort);
            map(p_nodeC:utPort, system:utPort);
            map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
            map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -229,6 +245,16 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeB:syncPort, self:syncPort);
            connect(p_nodeC:syncPort, self:syncPort);
            connect(p_nodeC:syncPort, self:syncPort);


            //Initialze the IUT
            f_initialState();
            
            //Get positions
            v_iutLongPosVector := f_getIutLongPosVector();
            v_nodeALongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeA_longitudeFactor, c_compNodeA_latitudeFactor);
            v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            v_nodeCLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeC_longitudeFactor, c_compNodeC_latitudeFactor);
            v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            // Propagate GN addresses
            // Propagate GN addresses
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
@@ -262,6 +288,8 @@ module LibItsGeoNetworking_Functions {
        function f_cf03Down(in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc {
        function f_cf03Down(in ItsNt p_nodeB, in ItsNt p_nodeC) runs on ItsMtc {
            
            
            // Unmap
            // Unmap
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeC:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeC:utPort, system:utPort);
            unmap(p_nodeC:utPort, system:utPort);
            unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
            unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -290,11 +318,7 @@ module LibItsGeoNetworking_Functions {
            // Variables
            // Variables
            var PositionTable v_positionTable := {};
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();
            var LongPosVector v_iutLongPosVector, v_nodeALongPosVector, v_nodeBLongPosVector, v_nodeCLongPosVector, v_nodeDLongPosVector;
            var LongPosVector v_nodeALongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeA_longitudeFactor, c_compNodeA_latitudeFactor);
            var LongPosVector v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            var LongPosVector v_nodeCLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeC_longitudeFactor, c_compNodeC_latitudeFactor);
            var LongPosVector v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            
            // Create
            // Create
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeB := ItsNt.create(c_compNodeB) alive;
@@ -302,6 +326,9 @@ module LibItsGeoNetworking_Functions {
            p_nodeD := ItsNt.create(c_compNodeD) alive;
            p_nodeD := ItsNt.create(c_compNodeD) alive;


            // Map
            // Map
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeC:acPort, system:acPort);
            map(p_nodeD:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeC:utPort, system:utPort);
            map(p_nodeC:utPort, system:utPort);
            map(p_nodeD:utPort, system:utPort);
            map(p_nodeD:utPort, system:utPort);
@@ -314,6 +341,16 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeC:syncPort, self:syncPort);
            connect(p_nodeC:syncPort, self:syncPort);
            connect(p_nodeD:syncPort, self:syncPort);
            connect(p_nodeD:syncPort, self:syncPort);
            
            
            //Initialze the IUT
            f_initialState();
            
            //Get positions
            v_iutLongPosVector := f_getIutLongPosVector();
            v_nodeALongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeA_longitudeFactor, c_compNodeA_latitudeFactor);
            v_nodeBLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeB_longitudeFactor, c_compNodeB_latitudeFactor);
            v_nodeCLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeC_longitudeFactor, c_compNodeC_latitudeFactor);
            v_nodeDLongPosVector := f_computePosition(v_iutLongPosVector, c_compNodeD_longitudeFactor, c_compNodeD_latitudeFactor);
            
            // Propagate GN addresses
            // Propagate GN addresses
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
@@ -351,6 +388,9 @@ module LibItsGeoNetworking_Functions {
        function f_cf04Down(in ItsNt p_nodeB, in ItsNt p_nodeC, in ItsNt p_nodeD) runs on ItsMtc {
        function f_cf04Down(in ItsNt p_nodeB, in ItsNt p_nodeC, in ItsNt p_nodeD) runs on ItsMtc {
            
            
            // Unmap
            // Unmap
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeC:acPort, system:acPort);
            unmap(p_nodeD:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeC:utPort, system:utPort);
            unmap(p_nodeC:utPort, system:utPort);
            unmap(p_nodeD:utPort, system:utPort);
            unmap(p_nodeD:utPort, system:utPort);
@@ -840,7 +880,7 @@ module LibItsGeoNetworking_Functions {
         * @desc Brings the IUT into an initial state.
         * @desc Brings the IUT into an initial state.
         * @return 
         * @return 
         */
         */
        function f_prInitialState() {
        function f_initialState() {
            
            
            var ItsNt initComponent := ItsNt.create;
            var ItsNt initComponent := ItsNt.create;
            
            
@@ -942,6 +982,32 @@ module LibItsGeoNetworking_Functions {
            return v_ret;
            return v_ret;
        }
        }
        
        
        /**
         * @desc Triggers event in the test system adaptation.
         * @param p_event The event to trigger
         * @return
         */
        function f_acGetLongPosVector(template (value) GN_Address p_gnAddress) runs on ItsNt return LongPosVector {
            var AcGNResult v_result;
            
            f_acTriggerEvent(m_getLongPosVector(p_gnAddress));
            tc_ac.start;
            alt {
                [] acPort.receive(mw_getLongPosVectorAny(p_gnAddress)) -> value v_result {
                    tc_ac.stop;
                }
                [] acPort.receive {
                    tc_ac.stop;
                    f_selfOrClientSyncAndVerdict("error", e_error, "*** f_acGetLongPosVector: Received unexpected message ***");
                }
                [] tc_ac.timeout {
                    f_selfOrClientSyncAndVerdict("error", e_timeout, "*** f_acGetLongPosVector: Timeout while waiting for adapter control event result ***");
                }
            }
            
            return v_result.getLongPosVector;
        }
        
    } // end adapterControl
    } // end adapterControl
    
    
    group commonFunctions {
    group commonFunctions {
@@ -1292,11 +1358,7 @@ module LibItsGeoNetworking_Functions {
        }
        }
        
        
        function f_getIutLongPosVector() return LongPosVector {
        function f_getIutLongPosVector() return LongPosVector {
            var LongPosVector v_longPosVector := valueof(m_dummyLongPosVector);
            return f_acGetLongPosVector(f_getIutGnLocalAddress()); 
            
            //TODO
            
            return v_longPosVector; 
        }
        }
        
        
        function f_getIutShortPosVector() return ShortPosVector {
        function f_getIutShortPosVector() return ShortPosVector {
+19 −0
Original line number Original line Diff line number Diff line
@@ -262,6 +262,25 @@ module LibItsGeoNetworking_Templates {
                }
                }
            }
            }
        
        
            /**
             * @desc Testsystem will reply the LongPosVector including the requested GN address 
             *       found in received beacon information to the TTCN-3
             * @param p_gnAddress The GN address included in the LongPosVector
             */
            template AcGNEvent m_getLongPosVector(GN_Address p_gnAddress) := {
                getLongPosVector := {
                    gnAddress := p_gnAddress
                }
            }
            
            /**
             * @desc    Receive template adapter control result for long position vector with specific GN_Address
             * @param   p_gnAddress GN_Address to be contained in the long position vector
             */
            template AcGNResult mw_getLongPosVectorAny(template (present) GN_Address p_gnAddress) := {
                getLongPosVector := mw_longPosVectorAny(p_gnAddress)
            }
        
        } // end taPrimitives
        } // end taPrimitives
            
            
    } // geoNwPrimitivesTemplates
    } // geoNwPrimitivesTemplates
+17 −8
Original line number Original line Diff line number Diff line
@@ -884,24 +884,33 @@ module LibItsGeoNetworking_TypesAndValues {
    group acPrimitives {
    group acPrimitives {
        
        
        type union AcGNEvent {
        type union AcGNEvent {
            TaStartBeaconing startBeaconing,
            AcStartBeaconing startBeaconing,
            TaStopBeaconing stopBeaconing,
            AcStopBeaconing stopBeaconing,
            TaStartPassBeaconing startPassBeaconing,
            AcStartPassBeaconing startPassBeaconing,
            TaStopPassBeaconing stopPassBeaconing
            AcStopPassBeaconing stopPassBeaconing,
            TaGetLongPosVector getLongPosVector
        }
        }
        
        
        type record TaStartBeaconing {
        type union AcGNResult {
            LongPosVector getLongPosVector
        }
        
        type record AcStartBeaconing {
            BeaconHeader beaconHeader
            BeaconHeader beaconHeader
        }
        }
        
        
        type record TaStopBeaconing {
        type record AcStopBeaconing {
        }
        }
        
        
        type record TaStartPassBeaconing {
        type record AcStartPassBeaconing {
            BeaconHeader beaconHeader
            BeaconHeader beaconHeader
        }
        }
        
        
        type record TaStopPassBeaconing {
        type record AcStopPassBeaconing {
        }
        
        type record TaGetLongPosVector {
            GN_Address gnAddress
        }
        }
        
        
    } // end acPrimitives
    } // end acPrimitives
+4 −1
Original line number Original line Diff line number Diff line
@@ -31,7 +31,10 @@ module LibIts_Interface {
             * @desc Adapter control port
             * @desc Adapter control port
             */
             */
            type port AdapterControlPort message {
            type port AdapterControlPort message {
                out AcGNEvent;
                out 
                    AcGNEvent;
                in 
                    AcGNResult;
            } // end AdapterControlPort
            } // end AdapterControlPort
    
    
            /**
            /**