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 Diff line number Diff line
@@ -71,18 +71,25 @@ module LibItsGeoNetworking_Functions {
            // Variables
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();
            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);
            var LongPosVector v_iutLongPosVector, v_nodeALongPosVector, v_nodeBLongPosVector, v_nodeDLongPosVector;
            
            // Map
            map(self:acPort, system:acPort);
            map(self:utPort, system:utPort);
            map(self:geoNetworkingPort, system:geoNetworkingPort);
            
            // Connect
            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
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
@@ -108,6 +115,7 @@ module LibItsGeoNetworking_Functions {
        function f_cf01Down() runs on ItsNt {

            // Unmap
            unmap(self:acPort, system:acPort);
            unmap(self:utPort, system:utPort);
            unmap(self:geoNetworkingPort, system:geoNetworkingPort);
            
@@ -133,16 +141,15 @@ module LibItsGeoNetworking_Functions {
            // Variables
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();            
            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);
            var LongPosVector v_iutLongPosVector, v_nodeBLongPosVector, v_nodeCLongPosVector, v_nodeDLongPosVector;
            
            // Create
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeD := ItsNt.create(c_compNodeD) alive;

            // Map            
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeD:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeD:utPort, system:utPort);
            map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -152,6 +159,15 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeB: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
            v_nodeBLongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeB);
            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 {
            
            // Unmap
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeD:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeD:utPort, system:utPort);
            unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -209,17 +227,15 @@ module LibItsGeoNetworking_Functions {
            // Variables
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();
            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);
            var LongPosVector v_iutLongPosVector, v_nodeALongPosVector, v_nodeBLongPosVector, v_nodeCLongPosVector, v_nodeDLongPosVector;
            
            // Create
            p_nodeB := ItsNt.create(c_compNodeB) alive;
            p_nodeC := ItsNt.create(c_compNodeC) alive;

            // Map
            map(p_nodeB:acPort, system:acPort);
            map(p_nodeC:acPort, system:acPort);
            map(p_nodeB:utPort, system:utPort);
            map(p_nodeC:utPort, system:utPort);
            map(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -229,6 +245,16 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeB: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
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            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 {
            
            // Unmap
            unmap(p_nodeB:acPort, system:acPort);
            unmap(p_nodeC:acPort, system:acPort);
            unmap(p_nodeB:utPort, system:utPort);
            unmap(p_nodeC:utPort, system:utPort);
            unmap(p_nodeB:geoNetworkingPort, system:geoNetworkingPort);
@@ -290,11 +318,7 @@ module LibItsGeoNetworking_Functions {
            // Variables
            var PositionTable v_positionTable := {};
            var GeoAreaTable v_areaTable := {};
            var LongPosVector v_iutLongPosVector := f_getIutLongPosVector();
            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);
            var LongPosVector v_iutLongPosVector, v_nodeALongPosVector, v_nodeBLongPosVector, v_nodeCLongPosVector, v_nodeDLongPosVector;
            
            // Create
            p_nodeB := ItsNt.create(c_compNodeB) alive;
@@ -302,6 +326,9 @@ module LibItsGeoNetworking_Functions {
            p_nodeD := ItsNt.create(c_compNodeD) alive;

            // 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_nodeC:utPort, system:utPort);
            map(p_nodeD:utPort, system:utPort);
@@ -314,6 +341,16 @@ module LibItsGeoNetworking_Functions {
            connect(p_nodeC: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
            v_nodeALongPosVector.gnAddr := f_getTsGnLocalAddress(c_compNodeA);
            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 {
            
            // 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_nodeC:utPort, system:utPort);
            unmap(p_nodeD:utPort, system:utPort);
@@ -840,7 +880,7 @@ module LibItsGeoNetworking_Functions {
         * @desc Brings the IUT into an initial state.
         * @return 
         */
        function f_prInitialState() {
        function f_initialState() {
            
            var ItsNt initComponent := ItsNt.create;
            
@@ -942,6 +982,32 @@ module LibItsGeoNetworking_Functions {
            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
    
    group commonFunctions {
@@ -1292,11 +1358,7 @@ module LibItsGeoNetworking_Functions {
        }
        
        function f_getIutLongPosVector() return LongPosVector {
            var LongPosVector v_longPosVector := valueof(m_dummyLongPosVector);
            
            //TODO
            
            return v_longPosVector; 
            return f_acGetLongPosVector(f_getIutGnLocalAddress()); 
        }
        
        function f_getIutShortPosVector() return ShortPosVector {
+19 −0
Original line number 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
            
    } // geoNwPrimitivesTemplates
+17 −8
Original line number Diff line number Diff line
@@ -884,24 +884,33 @@ module LibItsGeoNetworking_TypesAndValues {
    group acPrimitives {
        
        type union AcGNEvent {
            TaStartBeaconing startBeaconing,
            TaStopBeaconing stopBeaconing,
            TaStartPassBeaconing startPassBeaconing,
            TaStopPassBeaconing stopPassBeaconing
            AcStartBeaconing startBeaconing,
            AcStopBeaconing stopBeaconing,
            AcStartPassBeaconing startPassBeaconing,
            AcStopPassBeaconing stopPassBeaconing,
            TaGetLongPosVector getLongPosVector
        }
        
        type record TaStartBeaconing {
        type union AcGNResult {
            LongPosVector getLongPosVector
        }
        
        type record AcStartBeaconing {
            BeaconHeader beaconHeader
        }
        
        type record TaStopBeaconing {
        type record AcStopBeaconing {
        }
        
        type record TaStartPassBeaconing {
        type record AcStartPassBeaconing {
            BeaconHeader beaconHeader
        }
        
        type record TaStopPassBeaconing {
        type record AcStopPassBeaconing {
        }
        
        type record TaGetLongPosVector {
            GN_Address gnAddress
        }
        
    } // end acPrimitives
+4 −1
Original line number Diff line number Diff line
@@ -31,7 +31,10 @@ module LibIts_Interface {
             * @desc Adapter control port
             */
            type port AdapterControlPort message {
                out AcGNEvent;
                out 
                    AcGNEvent;
                in 
                    AcGNResult;
            } // end AdapterControlPort
    
            /**