Commit a0a2f905 authored by Miguel Angel Reina Ortega's avatar Miguel Angel Reina Ortega
Browse files

Merge branch 'origin/TTF_T042' to master

parents 372704ef 029ceb7b
Loading
Loading
Loading
Loading
+1386 −1137

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -378,7 +378,7 @@ module ItsGeoNetworking_TestControl {
			
			if(PICS_GN_AREA_FORWARDING_ALGORITHM == e_advanced) {
				
				if(PICS_GN_GBC_FWD) {
				if(PICS_GN_GBC_FWD and not PICS_ITS_RELEASE_2) {
        			execute(TC_GEONW_PON_GBC_AREA_ADV_BV_21());
        			execute(TC_GEONW_PON_GBC_AREA_ADV_BV_23());
        			execute(TC_GEONW_PON_GBC_AREA_ADV_BV_24());
+221 −91
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ module ItsGeoNetworking_TpFunctions {
    import from LibCommon_VerdictControl all;
    import from LibCommon_Sync all;
    
    // LibHelpers
    import from LibHelpers_Functions all;

    // LibItsCommon
    import from LibItsCommon_Functions all;
    
@@ -105,8 +108,8 @@ module ItsGeoNetworking_TpFunctions {
                
                // Preamble
                f_prNeighbour();
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
                
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB, m_mccMco));
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
                
                f_sleep(PX_TAC);
@@ -232,7 +235,7 @@ module ItsGeoNetworking_TpFunctions {
                    [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwShbPacket))) -> value v_geoNwInd {
                        tc_ac.stop;
                        if(ispresent(v_geoNwInd.msgIn.gnPacket.packet.payload)) {
                            if(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength == lengthof(v_geoNwInd.msgIn.gnPacket.packet.payload)) {
                            if(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength == lengthof(v_payload)) {
                                log("*** " & testcasename() & ": PASS: PL field correctly indicates payload size ***");
                                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                            }
@@ -240,7 +243,7 @@ module ItsGeoNetworking_TpFunctions {
                                log("*** " & testcasename() & ": FAIL: PL does correctly not indicate payload size ("
                                    & int2str(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength)
                                    & " != "
                                    & int2str(lengthof(v_geoNwInd.msgIn.gnPacket.packet.payload))
                                    & int2str(lengthof(v_payload))
                                    & ")***");
                                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                            }
@@ -373,15 +376,14 @@ module ItsGeoNetworking_TpFunctions {
                    // Local variables
                    var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
                    var UInt8 v_hopLimit := f_getDefaultHopLimit();
                    var template (value) GeoNetworkingPdu v_gnPacket;
                    
                    // Preamble
                    f_prNeighbour();
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                    
                    // Test Body
                    f_sendGeoNetMessage(
                        valueof(m_geoNwReq_linkLayerBroadcast(
                            m_geoNwPdu(
                    v_gnPacket := m_geoNwPdu(
                                m_geoNwTsbPacket(
                                    vc_localSeqNumber,
                                    v_longPosVectorNodeB,
@@ -389,9 +391,9 @@ module ItsGeoNetworking_TpFunctions {
                                ),
                                -,
                                v_hopLimit
                            )
                        )
                    ));
                            );
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
                    
                    tc_noac.start;
                    alt {
@@ -918,6 +920,122 @@ module ItsGeoNetworking_TpFunctions {
                
            } // End of function f_GEONW_FDV_SHB_BV_01
            
            /**
             * @desc    TP Function for TC_GEONW_FDV_SHB_BV_02
             */
            function f_GEONW_FDV_SHB_BV_02() runs on ItsGeoNetworking {
                
                // Local variables
                var LongPosVector v_longPosVectorIut;
                
                // Test control
                if (not PICS_GN_SHB_SRC or PICS_RADIO_COMM != e_its_g5) {
                    log("*** " & testcasename() & ": PICS_GN_SHB_SRC and PICS_RADIO_COMM != e_its_g5 required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cf01Up();
                
                // Test adapter configuration
                
                // Preamble
                v_longPosVectorIut := f_getPosition(c_compIut);
                f_prNeighbour();
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body
                if ( not f_utTriggerEvent(m_generateShbMessage) ) {
                    log("*** " & testcasename() & ": INCONC: Trigger failed ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
                tc_ac.start;
                alt {
                    [] geoNetworkingPort.receive(
                            mw_geoNwInd(
                                mw_geoNwPdu(
                                    mw_geoNwShbPacket(
                                      mw_longPosVectorPosition(v_longPosVectorIut), // SOPV
                                      1 //MHL
                                    )
                                )
                            )
                        ) {
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Fields of the received SHB message correctly set ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: SHB message not received ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_poNeighbour();
                f_cf01Down();
                
            } // End of function f_GEONW_FDV_SHB_BV_02
            
            /**
             * @desc    TP Function for TC_GEONW_FDV_SHB_BV_03
             */
            function f_GEONW_FDV_SHB_BV_03() runs on ItsGeoNetworking {
                
                // Local variables
                var LongPosVector v_longPosVectorIut;
                
                // Test control
                if (not PICS_GN_SHB_SRC or PICS_RADIO_COMM != e_lte_cv2x) {
                    log("*** " & testcasename() & ": PICS_GN_SHB_SRC and PICS_RADIO_COMM != e_lte_cv2x required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cf01Up();
                
                // Test adapter configuration
                
                // Preamble
                v_longPosVectorIut := f_getPosition(c_compIut);
                f_prNeighbour();
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body
                if ( not f_utTriggerEvent(m_generateShbMessage) ) {
                    log("*** " & testcasename() & ": INCONC: Trigger failed ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
                tc_ac.start;
                alt {
                    [] geoNetworkingPort.receive(
                            mw_geoNwInd(
                                mw_geoNwPdu(
                                    mw_geoNwShbPacket_c_v2x(
                                      mw_longPosVectorPosition(v_longPosVectorIut), // SOPV
                                      1 //MHL
                                    )
                                )
                            )
                        ) {
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Fields of the received SHB message correctly set ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: SHB message not received ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_poNeighbour();
                f_cf01Down();
                
            } // End of function f_GEONW_FDV_SHB_BV_03
            
        } // end geoFdvSingleHopBroadcast
        
        // 6.2.1.8
@@ -932,8 +1050,8 @@ module ItsGeoNetworking_TpFunctions {
                var LongPosVector v_longPosVectorIut;
                
                // Test control
                if (not PICS_GN_TSB_SRC) {
                    log("*** " & testcasename() & ": PICS_GN_TSB_SRC required for executing the TC ***");
                if (not PICS_GN_TSB_SRC or PICS_RADIO_COMM != e_its_g5) {
                    log("*** " & testcasename() & ": PICS_GN_TSB_SRC and PICS_RADIO_COMM == e_its_g5 required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
@@ -1292,7 +1410,8 @@ module ItsGeoNetworking_TpFunctions {
                    
                    f_TP_GEONW_PON_LOT_BV_03_pre_2(
                        m_geoNwShbPacket(
                            v_longPosVectorNode
                            v_longPosVectorNode,
                            m_mccMco
                        )
                    );
                    
@@ -1387,10 +1506,13 @@ module ItsGeoNetworking_TpFunctions {
                 * @desc    Function including second preamble part (TC_GEONW_PON_LOT_BV_03)
                 */
                function f_TP_GEONW_PON_LOT_BV_03_pre_2(in template (value) GnNonSecuredPacket p_packet) runs on ItsGeoNetworking {
                    var template (value) GeoNetworkingPdu v_gnPacket;
                   
                    //preamble part II
                    v_gnPacket := m_geoNwPdu(p_packet, -, c_hopLimit1);
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(
                        valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(p_packet, -, c_hopLimit1)))
                        valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket))
                    );
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                } // End of function f_TP_GEONW_PON_LOT_BV_03_pre_2
@@ -1582,6 +1704,7 @@ module ItsGeoNetworking_TpFunctions {
                    // Local variables
                    var LongPosVector v_longPosVectorNodeB;
                    var LongPosVector v_obsoleteLongPosVectorNodeB;
                    var template (value) GeoNetworkingPdu v_gnPacket;
                
                    // Test control
                    if (not PICS_GN_TSB_DST) {
@@ -1623,7 +1746,8 @@ module ItsGeoNetworking_TpFunctions {
                    
                    f_TP_GEONW_PON_LOT_BV_05_pre_2(
                        m_geoNwShbPacket(
                            v_obsoleteLongPosVectorNodeB
                            v_obsoleteLongPosVectorNodeB,
                            m_mccMco
                        )
                    );
                    
@@ -1722,8 +1846,11 @@ module ItsGeoNetworking_TpFunctions {
                 * @desc    Function including second preamble part (TC_GEONW_PON_LOT_BV_05)
                 */
                function f_TP_GEONW_PON_LOT_BV_05_pre_2(in template (value) GnNonSecuredPacket p_packet) runs on ItsGeoNetworking {
                    var template (value) GeoNetworkingPdu v_gnPacket;
                   
                    //preamble part II
                    v_gnPacket := m_geoNwPdu(p_packet);
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(
                        valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(p_packet)))
                    );
@@ -1905,7 +2032,7 @@ module ItsGeoNetworking_TpFunctions {
                    }
                    [] a_receiveGeoBroadcast(
                                             mw_longPosVectorPosition(v_longPosVectorIut),
                    v_expectedSequenceNumber) {
                                             ?) {
                        tc_ac.stop;
                        log("*** " & testcasename() & ": FAIL: GBC packet received with incorrect sequence number ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
@@ -1956,8 +2083,10 @@ module ItsGeoNetworking_TpFunctions {
                }
                tc_ac.start;
                alt {
                    
                    [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
                    [] geoNetworkingPort.receive(
                                                 mw_geoNwInd(
                                                             mw_geoNwPdu(
                                                                         mw_geoNwBroadcastPacket(
                                                                                                 mw_longPosVectorPosition(v_longPosVectorIut),
                                                                                                 ?
                    )))) -> value v_geoNwInd {
@@ -3154,7 +3283,6 @@ module ItsGeoNetworking_TpFunctions {
                        f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
                    }
                }
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body
                //Send LS-REPLY after LT2 expiry
@@ -5782,15 +5910,14 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                    var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                    var template (value) GeoNetworkingPdu v_gnPacket;
                   
                    // Preamble
                    f_prNonNeighbour();
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                    
                    // Test Body
                    f_sendGeoNetMessage(
                        valueof(m_geoNwReq_linkLayerBroadcast(
                            m_geoNwPdu(
                    v_gnPacket := m_geoNwPdu(
                                m_geoNwTsbPacket(
                                    vc_localSeqNumber,
                                    v_longPosVectorNodeC,
@@ -5799,9 +5926,9 @@ module ItsGeoNetworking_TpFunctions {
                                ),
                                -,
                                c_defaultHopLimit
                            )
                        )
                    ));
                            );
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
                    
                    tc_ac.start;
                    alt {
@@ -5908,6 +6035,7 @@ module ItsGeoNetworking_TpFunctions {
                // Local variables
                var LongPosVector v_longPosVectorIut;
                var LongPosVector v_longPosVectorNodeB;
                var template (value) GeoNetworkingPdu v_gnPacket;
                var GeoNetworkingInd v_geoNetInd;
                var GN_Address v_iutGnAddress := valueof(m_dummyGnAddr);
                
@@ -5950,7 +6078,9 @@ module ItsGeoNetworking_TpFunctions {
                
                // Test Body
                v_longPosVectorNodeB.gnAddr := v_iutGnAddress;
                f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB), -, c_hopLimit1))));
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB, m_mccMco), -, c_hopLimit1);
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
                
                f_sleep(0.5);
                
@@ -7261,7 +7391,7 @@ module ItsGeoNetworking_TpFunctions {
                            + (
                                int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                / int2float(f_getCbfMaxCommunicationRange())
                            ) * p_distanceToNodeA) * 0.95 / 1000.0;
                            ) * p_distanceToNodeA) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                    f_prNeighbour();
@@ -7843,7 +7973,7 @@ module ItsGeoNetworking_TpFunctions {
                            
                        // Local variables
                        var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                        timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                        timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                        // Preamble
                        f_prNonNeighbour();
@@ -8048,7 +8178,7 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                        var LongPosVector v_longPosVectorNodeD := f_getPosition(c_compNodeD);
                        timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                        timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                        v_longPosVectorNodeD.pai := int2bit(0,1);
@@ -9415,7 +9545,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeC, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeC, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                    f_prNeighbour();
@@ -9963,7 +10093,7 @@ module ItsGeoNetworking_TpFunctions {
                            
                            // Local variables
                            var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                            // Preamble
                            f_prNonNeighbour();
@@ -10113,7 +10243,7 @@ module ItsGeoNetworking_TpFunctions {
                            // Local variables
                            var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                            var LongPosVector v_longPosVectorNodeA := f_getPosition(c_compNodeA);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                            // Preamble
                            v_longPosVectorNodeC.pai := int2bit(0,1);
@@ -11176,7 +11306,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeC, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeC, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                    f_prNeighbour();
@@ -11577,7 +11707,7 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                    var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                            f_prNonNeighbour();
@@ -11762,7 +11892,7 @@ module ItsGeoNetworking_TpFunctions {
                    // Local variables
                    var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                            var LongPosVector v_longPosVectorNodeD := f_getPosition(c_compNodeD);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                            v_longPosVectorNodeD.pai := int2bit(0,1);
@@ -11879,7 +12009,7 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                            var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                    f_prNeighbour();
@@ -11928,7 +12058,7 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                            var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                            f_prNonNeighbour();
@@ -12339,7 +12469,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeF, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeF, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                            // Preamble
                            f_prNeighbour();
@@ -12494,7 +12624,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeB, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeB, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                            // Preamble
                            f_prNeighbour();
@@ -12857,7 +12987,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeE, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeE, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                            // Preamble
                            f_prNeighbour();
@@ -12911,7 +13041,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeE, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeE, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                            
                            // Preamble
                            f_prNeighbour();
@@ -13136,24 +13266,23 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                    var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
                    var template (value) GeoNetworkingPdu v_gnPacket;
                    
                    // Preamble
                    f_prNeighbour();
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                    
                    // Test Body
                    f_sendGeoNetMessage(
                        m_geoNwReq_linkLayerBroadcast(
                            m_geoNwPdu(
                    v_gnPacket := m_geoNwPdu(
                                m_geoNwTsbPacket(
                                                vc_localSeqNumber,
                                    v_longPosVectorNodeB
                                            ),
                                            -,
                                            c_defaultHopLimit
                            )
                        )
                            );
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
                    
                    tc_ac.start;
                    alt {
@@ -13268,15 +13397,14 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                    var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
                    var template (value) GeoNetworkingPdu v_gnPacket;
                
                    // Preamble
                    f_prNeighbour();
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                    
                    // Test Body
                    f_sendGeoNetMessage(
                        m_geoNwReq_linkLayerBroadcast(
                            m_geoNwPdu(
                    v_gnPacket := m_geoNwPdu(
                                m_geoNwTsbPacket(
                                            vc_localSeqNumber,
                                    v_longPosVectorNodeB,
@@ -13284,9 +13412,9 @@ module ItsGeoNetworking_TpFunctions {
                                ),
                                -,
                                c_defaultHopLimit
                            )
                        )
                            );
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
                    
                    tc_ac.start;
                    alt {
@@ -13438,24 +13566,23 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                    var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
                    var template (value) GeoNetworkingPdu v_gnPacket;
                    
                    // Preamble
                    f_prNeighbour();
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                    
                    // Test Body
                    f_sendGeoNetMessage(
                        m_geoNwReq_linkLayerBroadcast(
                            m_geoNwPdu(
                    v_gnPacket := m_geoNwPdu(
                                m_geoNwTsbPacket(
                                    vc_localSeqNumber,
                                    v_longPosVectorNodeB
                                ),
                                -,
                                1
                            )
                        )
                            );
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    
                    // Postamble
@@ -13538,6 +13665,7 @@ module ItsGeoNetworking_TpFunctions {
                                            v_longPosVectorNodeB
                                        )
                                    );
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
                
                f_sleep(PX_TAC);
@@ -13619,7 +13747,7 @@ module ItsGeoNetworking_TpFunctions {
                                      -,
                                      c_defaultHopLimit
                                  );
                    
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(valueof(v_gnPacket)));
                    v_gnPacket.basicHeader.routerHopLimit := ?;
                    tc_noac.start;
@@ -13785,6 +13913,7 @@ module ItsGeoNetworking_TpFunctions {
                                            -,
                                            c_defaultHopLimit
                                        );
                    v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                    f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(valueof(v_gnPacket)));
                    
                    tc_ac.start;
@@ -14042,7 +14171,8 @@ module ItsGeoNetworking_TpFunctions {
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body                    
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB, m_mccMco));
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
                
                f_sleep(PX_TAC);
@@ -15398,7 +15528,7 @@ module ItsGeoNetworking_TpFunctions {
                                + (
                                    int2float(f_getCbfMinTime() - f_getCbfMaxTime())
                                    / int2float(f_getCbfMaxCommunicationRange())
                                ) * f_distance(v_longPosVectorNodeC, v_longPosVectorIut)) * 0.95 / 1000.0;
                                ) * f_distance(v_longPosVectorNodeC, v_longPosVectorIut)) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                    f_prNeighbour();
@@ -15946,7 +16076,7 @@ module ItsGeoNetworking_TpFunctions {
                    
                    // Local variables
                    var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                            f_prNonNeighbour();
@@ -16096,7 +16226,7 @@ module ItsGeoNetworking_TpFunctions {
                    // Local variables
                            var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
                            var LongPosVector v_longPosVectorNodeA := f_getPosition(c_compNodeA);
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * 0.95 / 1000.0;
                            timer t_toCbf := int2float(f_getCbfMaxTime()) * PX_DEC_TIMER_CONTROL_FACTOR / 1000.0;
                    
                    // Preamble
                            v_longPosVectorNodeC.pai := int2bit(0,1);
+2 −2
Original line number Diff line number Diff line
# GeoNetworking Abstract Test suite (TS 102 871-3)

GeoNetworking (GN) abstract test suite (ATS) as defined in [ETSI TS 102 871-3 v1.5.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10287103/01.05.01_60/ts_10287103v010501p.pdf)
GeoNetworking (GN) abstract test suite (ATS) as defined in [ETSI TS 102 871-3 v2.1.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10287103/01.05.01_60/ts_10287103v010501p.pdf)

This code is a part of the ETSI ITS test suite, available on https://forge.etsi.org/rep/ITS/TS.ITS

This version of the test suite was developed by the _TTF-011_ and published as version **v1.5.1**
This version of the test suite was developed by the _TTF-042_ and published as version **v2.1.1**
+27 −1
Original line number Diff line number Diff line
/**
 *  @author     ETSI / STF405 / STF449 / STF484 / STF517
 *  @author     ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036
 *  @version    $URL$
 *              $Id$
 *  @desc       GeoNetworking PICS
@@ -21,6 +21,12 @@ module LibItsGeoNetworking_Pics {
    
    group geoNwPics {
        
        /**
         * @desc Is IUT supports ITS rel.2 ?
         * @see  ETSI TS 102 871-1 Table 1
         */
        modulepar boolean PICS_ITS_RELEASE_2 := true;
        
        /**
         * @desc GeoNetworking address of the GeoAdhoc router
         * @see  ETSI TS 102 871-1 Table 1
@@ -365,6 +371,12 @@ module LibItsGeoNetworking_Pics {
         */
        modulepar boolean PICS_GN_DAD := true;

        /**
         * @desc Support for DCC_NET
         * @see  ETSI TS 102 871-1 Table A.16
         */
        modulepar boolean PICS_DCC_NET := true;
        
         /**
         * @desc MAX_COUNTER used in Advanced GBC forwarding
         * @see  FIXME: not defined as protocol constant in base spec
@@ -376,6 +388,20 @@ module LibItsGeoNetworking_Pics {
         */
        modulepar MacAddress PICS_IUT_MAC_ADDRESS := 'FFFFFFFFFFFF'O;

        group radioComm {

            type enumerated RadioAccess {
                e_its_g5,
                e_lte_cv2x
            }

            /**
            * @desc Does radio communication use ITS-G5 or LTE-V2X?
            * @see  ETSI TS 102 871-1 Table A.17
            */
            modulepar RadioAccess PICS_RADIO_COMM := e_its_g5;
        
        } // End of group radioComm
    } // end geoNwPics
    
    /**
Loading