diff --git a/ItsGeoNetworking_TestCases.ttcn b/ItsGeoNetworking_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..01f2c72495e1d39840933368a3749d7f4c2d49d0 --- /dev/null +++ b/ItsGeoNetworking_TestCases.ttcn @@ -0,0 +1,6516 @@ +/** + * @author ETSI / STF405 / STF449 / STF484 + * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsGeoNetworking/ItsGeoNetworking_TestCases.ttcn $ + * $Id: ItsGeoNetworking_TestCases.ttcn 2700 2017-05-29 13:17:49Z berge $ + * @desc GeoNetworking Testcases + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module ItsGeoNetworking_TestCases { + + // LibIts + import from LibItsGeoNetworking_TestSystem all; + + // Its + import from ItsGeoNetworking_TpFunctions all; + + // 6.2.1 + group geoFormatingAndDataValidity { + + // 6.2.1.1 + group geoFdvBasicHeader { + + /** + * @desc Check defined values of default Gn parameters in the basic header + *
+ * Pics Selection: PICS_GN_BASIC_HEADER
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet
+ * }
+ * then {
+ * the IUT sends a GBC packet
+ * containing a correctly formatted Basic Header
+ * containing version field
+ * set to itsGnProtocolVersion MIB parameter
+ * containing RHL field
+ * set to itsGnDefaultHopLimit MIB parameter
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BAH/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.2, 9.6.2 and Annex H
+ * ETSI TS 103 836-4-1 [5], clauses 9.6.2 and 10.3.2 and Annex H
+ */
+ testcase TC_GEONW_FDV_BAH_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BAH_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_BAH_BV_01
+
+ /**
+ * @desc Check discard of packet having incorrect version
+ *
+ * Pics Selection: PICS_GN_BASIC_HEADER
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * the IUT having received a SHB packet from ItsNodeB
+ * containing a correctly formatted Basic Header
+ * containing version field
+ * set to value equal to itsGnProtocolVersion MIB parameter
+ * and the IUT having passed the received SHB packet to Upper Layer
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a SHB packet from ItsNodeB
+ * containing a correctly formatted Basic Header
+ * containing version field
+ * set to value not equal to itsGnProtocolVersion MIB parameter
+ * }
+ * then {
+ * the IUT discards the received SHB packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BAH/BI-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.3
+ */
+ testcase TC_GEONW_FDV_BAH_BI_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BAH_BI_02();
+
+ } // End of testcase TC_GEONW_FDV_BAH_BI_02
+
+ } // End of group geoFdvBasicHeader
+
+ // 6.2.1.2
+ group geoFdvCommonHeader {
+
+ /**
+ * @desc Common GeoNetworking header validity test (PL field)
+ *
+ * Pics Selection: PICS_GN_COMMON_HEADER
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon message
+ * }
+ * then {
+ * the IUT sends a GeoNetworking message
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '1' (BEACON)
+ * containing HST field
+ * set to '0' (UNSPECIFIED)
+ * containing PL field
+ * set to '0'
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/COH/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 9.8.6 and 10.3.6
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2 and 10.3.6
+ */
+ testcase TC_GEONW_FDV_COH_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_COH_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_COH_BV_01
+
+ /**
+ * @desc Common GeoNetworking header validity test (PL field)
+ *
+ * Pics Selection: PICS_GN_COMMON_HEADER
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a SHB packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '5' (TSB)
+ * containing HST field
+ * set to '0' (SINGLE_HOP)
+ * containing MHL field
+ * set to '1'
+ * containing PL field
+ * set to the length of the included payload
+ * containing a payload
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/COH/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 9.8.4, 10.3.4 and 10.3.10
+ * ETSI TS 103 836-4-1 [5], clause 9.7.2, 10.3.4 and 10.3.10
+ */
+ testcase TC_GEONW_FDV_COH_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_COH_BV_02();
+
+ } // End of testcase TC_GEONW_FDV_COH_BV_02
+
+ /**
+ * @desc Check defined values of default Gn parameters in the common header
+ *
+ * Pics Selection: PICS_GN_COMMON_HEADER
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet
+ * }
+ * then {
+ * the IUT sends a GBC packet
+ * containing a correctly formatted Common Header
+ * containing Flags field
+ * indicating value equalling the itsGnIsMobile MIB parameter
+ * containing MHL field
+ * set to itsGnDefaultHopLimit MIB parameter
+ * }
+ * }
+ *
+ *
+ * @version 2.0.0
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/COH/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.8.5, 10.3.4 and Annex H
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2, 10.3.4 and Annex H
+ */
+ testcase TC_GEONW_FDV_COH_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_COH_BV_03();
+
+ } // End of testcase TC_GEONW_FDV_COH_BV_03
+
+ /**
+ * @desc Check that a received TSB packet is discarded if received with RHL > MHL
+ *
+ * Pics Selection: PICS_GN_COMMON_HEADER
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a TSB packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 higher than MHL1
+ * containing Common Header
+ * containing MHL field
+ * indicating MHL1
+ * }
+ * then {
+ * the IUT discards the TSB packet
+ * }
+ * }
+ *
+ *
+ * @version 2.0.0
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/COH/BO-04
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.5
+ * ETSI TS 103 836-4-1 [5], clause 10.5.2
+ */
+ testcase TC_GEONW_FDV_COH_BO_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_COH_BO_04();
+
+ } // End of testcase TC_GEONW_FDV_COH_BV_04
+
+ } // End of group geoFdvCommonHeader
+
+ // 6.2.1.3
+ group geoFdvBeacon {
+
+ /**
+ * @desc Beacon header validity test
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '1' (BEACON)
+ * containing HST field
+ * set to '0' (UNSPECIFIED)
+ * containing NH field
+ * set to '0' (UNSPECIFIED)
+ * containing Extended Header
+ * containing SOPV
+ * indicating LPV of the IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BEA/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.8.6 and 10.3.6
+ * ETSI TS 103 836-4-1 [5], clause 9.7.2, 9.8.6 and 10.3.6
+ */
+ testcase TC_GEONW_FDV_BEA_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BEA_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_BEA_BV_01
+
+ /**
+ * @desc GeoNetworking address validity test
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing SOPV field
+ * containing GN_ADDR field
+ * containing ST field
+ * indicating the ITS Station type
+ * containing SCC field
+ * indicating the ITS Station country code
+ * }
+ * }
+ * NOTE: Correct Source GeoNetworking address value: itsGnLocalGnAddr MIB parameter value.
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BEA/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 6.3 and 9.8.6.2
+ * ETSI TS 103 836-4-1 [5], clauses 6.3 and 9.8.6.2
+ */
+ testcase TC_GEONW_FDV_BEA_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BEA_BV_02();
+
+ } // End of testcase TC_GEONW_FDV_BEA_BV_02
+
+ /**
+ * @desc Local Position Vector validity test, involving comparison against sensor input data
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correct SOPV field
+ * indicating the latest position of the IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BEA/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.5.2.2 and 9.8.6.2
+ * ETSI TS 103 836-4-1 [5], clauses 9.5.2.2 and 9.8.6.2
+ */
+ testcase TC_GEONW_FDV_BEA_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BEA_BV_03();
+
+ } // End of testcase TC_GEONW_FDV_BEA_BV_03
+
+ /**
+ * @desc Local Position Vector validity test, involving timestamp comparison against sensor input data
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correct SOPV field
+ * indicating the timestamp value corresponding to the sensor acquisition time of position data
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BEA/BV-04
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.5.2.2 and 9.8.6.2
+ * ETSI TS 103 836-4-1 [5], clause 9.5.2.2 and 9.8.6.2
+ */
+ testcase TC_GEONW_FDV_BEA_BV_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BEA_BV_04();
+
+ } // End of testcase TC_GEONW_FDV_BEA_BV_04
+
+ /**
+ * @desc GeoNetworking address validity test for LTE C-V2X media dependent functionality
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC and PICS_DCC_NET and PICS_RADIO_COMM == e_its_g5
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing MID field
+ * indicating the the 48-bit MAC address of the ITS-G5
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/BEA/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.5.2.2 and 9.8.6.2
+ * ETSI TS 103 836-4-1 [5], clause 9.5.2.2 and 9.8.6.2
+ */
+ testcase TC_GEONW_FDV_BEA_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_BEA_BV_04(); // Covered by TP/GEONW/FDV/BEA/BV-04
+
+ } // End of testcase TC_GEONW_FDV_BEA_BV_05
+
+ } // End of group geoFdvBeacon
+
+ // 6.2.1.4
+ group geoFdvGeoUnicast {
+
+ /**
+ * @desc GUC header validity
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing HST field
+ * set to '0' (UNSPECIFIED)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating position of the ItsNodeB
+ * containing SOPV field
+ * indicating position of the IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/GUC/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 9.8.2.2 and 10.3.8
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2, 9.7.4, 9.8.2.2 and 10.3.8
+ */
+ testcase TC_GEONW_FDV_GUC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_GUC_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_GUC_BV_01
+
+ } // End of group geoFdvGeoUnicast
+
+ // 6.2.1.5
+ group geoFdvGeoBroadcast {
+
+ /**
+ * @desc GBC header validity
+ *
+ * Pics Selection: PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '4' (GEOBROADCAST)
+ * containing GBC Extended Header
+ * containing SOPV field
+ * indicating position of the IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/GBC/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 9.8.5.2 and 10.3.11
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2, 9.7.4, 9.8.5.2 and 10.3.11
+ */
+ testcase TC_GEONW_FDV_GBC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_GBC_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_GBC_BV_01
+
+ } // End of group geoFdvGeoBroadcast
+
+ // 6.2.1.6
+ group geoFdvGeoAnycast {
+
+ /**
+ * @desc GAC header validity
+ *
+ * Pics Selection: PICS_GN_GAC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GAC packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '3' (GEOANYCAST)
+ * containing GAC Extended Header
+ * containing SOPV field
+ * indicating position of IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/GAC/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 9.8.5.2 and 10.3.12
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2, 9.7.4, 9.8.5.2 and 10.3.12
+ */
+ testcase TC_GEONW_FDV_GAC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_GAC_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_GAC_BV_01
+
+ } // End of group geoFdvGeoAnycast
+
+ // 6.2.1.7
+ group geoFdvSingleHopBroadcast {
+
+ /**
+ * @desc SHB header validity
+ *
+ * Pics Selection: PICS_GN_SHB_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a SHB packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '5' (TSB)
+ * containing HST field
+ * set to '0' (SINGLE_HOP)
+ * containing MHL field
+ * set to '1'
+ * containing Extended Header
+ * containing SOPV
+ * indicating LPV of the IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/SHB/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 10.3.4, 9.8.4.2 and 10.3.10
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2, 9.7.4, 10.3.4, 9.8.4.2 and 10.3.10
+
+ */
+ testcase TC_GEONW_FDV_SHB_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_SHB_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_SHB_BV_01
+
+ /**
+ * @desc SHB header validity for ITS G5 media dependent functionality
+ *
+ * Pics Selection: PICS_GN_SHB_SRC and PICS_RADIO_COMM == 0 (ITS-G5)
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a SHB packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing Extended Header
+ * containing DCC-MCO
+ * containing CBR_L_0_Hop
+ * and containing CBR_L_1_Hop
+ * and containing Transmit Power
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/SHB/BV-02
+ * @reference ETSI TS 102 636-4-2 [2], clauses 5.3.3 and 5.3.4
+ * ETSI TS 103 836-4-2 [6], clause 5.3, 5.4 and 7.2
+ */
+ testcase TC_GEONW_FDV_SHB_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_SHB_BV_02();
+
+ } // End of testcase TC_GEONW_FDV_SHB_BV_02
+
+ /**
+ * @desc SHB header validity for ITS G5 media dependent functionality
+ *
+ * Pics Selection: PICS_GN_SHB_SRC AND PICS_RADIO_COMM == 1 (LTE C-V2X) AND PICS_GN_LTE_TIME_SYNCH
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a SHB packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing Extended Header
+ * containing Timesynchronization
+ * containing Version
+ * indicating 1 (Time synchronization is supported)
+ * and containing Compact Time Confidence (CTC)
+ * indcating any_value
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/SHB/BV-03
+ * @reference ETSI TS 102 636-4-2 [2], clauses 5.3.3 and 5.3.4
+ * ETSI TS 103 836-4-2 [6], clauses 5.3, 5.4 and 7.2
+ */
+ testcase TC_GEONW_FDV_SHB_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_SHB_BV_03();
+
+ } // End of testcase TC_GEONW_FDV_SHB_BV_03
+
+ } // End of group geoFdvSingleHopBroadcast
+
+ // 6.2.1.8
+ group geoFdvTopologicallyScopedBroadcast {
+
+ /**
+ * @desc TSB header validity
+ *
+ * Pics Selection: PICS_GN_TSB_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a TSB packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '5' (TSB)
+ * containing HST field
+ * set to '1' (MULTI_HOP)
+ * containing TSB Extended Header
+ * containing SOPV field
+ * indicating position of the IUT
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/FDV/TSB/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 9.7.2, 9.7.4, 9.8.3.2 and 10.3.9
+ * ETSI TS 103 836-4-1 [5], clauses 9.7.2, 9.7.4, 9.8.3.2 and 10.3.9
+ */
+ testcase TC_GEONW_FDV_TSB_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_FDV_TSB_BV_01();
+
+ } // End of testcase TC_GEONW_FDV_TSB_BV_01
+
+ } // End of group geoFdvTopologicallyScopedBroadcast
+
+ } // End of group geoFormatingAndDataValidity
+
+ // 6.2.2
+ group geoProtocolOperation {
+
+ // 6.2.2.1
+ group geoLocationTable {
+
+ /**
+ * @desc Check insertion of new entries into location table from Beacon header
+ *
+ * Pics Selection: PICS_GN_GUC_SRC AND PICS_GN_BEACON_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from the ItsNodeB and
+ * the lifetime of the ItsNodeB Location Table entry not being expired
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received from ItsNodeB
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.10.3, 10.3.6.2 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.10.3, 10.3.6.2 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_01();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_01
+
+ /**
+ * @desc Check insertion of new entries into location table from LS Reply data
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC AND PICS_GN_LS_REP_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having been requested to send a first GUC packet to ItsNodeA and
+ * the IUT having sent a LS_REQUEST packet
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating ItsNodeA
+ * the IUT having received a LS_REPLY packet from ItsNodeA
+ * containing SOPV field and
+ * the IUT having sent the GUC packet to ItsNodeA and
+ * the lifetime of the ItsNodeA Location Table entry not being expired
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a second GUC packet to ItsNodeA
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating ItsNodeA
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the LS_REPLY packet received from ItsNodeA
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.1.4, 10.3.7.1.2 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.1.4, 10.3.7.1.2 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_02();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_02
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_BEACON_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: Beacon packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_01();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_01
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_GUC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: GUC packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_02();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_02
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_GAC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: GAC packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_03();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_03
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_GBC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: GBC packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_04();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_04
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_TSB_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: TSB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_05();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_05
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_SHB_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: SHB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_06();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_06
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_LS_REQ_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: LS Request packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_07() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_07();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_07
+
+ /**
+ * @desc Check insertion of new entries into location table from extended header processing (e.g. GUC header)
+ *
+ * Pics Selection: PICS_GN_LS_REP_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any beacon from NODE
+ * the IUT having received a MESSAGE from originated by NODE
+ * }
+ * MESSAGE: LS Reply packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to NODE
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating NODE
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV of the MESSAGE received from NODE
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_03_08() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_03_08();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_03_08
+
+ /**
+ * @desc Check location table entry expiration
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacons information from ItsNodeB and
+ * the IUT not having received beacons from ItsNodeB for the duration of itsGnLifetimeLocTE parameter (20 sec)
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-04
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.1.3, 10.3.8.2, 10.3.7.1.2 and Annex H
+ * ETSI TS 103 836-4-1 [5], clauses 8.2.3, 10.3.8.2, 10.3.7.1.2 and Annex H
+ */
+ testcase TC_GEONW_PON_LOT_BV_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_04();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_04
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_GUC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: GUC packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05-X
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_01();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_01
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_GAC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: GAC packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_02();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_02
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_GBC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: GBC packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_03();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_03
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_TSB_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: TSB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_04();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_04
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_SHB_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: SHB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_05();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_05
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_LS_REQ_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: LS Request packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_06();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_06
+
+ /**
+ * @desc Check update of entries in location table with most up-to-date position data extracted
+ * from common header processing (including timestamp comparison before updating)
+ *
+ * Pics Selection: PICS_GN_LS_REP_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a MESSAGE from ItsNodeB,
+ * containing Extended Header
+ * containing SOPV field
+ * indicating an older timestamp than the last Beacon packet and
+ * indicating a different position than the position of the last Beacon packet
+ * }
+ * MESSAGE: LS Reply packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT does not send a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeB
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOT/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2 and C.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.12.3, 10.3.11.3, 10.3.9.3, 10.3.10.3, 10.3.7.3, 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOT_BV_05_07() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOT_BV_05_07();
+
+ } // End of testcase TC_GEONW_PON_LOT_BV_05_07
+
+ } // End of group geoLocationTable
+
+ // 6.2.2.2
+ group geoLocalPositionVector {
+
+ /**
+ * @desc Check update of the Local position vector
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having changed its position
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates eventually a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '1' (BEACON)
+ * containing HST field
+ * set to '0' (UNSPECIFIED)
+ * containing Extended Header
+ * containing SOPV field
+ * indicating the new position
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LPV/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.2.3, 10.2.2.2, 10.3.6.1 and Annex H
+ * ETSI TS 103 836-4-1 [5], clauses 8.3.3, 10.2.2.2, 10.3.6.1 and Annex H
+ */
+ testcase TC_GEONW_PON_LPV_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LPV_BV_01();
+
+ } // End of testcase TC_GEONW_PON_LPV_BV_01
+
+ } // End of group geoLocalPositionVector
+
+ // 6.2.2.3
+ group geoSequenceNumber {
+
+ /**
+ * @desc Check initial sequence number assignment
+ *
+ * Pics Selection: PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having sent any GBC packet and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet to AREA1
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '4' (GEOBROADCAST)
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value '0'
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/SQN/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.3.2 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.4.2 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_SQN_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_SQN_BV_01();
+
+ } // End of testcase TC_GEONW_PON_SQN_BV_01
+
+ /**
+ * @desc Check the local sequence number incrementation
+ *
+ * Pics Selection: PICS_GN_GBC_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having sent a GBC packet to AREA1
+ * containing the Sequence Number field
+ * indicating value SN1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet to AREA1
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '4' (GEOBROADCAST)
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1 + 1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/SQN/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.3.2 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.4.2 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_SQN_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_SQN_BV_02();
+
+ } // End of testcase TC_GEONW_PON_SQN_BV_02
+
+ } // End of group geoSequenceNumber
+
+ // 6.2.2.4
+ group geoLocationService {
+
+ /**
+ * @desc Check first LS invocation for unknown Destination nodes
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeA
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '6' (LS)
+ * containing HST field
+ * set to '0' (LS_REQUEST)
+ * containing NH field
+ * set to '0' (UNSPECIFIED)
+ * containing LS_REQUEST Extended Header
+ * containing Request field
+ * indicating GN_ADDR of ItsNodeA
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.2, 10.2.4, 6.3 and 10.3.7.1.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.2, 10.2.4, 6.3 and 10.3.7.1.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_01();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_01
+
+ /**
+ * @desc Check absence of LS invocation for unknown Destination nodes when LS procedure is already active
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a first GUC packet to ItsNodeA and
+ * the IUT having sent a GeoNetworking packet
+ * containing a LS_REQUEST
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating ItsNodeA
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a new GUC packet to ItsNodeA
+ * }
+ * then {
+ * IUT does not send a second LS_REQUEST packet (see note)
+ * }
+ * }
+ * NOTE: at least not before the LS_REQUEST retransmission timer expires
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.2, 10.2.4 and 10.3.7.1.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.2, 10.2.4 and 10.3.7.1.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_02();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_02
+
+ /**
+ * @desc Check packet buffering into LS buffer during Location service procedure,
+ * including handling of LT fields in the LT packet buffer
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC AND PICS_GN_LS_REP_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1 and
+ * the IUT having sent a LS_REQUEST packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the LS_REPLY packet from ItsNodeA
+ * }
+ * then {
+ * the IUT sends the GUC packet addressed to ItsNodeA
+ * containing GUC Extended Header
+ * containing LT field
+ * indicating value (default LT value – WaitingTime (see note))
+ * }
+ * }
+ * NOTE: Waiting Time == time difference between LS_REQUEST sending and LS_REPLY reception.
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.4.3, 10.3.7.1.4, 10.3.7.1.2,9.3.8.2 and 10.2.4
+ * ETSI TS 103 836-4-1 [5], clauses 8.5.3, 10.3.7.1.4, 10.3.7.1.2,9.3.8.2 and 10.2.4
+ */
+ testcase TC_GEONW_PON_LOS_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_03();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_03
+
+ /**
+ * @desc Check LS buffer characteristics: FIFO type
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC AND PICS_GN_LS_REP_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1
+ * containing payload field
+ * indicating value PL1 and
+ * the IUT having sent a LS_REQUEST packet and
+ * the IUT having been requested to send a second GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating LT2
+ * containing payload field
+ * indicating value PL2
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the LS_REPLY packet from ItsNodeA and
+ * before expiry of LT1 and LT2
+ * }
+ * then {
+ * the IUT sends GUC packet addressed to ItsNodeA
+ * containing payload field
+ * indicating value PL1 and
+ * the IUT sends GUC packet addressed to ItsNodeA
+ * containing payload field
+ * indicating value PL2
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-04
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.4.3, 10.2.4, 10.3.7.1.2 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.5.3, 10.2.4, 10.3.7.1.2 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_04();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_04
+
+ /**
+ * @desc Check LS buffer characteristics: discarding upon LT expiration
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send multiple GUC packets to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating values LTx and
+ * the IUT having sent a LS_REQUEST packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the LS_REPLY packet from ItsNodeA after expiry of LTs
+ * }
+ * then {
+ * the IUT does not send any packet to ItsNodeA
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.4.3, 10.2.4, 10.3.7.1.2 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.5.3, 10.2.4, 10.3.7.1.2 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_05();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_05
+
+ /**
+ * @desc Check LS Request retransmission if no answer is received
+ *
+ * Pics Selection: PICS_GN_LS_REQ_RETRANSMISSION
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1 higher than itsGnLocationServiceTimer and
+ * the IUT having sent a LS_REQUEST packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT does not receive LS_REPLY packet from ItsNodeA and
+ * before expiration of LT1
+ * }
+ * then {
+ * the IUT retransmits the LS_REQUEST packet
+ * upon expiry of itsGnLocationServiceTimer
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-06
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.1.2, 10.3.7.1.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.1.2, 10.3.7.1.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOS_TI_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_TI_06();
+
+ } // End of testcase TC_GEONW_PON_LOS_TI_06
+
+ /**
+ * @desc Check LS Request retransmission if no answer is received
+ *
+ * Pics Selection: PICS_GN_LS_REQ_RETRANSMISSION
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1 higher than (itsGnLocationServiceTimer * itsGnLocationServiceMaxRetrans) and
+ * the IUT having sent a LS_REQUEST packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT does not receive LS_REPLY packet from ItsNodeA and
+ * before expiration of LT1
+ * }
+ * then {
+ * the IUT retransmits the LS_REQUEST packet itsGnLocationServiceMaxRetrans times
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-07
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.1.2, 10.3.7.1.3, 10.3.8.2 and Aannex H
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.1.2, 10.3.7.1.3, 10.3.8.2 and Annex H
+ */
+ testcase TC_GEONW_PON_LOS_BV_07() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_07();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_07
+
+ /**
+ * @desc Check LS Reply generation by destination node
+ *
+ * Pics Selection: PICS_GN_LS_REQ_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a LS_REQUEST packet
+ * containing Request field
+ * indicating the IUT's GN_ADDR
+ * }
+ * then {
+ * the IUT replies with a LS_REPLY packet
+ * containing Common Header
+ * containing NH field
+ * set to '0' (UNSPECIFIED)
+ * containing LS_REPLY Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the received LS_REQUEST
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-08
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.3 and 10.3.5
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.3 and 10.3.5
+ */
+ testcase TC_GEONW_PON_LOS_BV_08() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_08();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_08
+
+ /**
+ * @desc Check absence of LS Reply generation for already answered LS Request packets
+ *
+ * Pics Selection: PICS_GN_LS_REQ_DST
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received a LS_REQUEST packet generated by ItsNodeB from ItsNodeB
+ * the IUT having sent a LS_REPLY packet to ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same LS_REQUEST packet from ItsNodeD
+ * }
+ * then {
+ * the IUT does not reply with a LS_REPLY packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BO-09
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.3 and 10.3.5
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.3 and 10.3.5
+ */
+ testcase TC_GEONW_PON_LOS_BO_09() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BO_09();
+
+ } // End of testcase TC_GEONW_PON_LOS_BO_09
+
+
+ /**
+ * @desc Check LS Request forwarding
+ *
+ * Pics Selection: PICS_GN_LS_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a LS_REQUEST packet from ItsNodeC
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * containing LS_REQUEST Extended Header
+ * containing Request field
+ * containing GN_ADDR
+ * containing M_ID
+ * indicating value differing from the M_ID part of the GN_ADDR of the IUT
+ * }
+ * then {
+ * the IUT re-broadcasts the received LS_REQUEST packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating value decreased by 1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-10
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.2 and 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.2 and 10.3.8.3
+ */
+ testcase TC_GEONW_PON_LOS_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_10();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_10
+
+ /**
+ * @desc Check LS Reply forwarding
+ *
+ * Pics Selection: PICS_GN_LS_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a LS_REPLY packet from ItsNodeC addressed to ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT forwards the received LS_REPLY packet to ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating value decreased by 1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-11
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.7.2 and 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.7.2 and 10.3.8.3
+ */
+ testcase TC_GEONW_PON_LOS_BV_11() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_11();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_11
+
+ /**
+ * @desc Check flushing of the LS buffer, initiated by the processing of a common header from the target destination
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet ItsNodeA
+ * containing LT field
+ * indicating LT1 and
+ * the IUT having sent a LS_REQUEST packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to it from ItsNodeA before expiry of LT1
+ * }
+ * then {
+ * the IUT sends the waiting GUC packet to ItsNodeA
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-12
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.7.1.2 and 8.4.3
+ * ETSI TS 103 836-4-1 [5], clauses 8.5.3, 10.3.8.4, 10.3.7.1.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_12() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_12();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_12
+
+ /**
+ * @desc Check LS buffer characteristics: FIFO type and Lifetime
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1
+ * containing payload field
+ * indicating value PL1 and
+ * the IUT having sent a LS_REQUEST packet and
+ * the IUT having been requested to send a second GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating LT2 lower than LT1
+ * containing payload field
+ * indicating value PL2
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the LS_REPLY packet from ItsNodeA
+ * after expiry of LT2
+ * before expiry of LT1
+ * }
+ * then {
+ * the IUT sends GUC packet addressed to ItsNodeA
+ * containing payload field
+ * indicating value PL1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-13
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.4.3 and 10.3.7.1.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.5.3 and 10.3.7.1.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_13() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_13();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_13
+
+ /**
+ * @desc Check that GeoNetworking packets in LS buffer are discarded when LS does not complete.
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1 higher than (itsGnLocationServiceTimer * itsGnLocationServiceMaxRetrans) and
+ * the IUT having sent a LS_REQUEST packet itsGnLocationServiceMaxRetrans times
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet from ItsNodeA
+ * before expiration of LT1
+ * }
+ * then {
+ * the IUT does not send any packet to ItsNodeA (see note)
+ * }
+ * }
+ * NOTE: Stored GUC packets have been discarded upon LS failure
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-14
+ * @reference ETSI EN 302 636-4-1 [1], clause 8.4.3
+ * ETSI TS 103 836-4-1 [5], clause 8.5.3
+ */
+ testcase TC_GEONW_PON_LOS_BV_14() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_14();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_14
+
+ /**
+ * @desc Check flushing of the LS buffer, initiated by the processing of a common header from the target destination
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet ItsNodeA
+ * containing LT field
+ * indicating LT1 and
+ * the IUT having sent a LS_REQUEST packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeB from ItsNodeA before expiry of LT1
+ * }
+ * then {
+ * the IUT sends the waiting GUC packet to ItsNodeA
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-15
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.3, 10.3.7.1.2 and 8.4.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.5.2, 10.3.8.3 and 10.3.7.1.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_15() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_15();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_15
+
+ /**
+ * @desc Check LS Request retransmission termination when indirect response is received
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1 higher than (itsGnLocationServiceTimer * itsGnLocationServiceMaxRetrans) and
+ * the IUT having sent a LS_REQUEST packet
+ * the IUT having retransmitted the LS_REQUEST packet less than itsGnLocationServiceMaxRetrans
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to it from ItsNodeA before expiry of LT1
+ * }
+ * then {
+ * the IUT does not retransmits the LS_REQUEST packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-16
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4, 10.3.7.1.2, 10.3.7.1.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.4, 10.3.7.1.2, 10.3.7.1.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_16() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_16();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_16
+
+ /**
+ * @desc Check LS Request retransmission termination when indirect response is received
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * containing LT field
+ * indicating value LT1 higher than (itsGnLocationServiceTimer * itsGnLocationServiceMaxRetrans) and
+ * the IUT having sent a LS_REQUEST packet
+ * the IUT having retransmitted the LS_REQUEST packet less than itsGnLocationServiceMaxRetrans
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeB from ItsNodeA before expiry of LT1
+ * }
+ * then {
+ * the IUT does not retransmits the LS_REQUEST packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/LOS/BV-17
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.3, 10.3.7.1.2, 10.3.7.1.3 and 10.3.8.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.3, 10.3.7.1.2, 10.3.7.1.3 and 10.3.8.2
+ */
+ testcase TC_GEONW_PON_LOS_BV_17() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_LOS_BV_17();
+
+ } // End of testcase TC_GEONW_PON_LOS_BV_17
+
+ } // End of group geoLocationService
+
+ // 6.2.2.5
+ group geoForwardingPacketBuffer {
+
+ /**
+ * @desc Check Source packet buffering into UC forwarding buffer for unreachable Unicast destinations
+ * (absence of a suitable next hop candidate)
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA (see note) and
+ * the IUT having been requested to send a GUC packet addressed to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from ItsNodeB
+ * }
+ * then {
+ * the IUT selects the ItsNodeB as the next hop and
+ * the IUT sends the buffered GUC packet
+ * }
+ * }
+ * NOTE: Location Table Entry is created by sending any GeoNetworking packet, originated by ItsNodeA, from ItsNodeC to IUT
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3, 10.3.8.2 and 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3, 10.3.8.2 and 10.3.8.3
+ */
+ testcase TC_GEONW_PON_FPB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_01();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_01
+
+ /**
+ * @desc Check Forwarder packet buffering into UC forwarding buffer for unreachable Unicast destinations
+ * (absence of a suitable next hop candidate)
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having received GUC packets addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT1
+ * containing RHL field
+ * indicating value greater than 1
+ * containing GUC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from ItsNodeB
+ * }
+ * then {
+ * the IUT selects the ItsNodeB as the next hop and
+ * the IUT forwards the buffered GUC packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating value decreased by 1
+ * containing GUC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.3, 8.5.3 and 10.3.6.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.3, 8.5.3 and 10.3.6.3
+ */
+ testcase TC_GEONW_PON_FPB_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_02();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_02
+
+ /**
+ * @desc Check UC forwarding buffer characteristics: FIFO type
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having received a GUC (GEOUNI1) packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating value LT1 and
+ * containing RHL field
+ * indicating value greater than 1
+ * containing GUC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * the IUT having received a second GUC (GEOUNI2) packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT2
+ * containing RHL field
+ * indicating value greater than 1
+ * containing GUC Extended Header
+ * containing SN field
+ * indicating value SN2
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from ItsNodeB
+ * before expiry of LT1 and LT2
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop and
+ * the IUT forwards the GEOUNI1 buffered packet
+ * containing GUC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * the IUT forwards the GEOUNI2 buffered packet
+ * containing GUC Extended Header
+ * containing SN field
+ * indicating value SN2
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3 and 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3 and 10.3.8.3
+ */
+ testcase TC_GEONW_PON_FPB_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_03();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_03
+
+ /**
+ * @desc Check UC forwarding buffer characteristics: discarding upon LT expiration
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having received a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT1
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from ItsNodeB
+ * after expiry of LT1
+ * }
+ * then {
+ * the IUT does not forward the buffered GUC packet addressed to ItsNodeA
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3 and 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3 and 10.3.8.3
+ */
+ testcase TC_GEONW_PON_FPB_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_04();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_04
+
+ /**
+ * @desc Check Source packet buffering into BC forwarding buffer for no GBC recipients
+ *
+ * Pics Selection: none
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received Beacon information from ItsNodeD and
+ * the IUT not having received Beacon information from ItsNodeB and
+ * the IUT having been requested to send a GBC packet to AREA1
+ * containing TrafficClass.SCF set to 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from either ItsNodeB or ItsNodeD
+ * }
+ * then {
+ * the IUT broadcasts the buffered GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-06
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.5, 8.5.3, 10.3.6.3 and 10.3.11.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.5, 8.5.3, 10.3.6.3 and 10.3.11.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_06() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_06();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_06
+
+ /**
+ * @desc Check BC forwarding buffer characteristics: FIFO type
+ *
+ * Pics Selection: none
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received Beacon information from ItsNodeD and
+ * the IUT not having received Beacon information from ItsNodeB and
+ * the IUT having been requested to send a GBC (GEOBROAD1) packet to AREA1
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT1
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * the IUT having been requested to send a GBC (GEOBROAD2) packet to AREA1
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT2
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN2
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from either ItsNodeD or ItsNodeB
+ * before expiry of LT1 and LT2
+ * }
+ * then {
+ * the IUT broadcasts GEOBROAD1 packet
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * the IUT broadcasts GEOBROAD2 packet
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN2
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-07
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3 and 10.3.11.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3 and 10.3.11.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_07();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_07
+
+ /**
+ * @desc Check BC forwarding buffer characteristics: discarding upon LT expiration
+ *
+ * Pics Selection: none
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received Beacon information from ItsNodeD and
+ * the IUT not having received Beacon information from ItsNodeB and
+ * the IUT having been requested to send a GBC (GEOBROAD1) packet to AREA1
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT1
+ * the IUT having been requested to send a GBC (GEOBROAD2) packet to AREA1
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing LT field
+ * indicating LT2
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from either ItsNodeB or ItsNodeD
+ * after expiry of LT1 and LT2
+ * }
+ * then {
+ * the IUT does not broadcast any of the buffered GEOBROAD1 and GEOBROAD2
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-08
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3 and 10.3.11.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3 and 10.3.11.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_08() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_08();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_08
+
+ /**
+ * @desc Check Source packet buffering into UC forwarding buffer for handling of LT fields in absence of a suitable next hop candidate
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA and
+ * the IUT having been requested to send a GUC packet addressed to ItsNodeA
+ * containing TrafficClass.SCF set to 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from ItsNodeB
+ * }
+ * then {
+ * the IUT selects the ItsNodeB as the next hop and
+ * the IUT sends the buffered GUC packet
+ * containing GUC Extended Header
+ * containing LT field
+ * indicating (default LT value – WaitingTime(see note))
+ * }
+ * }
+ * NOTE: WaitingTime == time difference between Upper layer packet generation and the neighbour Beacon reception
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-09
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3 and 10.3.11.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3 and 10.3.11.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_09() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_09();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_09
+
+ /**
+ * @desc Check Source packet buffering into BC forwarding buffer for handling of LT fields for no GBC recipients
+ *
+ * Pics Selection: none
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received Beacon information from ItsNodeD and
+ * the IUT not having received Beacon information from ItsNodeB and
+ * the IUT having been requested to send a GBC packet to AREA1
+ * containing TrafficClass.SCF set to 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a Beacon packet from either ItsNodeB or ItsNodeD
+ * }
+ * then {
+ * the IUT broadcasts the buffered GBC packet
+ * containing GBC Extended Header
+ * containing LT field
+ * indicating (default LT value - WaitingTime (see note))
+ * }
+ * }
+ * NOTE: WaitingTime == time difference between Upper layer packet generation and the neighbour Beacon reception
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-10
+ * @reference ETSI EN 302 636-4-1 [1], clauses 8.5.3, 10.3.6.3 and 10.3.11.2
+ * ETSI TS 103 836-4-1 [5], clauses 8.6.3, 10.3.6.3 and 10.3.11.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_10();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_10
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA (see note)
+ * }
+ *
+ * MESSAGE : GUC packet addressed to ItsNodeA
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-11-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_11_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_11_01();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_11_01
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_GAC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA (see note)
+ * }
+ *
+ * MESSAGE : GAC packet
+ * containing DestinationArea
+ * indicating AREA2
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-11-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_11_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_11_02();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_11_02
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_GBC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA (see note)
+ * }
+ *
+ * MESSAGE : GBC packet
+ * containing DestinationArea
+ * indicating AREA2
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-11-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_11_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_11_03();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_11_03
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_TSB_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA (see note)
+ * }
+ *
+ * MESSAGE : TSB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-11-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_11_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_11_04();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_11_04
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_SHB_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB and
+ * the IUT having a Location Table Entry for ItsNodeA (see note)
+ * }
+ *
+ * MESSAGE : SHB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-11-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_11_05() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_11_05();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_11_05
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_GUC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB
+ * }
+ *
+ * MESSAGE : GUC packet addressed to ItsNodeA
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-12-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_12_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_12_01();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_12_01
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_GAC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB
+ * }
+ *
+ * MESSAGE : GAC packet
+ * containing DestinationArea
+ * indicating AREA2
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-12-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_12_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_12_02();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_12_02
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_GBC_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB
+ * }
+ *
+ * MESSAGE : GBC packet
+ * containing DestinationArea
+ * indicating AREA2
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-12-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_12_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_12_03();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_12_03
+
+ /**
+ * @desc Check immediate broadcasting in absence of a suitable next hop candidate when SCF is disabled
+ *
+ * Pics Selection: PICS_GN_TSB_SRC
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT not having received any Beacon information from ItsNodeB
+ * }
+ *
+ * MESSAGE : TSB packet
+ *
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a MESSAGE
+ * containing TrafficClass.SCF set to 0
+ * }
+ * then {
+ * the IUT broadcast the MESSAGE immediately
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/FPB/BV-12-X
+ * @reference ETSI EN 302 636-4-1 [1], Annex D.2
+ * ETSI TS 103 836-4-1 [5], Annex D.2
+ */
+ testcase TC_GEONW_PON_FPB_BV_12_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_FPB_BV_12_04();
+
+ } // End of testcase TC_GEONW_PON_FPB_BV_11_04
+
+ } // End of group geoForwardingPacketBuffer
+
+ // 6.2.2.6
+ group geoGeoNetworkingAddress {
+
+ /**
+ * @desc Check the initial GeoNetworking address assignment by IUT with auto-address configuration
+ *
+ * Pics Selection: PICS_GN_ADDR_AUTO
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT's itsGnLocalAddrConfMethod MIB parameter is set to AUTO (0)
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates a Beacon packet
+ * }
+ * then {
+ * the IUT sends a GeoNetworking message
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '1' (BEACON)
+ * containing HST field
+ * set to '0' (UNSPECIFIED)
+ * containing a Beacon Extender Header
+ * containing SOPV field
+ * containing GN_ADDR field
+ * indicating itsGnLocalGnAddr MIB parameter
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GNA/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.2.1.2 and 10.3.6.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.2.1.2 and 10.3.6.2
+ */
+ testcase TC_GEONW_PON_GNA_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GNA_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GNA_BV_01
+
+ /**
+ * @desc Check the proper functioning of duplicate address detection mechanism
+ *
+ * Pics Selection: PICS_GN_DAD
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having sent an SHB packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a SHB packet
+ * containing SHB Extended Header
+ * containing SOPV field
+ * containing GN_ADDR field
+ * indicating same GN_ADDR as the GN_ADDR field in the last SHB packet originated by the IUT
+ * }
+ * then {
+ * the IUT sends subsequent SHB packet
+ * containing SHB Extended Header
+ * containing SOPV field
+ * containing GN_ADDR field
+ * indicating different GN_ADDR as the previous used GN_ADDR
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GNA/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.2.1.5
+ * ETSI TS 103 836-4-1 [5], clause 10.2.1.5
+ */
+ testcase TC_GEONW_PON_GNA_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GNA_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GNA_BV_02
+
+ } // End of group geoGeoNetworkingAddress
+
+ // 6.2.2.7
+ group geoBeaconing {
+
+ /**
+ * @desc Check that the IUT transmits Beacons at prescribed periodicity in the absence of other originated
+ * packets
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT generates Beacon packets
+ * }
+ * then {
+ * the IUT sends each Beacon packet
+ * after expiry of itsGnBeaconServiceRetransmitTimer
+ * and before expiry of itsGnBeaconServiceRetransmitTimer + itsGnBeaconServiceMaxJitter
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/BEA/TI-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.6.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.6.2
+ */
+ testcase TC_GEONW_PON_BEA_TI_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_BEA_TI_01();
+
+ } // End of testcase TC_GEONW_PON_BEA_TI_01
+
+ /**
+ * @desc Check that the IUT resets its timer for next Beacon transmission when originating other packets
+ *
+ * Pics Selection: PICS_GN_BEACON_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a SHB packet
+ * }
+ * then {
+ * the IUT broadcasts a SHB packet and
+ * the IUT sends the next Beacon packet
+ * after expiry of itsGnBeaconServiceRetransmitTimer
+ * and before expiry of itsGnBeaconServiceRetransmitTimer + itsGnBeaconServiceMaxJitter
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/BEA/TI-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.2.3 and 10.3.10.2
+ * ETSI TS 103 836-4-1 [5], clauses 10.2.3 and 10.3.10.2
+ */
+ testcase TC_GEONW_PON_BEA_TI_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_BEA_TI_02();
+
+ } // End of testcase TC_GEONW_PON_BEA_TI_02
+
+ } // End of group geoBeaconing
+
+ // 6.2.2.8
+ group geoGeoUnicast {
+
+ group gucAllForwardingAlgorithms {
+
+ /**
+ * @desc Check that the protocol header fields (RHL, PV) are correctly updated at each forwarding step
+ *
+ * Pics Selection: PICS_GN_GUC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the IUT having received a GUC packet (GEOUNI1) originated by ItsNodeA
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet (GEOUNI2) addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating position different from the SOPV value of GEOUNI1
+ * containing TST field
+ * indicating older value than the TimeStamp value of GEOUNI1
+ * }
+ * then {
+ * the IUT retransmits GEOUNI2
+ * containing Basic Header
+ * containing RHL field
+ * indicating value decreased by 1 from the incoming value
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of GEOUNI1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/ALL/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3
+ */
+ testcase TC_GEONW_PON_GUC_ALL_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_ALL_BV_03();
+
+ } // End of testcase TC_GEONW_PON_GUC_ALL_BV_03
+
+ /**
+ * @desc Check that the RHL restriction is correctly handled at the forwarding step
+ *
+ * Pics Selection: PICS_GN_GUC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating 1
+ * }
+ * then {
+ * the IUT does not retrnasmit the GUC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/ALL/BO-04
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3
+ */
+ testcase TC_GEONW_PON_GUC_ALL_BO_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_ALL_BO_04();
+
+ } // End of testcase TC_GEONW_PON_GUC_ALL_BO_04
+
+ /**
+ * @desc Check that a received GUC packet is passed over the Gn SAP to the correct upper
+ * protocol if the Destination address matches the IUT address
+ *
+ * Pics Selection: PICS_GN_GUC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to it
+ * }
+ * then {
+ * the IUT passes the received GUC packet to the correct Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/ALL/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.4
+ */
+ testcase TC_GEONW_PON_GUC_ALL_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_ALL_BV_05();
+
+ } // End of testcase TC_GEONW_PON_GUC_ALL_BV_06
+
+ /**
+ * @desc Check that a received GUC packet is not passed over the Gn SAP if the Destination
+ * address does not match the IUT address
+ *
+ * Pics Selection: PICS_GN_GUC_FWD
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeB from ItsNodeC
+ * }
+ * then {
+ * the IUT does not pass the received GUC packet to any Upper Layer
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/ALL/BV-06
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.4
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.4
+ */
+ testcase TC_GEONW_PON_GUC_ALL_BV_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_ALL_BV_06();
+
+ } // End of testcase TC_GEONW_PON_GUC_ALL_BV_06
+
+ /**
+ * @desc Check that a received GUC packet is not passed over the Gn SAP to the correct upper protocol
+ * when the Destination address matches the IUT address if received twice or more
+ *
+ * Pics Selection: PICS_GN_GUC_DST
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a GUC packet addressed to IUT from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GUC packet from ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 - 1
+ * }
+ * then {
+ * the IUT does not pass the received GUC packet to any Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/ALL/BO-08
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_GUC_ALL_BO_08() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_ALL_BO_08();
+
+ } // End of testcase TC_GEONW_PON_GUC_ALL_BV_08
+
+ } // End of group gucAllForwardingAlgorithms
+
+ group gucGreedyForwarding {
+
+ /**
+ * @desc Check that a GUC request over upper Gn SAP triggers the origination of a
+ * GUC packet
+ *
+ * Pics Selection: PICS_GN_GUC_SRC AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY' OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT sends a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the Beacon information received
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/GRD/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.2 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.2 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GUC_GRD_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_GRD_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GUC_GRD_BV_01
+
+ /**
+ * @desc Check that a received GUC packet is routed to the correct next hop neighbour according
+ * to the greedy forwarding rules
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY' OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop and
+ * the IUT forwards the GUC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/GRD/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.2 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GUC_GRD_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_GRD_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GUC_GRD_BV_02
+
+ /**
+ * @desc Check that a received GUC packet is not triggering forwarding if received twice or more
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY' OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1 and
+ * the IUT having forwarded the GUC packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GUC packet from ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 - 1
+ * }
+ * then {
+ * the IUT does forward the packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/GRD/BO-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.2 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GUC_GRD_BO_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_GRD_BO_07();
+
+ } // End of testcase TC_GEONW_PON_GUC_GRD_BO_07
+
+ } // End of group gucGreedyForwarding
+
+ group gucContentionBasedForwarding {
+
+ /**
+ * @desc Check that a GUC request over upper Gn SAP triggers the origination of a GUC packet
+ *
+ * Pics Selection: PICS_GN_GUC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeB
+ * }
+ * then {
+ * the IUT broadcasts a GeoNetworking packet
+ * containing a correctly formatted Common Header
+ * containing HT field
+ * set to '2' (GEOUNICAST)
+ * containing GUC Extended Header
+ * containing DEPV field
+ * indicating same position as the SOPV value of the received Beacon information
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/CBF/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.8.2, 10.3.6.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.8.2, 10.3.6.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GUC_CBF_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_CBF_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GUC_CBF_BV_01
+
+ /**
+ * @desc Check that a received GUC packet is forwarded at the correct time according to the
+ * contention based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than itsGnDefaultMaxCommunicationRange MIB attribute
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GUC packet
+ * upon expiry of calculated CBF delay (see note)
+ * }
+ * }
+ * NOTE: The CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange,
+ * itsGnCbfMinTime, and itsGnCbfMaxTime MIB attributes, and the distance value
+ * between IUT and ItsNodeC
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/CBF/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GUC_CBF_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_CBF_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GUC_CBF_BV_02
+
+ /**
+ * @desc Check that GUC packet forwarding correctly avoids packet duplication according to the
+ * contention based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than the itsGnDefaultMaxCommunicationRange MIB attribute and
+ * the IUT having received a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1 and
+ * the IUT having started a CBF timer for this packet (see note)
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GUC packet from ItsNodeD
+ * before expiration of the CBF timer
+ * }
+ * then {
+ * the IUT does not re-broadcast the GUC packet
+ * }
+ * }
+ * NOTE: the CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange,
+ * itsGnCbfMinTime, and itsGnCbfMaxTime MIB attributes, and the
+ * distance value between IUT and ItsNodeC
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/CBF/BV-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GUC_CBF_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_CBF_BV_07();
+
+ } // End of testcase TC_GEONW_PON_GUC_CBF_BV_07
+
+ /**
+ * @desc Check that a received GUC packet forwarding is correctly handling the minimum delay
+ * value according to the contention based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeC being
+ * larger than the itsGnDefaultMaxCommunicationRange MIB attribute
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GUC packet
+ * upon expiry of itsGnCbfMinTime delay
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/CBF/BV-20
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GUC_CBF_BV_20() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_CBF_BV_20();
+
+ } // End of testcase TC_GEONW_PON_GUC_CBF_BV_20
+
+ /**
+ * @desc Check that a received GUC packet is forwarded at the correct time according to the
+ * contention based forwarding rules when the sender is unknown
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT not having received any message from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than the itsGnDefaultMaxCommunicationRange MIB attribute and
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GUC packet
+ * upon expiry of CBF_MAX
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/CBF/BV-21
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GUC_CBF_BV_21() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_CBF_BV_21();
+
+ } // End of testcase TC_GEONW_PON_GUC_CBF_BV_21
+
+ /**
+ * @desc Check that a received GUC packet is forwarded at the correct time according to the contention
+ * based forwarding rules when the sender is known sender with an uncertain position (PAI = 0).
+ *
+ * Pics Selection: PICS_GN_GUC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * containing Beacon ExtendedHeader
+ * containing SOPV field
+ * containing PAI
+ * set to ‘0’
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the GUC packet
+ * upon expiry of CBF_MAX
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GUC/CBF/BV-22
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.8.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.8.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GUC_CBF_BV_22() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GUC_CBF_BV_22();
+
+ } // End of testcase TC_GEONW_PON_GUC_CBF_BV_22
+
+ } // End of group gucContentionBasedForwarding
+
+ } // End of group geoGeoUnicast
+
+ // 6.2.2.9
+ group geoGeoBroadcast {
+
+ group gbcNonAreaForwarding {
+
+ group gbcNonAreaAllForwardingAlgorithm {
+
+ /**
+ * @desc Check that the protocol header fields (RHL) are correctly updated during a GBC forwarding step
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value HL1 higher than 1
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT retransmits the GBC packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating value (HL1 -1)
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/ALL/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_ALL_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_ALL_BV_03();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_ALL_BV_03
+
+ /**
+ * @desc Check that the RHL restriction is correctly handled at a GBC forwarding step
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT does not retransmit the GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/ALL/BV-04
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_ALL_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_ALL_BV_04();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_ALL_BV_04
+
+ /**
+ * @desc Check that a received GBC packet is not passed over the Gn SAP if it is received for the
+ * first time outside the GBC destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT does not pass the received GBC packet to any Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/ALL/BV-06
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_ALL_BV_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_ALL_BV_06();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_ALL_BV_06
+
+ /**
+ * @desc Check that a received GBC packet is discarded when indicating a too big GeoArea
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating a geoArea bigger than itsGnMaxGeoAreaSize
+ * }
+ * then {
+ * the IUT does not retransmit the received GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/ALL/BO-09
+ * @reference ETSI EN 302 636-4-1 [1], Annex B.3
+ * ETSI TS 103 836-4-1 [5], Annex B.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_ALL_BO_09() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_ALL_BO_09();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_ALL_BO_09
+
+ /**
+ * @desc Check that a received GBC packet from inside of the destination area is discarded if
+ * received for the first time when IUT is outside of the destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the IUT having received Beacon information from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the a GBC packet from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT discards the received GBC packet
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/ALL/BO-10
+ * @reference ETSI EN 302 636-4-1 [1], Annex D
+ * ETSI TS 103 836-4-1 [5], Annex D
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_ALL_BO_10() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_ALL_BO_10();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_ALL_BO_10
+
+ } // End of group gbcNonAreaAllForwardingAlgorithm
+
+ group gbcNonAreaGreedyForwarding {
+
+ /**
+ * @desc Check that a GBC request over upper Gn SAP triggers line forwarding if the IUT is outside the Destination Area
+ *
+ * Pics Selection: PICS_GN_GBC_SRC AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY'
+ * OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop and
+ * the IUT sends the GBC packet (see note)
+ * }
+ * }
+ * NOTE: Next hop ITS Station being identified by the MAC layer address of ItsNodeB
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/GRD/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.2 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.2 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_GRD_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_GRD_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_GRD_BV_01
+
+ /**
+ * @desc Check that a received GBC packet is triggering line forwarding if received out of its
+ * destination area for the first time from a known ITS-Station
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY'
+ * OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet generated by ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop and
+ * the IUT forwards the GBC packet (see note)
+ * }
+ * }
+ * NOTE: Next hop ITS Station being identified by the MAC layer address of ItsNodeB
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/GRD/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_GRD_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_GRD_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_GRD_BV_02
+
+ /**
+ * @desc Check that a received GBC packet is not triggering line forwarding if received out of its
+ * destination area twice or more
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY'
+ * OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * the IUT having received a GBC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value HL1 higher than 1
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * containing DestinationArea
+ * indicating AREA2
+ * the IUT having forwarded the received GBC packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet from ItsNodeD
+ * containing Basic Header
+ * containing RHL field
+ * indicating value lower than HL1
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not forward the received GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/GRD/BO-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_GRD_BO_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_GRD_BO_07();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_GRD_BO_07
+
+ } // End of group gbcNonAreaGreedyForwarding
+
+ group gbcNonAreaContentionBasedForwarding {
+
+ /**
+ * @desc Check that a GBC request over upper Gn SAP triggers the broadcasting of a GBC packet if the IUT is outside the Destination Area
+ *
+ * Pics Selection: PICS_GN_GBC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * when {
+ * Expected behaviour:
+ * ensure that {
+ * the IUT is requested to send a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT broadcasts immediately the GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/CBF/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.2 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.2 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_CBF_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_01
+
+ /**
+ * @desc Check that a received GBC packet is forwarded at the correct time according to the contention
+ * based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than itsGnDefaultMaxCommunicationRange MIB attribute
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of calculated CBF delay (see note)
+ * }
+ * }
+ * NOTE: The CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange,
+ * itsGnGeoCbfMinTime, and itsGnGeoCbfMaxTime MIB attributes, and the distance value between IUT and ItsNodeC.
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/CBF/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_CBF_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_02
+
+ /**
+ * @desc Check that GBC packet forwarding correctly avoids packet duplication according to the
+ * contention based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than the itsGnDefaultMaxCommunicationRange MIB attribute and
+ * the IUT having received a GBC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1 and
+ * the IUT having started a CBF timer for this packet (see note)
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet from ItsNodeB
+ * before expiration of the CBF timer
+ * }
+ * then {
+ * the IUT does not re-broadcast the GBC packet
+ * }
+ * }
+ * NOTE: The CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange,
+ * itsGnGeoCbfMinTime, and itsGnGeoCbfMaxTime MIB attributes, and the distance value between IUT and ItsNodeC.
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/CBF/BV-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_CBF_BV_07();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_07
+
+ /**
+ * @desc Check that a received GBC packet forwarding is correctly handling the minimum delay value
+ * according to the contention based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeC being
+ * less than itsGnDefaultMaxCommunicationRange MIB attribute
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of itsGnGeoCbfMinTime delay
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/CBF/BV-20
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_20() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_CBF_BV_20();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_20
+
+ /**
+ * @desc Check that a received GBC packet is forwarded at the correct time according to the contention
+ * based forwarding rules if received for the first time when IUT is outside of the destination area
+ * from an unknown sender
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT not having received any message from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the a GBC packet generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT re-broadcasts the GBC packet
+ * upon expiry of CBF_MAX
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/CBF/BV-21
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_21() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_CBF_BV_21();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_21
+
+ /**
+ * @desc Check that a received GBC packet is forwarded at the correct time according to the contention
+ * based forwarding rules if received for the first time when IUT is outside of the destination area
+ * from a known sender having an uncertain position (PAI = 0)
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * containing Beacon ExtendedHeader
+ * containing SOPV field
+ * containing PAI
+ * set to '0'
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the a GBC packet generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT re-broadcasts the GBC packet
+ * upon expiry of CBF_MAX
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/NONAREA/CBF/BV-22
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_22() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_NONAREA_CBF_BV_22();
+
+ } // End of testcase TC_GEONW_PON_GBC_NONAREA_CBF_BV_22
+
+ } // End of group gbcNonAreaContentionBasedForwarding
+
+ } // End of group gbcNonAreaForwarding
+
+ group gbcAreaForwarding {
+
+ group gbcAreaAllForwardingAlgorithm {
+
+ /**
+ * @desc Check that a GBC request over upper Gn SAP triggers broadcasting of a GBC packet if the IUT is within the Destination Area
+ *
+ * Pics Selection: PICS_GN_GBC_SRC
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT broadcasts immediately the GBC packet
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ALL/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.2
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ALL_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ALL_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ALL_BV_01
+
+ /**
+ * @desc Check that the protocol header fields (RHL) are correctly updated during a GBC re-
+ * broadcasting step
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value HL1 higher than 1
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT retransmits the GBC packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating value (HL1 -1)
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ALL/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ALL_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ALL_BV_03();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ALL_BV_03
+
+ /**
+ * @desc Check that the RHL restriction is correctly handled at a GBC re-broadcasting step
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT does not retransmit the GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ALL/BV-04
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ALL_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ALL_BV_04();
+
+ } // End of testcase TC_GEONW_PON_GB_AREA_ALLC_BV_04
+
+ /**
+ * @desc Check that a received GBC packet is passed over the Gn SAP to the correct upper
+ * protocol if it is received for the first time within the GBC destination area
+ *
+ * Pics Selection: PICS_GN_GBC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT passes the received GBC packet to the correct Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ALL/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ALL_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ALL_BV_05();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ALL_BV_05
+
+ /**
+ * @desc Check that a received GBC packet is not passed over the Gn SAP if it is received for the
+ * second or more time
+ *
+ * Pics Selection: PICS_GN_GBC_DST
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a GBC packet from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * containing DestinationArea
+ * indicating AREA1 and
+ * the IUT having passed the received GBC packet to the correct Upper Layer protocol
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet from ItsNodeD
+ * containing Basic Header
+ * containing RHL field
+ * indicating value lower than HL1
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not pass the received GBC packet to any Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ALL/BO-08
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ALL_BO_08() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ALL_BO_08();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ALL_BO_08
+
+ } // End of group gbcAreaAllForwardingAlgorithm
+
+ group gbcAreaSimpleForwarding {
+
+ /**
+ * @desc Check that a received GBC packet is triggering re-broadcasting if received for the first
+ * time within its destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND (PICS_GN_AREA_FORWARDING_ALGORITHM == 'SIMPLE'
+ * OR PICS_GN_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT re-broadcasts immediately the GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/SMP/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GBC_AREA_SMP_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_SMP_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_SMP_BV_02
+
+ /**
+ * @desc Check that a received GBC packet is not triggering re-broadcasting if received for
+ * the second or more time (duplicate packet detection)
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND (PICS_GN_AREA_FORWARDING_ALGORITHM == 'SIMPLE'
+ * OR PICS_GN_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a GBC packet from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value HL1 higher than 1
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * containing DestinationArea
+ * indicating AREA1 and
+ * the IUT having re-broadcast the GBC packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet from ItsNodeD
+ * containing Basic Header
+ * containing RHL field
+ * indicating value lower than HL1
+ * containing GBC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not re-broadcast the GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/SMP/BO-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.11.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.11.3 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GBC_AREA_SMP_BO_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_SMP_BO_07();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_SMP_BO_07
+
+ } // End of group gbcAreaSimpleForwarding
+
+ group gbcAreaContentionBasedForwarding {
+
+ /**
+ * @desc Check that a received GBC packet is triggering contention if received for the first time from a known sender
+ * when inside of the destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the a GBC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT saves the GBC packet into the CBF buffer and
+ * the IUT starts the contention timer and
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/CBF/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_CBF_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_CBF_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_CBF_BV_02
+
+ /**
+ * @desc Check that a received GBC packet is discarded if received twice or more
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * the IUT having received a GBC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * the IUT having saved the packet into CBF buffer
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet from ItsNodeD
+ * }
+ * then {
+ * the IUT removes the GBC packet from the CBF buffer
+ * the IUT discards the new received GBC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/CBF/BV-07
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_CBF_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_CBF_BV_07();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_CBF_BV_07
+
+ /**
+ * @desc Check that a received GBC packet is triggering contention if received for the first time
+ * when IUT is inside of the destination area from an unknown sender
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT not having received any message from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the a GBC packet generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT saves the GBC packet into the CBF buffer and
+ * the IUT starts the contention timer set to CBF_MAX and
+ * the IUT broadcasts the received GeoBroedcast packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/CBF/BV-21
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_CBF_BV_21() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_CBF_BV_21();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_CBF_BV_21
+
+
+ /**
+ * @desc Check that a received GBC packet is triggering contention if received for the first time
+ * when IUT is inside of the destination area from an unknown sender
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * containing Beacon ExtendedHeader
+ * containing SOPV field
+ * containing PAI
+ * set to '0'
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the a GBC packet generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT saves the GBC packet into the CBF buffer and
+ * the IUT starts the contention timer set to CBF_MAX and
+ * the IUT re-broadcasts the received GeoBroedcast packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/CBF/BV-22
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GBC_AREA_CBF_BV_22() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_CBF_BV_22();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_CBF_BV_22
+
+ } // End of group gbcAreaContentionBasedForwarding
+
+ group gbcAreaAdvancedForwarding {
+
+ /**
+ * @desc Check that a received GBC packet with Broadcast MAC destination is triggering
+ * contention if received for the first time from an unknown sender when IUT is inside the
+ * destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF05
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT not having received any message from ItsNodeE
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeE
+ * addressed to link-layer broadcast address
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT saves the GBC packet into the CBF buffer and
+ * the IUT starts the contention timer set to CBF_MAX and
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-21
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_21() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_21();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_21
+
+ /**
+ * @desc Check that a received GBC packet is discarded if received more than MAX_COUNTER
+ * times when IUT is inside of the destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF06
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeF and
+ * the IUT having received a GBC packet GBC1 from ItsNodeF
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * the IUT having saved the packet into CBF buffer
+ * the IUT having received MAX_COUNTER - 1 times the GBC1 packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet GBC1
+ * }
+ * then {
+ * the IUT removes GBC1 from the CBF buffer
+ * the IUT discards the new received GBC packet
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-23
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_23() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_23();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_23
+
+ /**
+ * @desc Check that a received GBC packet is discarded if received more than 1 times when IUT
+ * is inside of the destination area and inside the sectorial area of the GBC packet Sender
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF05
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeE and
+ * the IUT having received a GBC packet GBC1 from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * the IUT having saved the packet into CBF buffer
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet GBC1 from ItsNodeE
+ * the IUT is inside the sectorial area of ItsNodeB
+ * }
+ * then {
+ * the IUT removes GBC1 from the CBF buffer
+ * the IUT discards the new received GBC packet
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-24
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_24() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_24();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_24
+
+ /**
+ * @desc Check that a received GBC packet is triggering contention if received more than 1 times when the IUT
+ * is inside of the destination area and outside the sectorial area of the GBC packet Sender (Angle_FSR > Angle_TH)
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF06
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeF and
+ * the IUT having received a GBC packet GBC1 from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * the IUT having saved the packet into CBF buffer
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet GBC1 from ItsNodeF
+ * the IUT is outside the sectorial area of ItsNodeB
+ * }
+ * then {
+ * the IUT saves the GBC packet GBC1 from ItsNodeF and
+ * the IUT starts the contention timer and
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ * Note: In this configuration IUT is outside sectorial area of ItsNodeB to the angle FSR
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-25
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_25() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_25();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_25
+
+ /**
+ * @desc Check that a received GBC packet is triggering contention if received more than 1 times when IUT
+ * is inside the destination area and outside the sectorial area of the GBC packet Sender (Dist_R > Dist_F)
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF07
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received a GBC packet GBC1 from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * the IUT having saved packet into the CBF buffer
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GBC packet GBC1 from ItsNodeD
+ * the IUT is outside the sectorial area of ItsNodeB
+ * }
+ * then {
+ * the IUT saves the GBC packet into the CBF buffer and
+ * the IUT starts the contention timer and
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ * Note: In this configuration IUT is outside sectorial area of ItsNodeB because of dist_R > dist_F
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-26
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_26() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_26();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_26
+
+ /**
+ * @desc Check that a received GBC packet with Unicast MAC destination is triggering line
+ * forwarding if received for the first time when IUT is inside the destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF05
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeE and
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeE
+ * addressed to IUT's link-layer address
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop ITS station and
+ * the IUT forwards the GBC packet
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-27
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_27() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_27();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_27
+
+ /**
+ * @desc Check that a received GBC packet with Unicast MAC destination is triggering
+ * rebroadcast if received for the first time when IUT is inside the destination area.
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF05
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeE
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeE addressed to IUT's link-layer address
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT saves the GBC packet into the CBF buffer and
+ * the IUT starts the contention timer set to CBF_MAX and
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-28
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_28() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_28();
+
+ } // End of testcase TC_GEONW_PON_BAA_BV_28
+
+ /**
+ * @desc Check that a received GBC packet with Broadcast destination is triggering contention if
+ * received for the first time from known sender when IUT is inside the destination area
+ *
+ * Pics Selection: PICS_GN_GBC_FWD AND NOT PICS_ITS_RELEASE_2 AND PICS_GN_AREA_FORWARDING_ALGORITHM == 'ADVANCED'
+ * Config Id: CF05
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeE
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet from ItsNodeE
+ * addressed to broadcast link-layer address
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT calculates and starts the contention timer and
+ * the IUT re-broadcasts the received GBC packet
+ * upon expiry of the contention timer
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GBC/AREA/ADV/BV-29
+ * @reference ETSI EN 302 636-4-1 [1], Annex F.4
+ */
+ testcase TC_GEONW_PON_GBC_AREA_ADV_BV_29() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GBC_AREA_ADV_BV_29();
+
+ } // End of testcase TC_GEONW_PON_GBC_AREA_ADV_BV_29
+
+ } // End of group gbcAreaAdvancedForwarding
+
+ } // End of group gbcAreaForwarding
+
+ } // End of group geoGeoBroadcast
+
+ // 6.2.2.10
+ group geoTopologicallyScopedBroadcast {
+
+ /**
+ * @desc Check that a TSB request over upper Gn SAP triggers the origination of a TSB
+ * packet
+ *
+ * Pics Selection: PICS_GN_TSB_SRC
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a TSB packet
+ * }
+ * then {
+ * the IUT broadcasts a TSB packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.2
+ */
+ testcase TC_GEONW_PON_TSB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BV_01();
+
+ } // End of testcase TC_GEONW_PON_TSB_BV_01
+
+ /**
+ * @desc Check that a received TSB packet is triggering re-broadcasting if received for the first time
+ *
+ * Pics Selection: PICS_GN_TSB_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a TSB packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 higher than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the TSB packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_TSB_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BV_02();
+
+ } // End of testcase TC_GEONW_PON_TSB_BV_02
+
+ /**
+ * @desc Check that the protocol header fields (RHL) are correctly updated during a TSB re-
+ * broadcasting step
+ *
+ * Pics Selection: PICS_GN_TSB_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a TSB packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * }
+ * then {
+ * the IUT re-broadcasts the TSB packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating value (HL1 -1)
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_TSB_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BV_03();
+
+ } // End of testcase TC_GEONW_PON_TSB_BV_03
+
+ /**
+ * @desc Check that the RHL restriction is correctly handled at a TSB re-broadcasting step
+ *
+ * Pics Selection: PICS_GN_TSB_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a TSB packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating 1
+ * }
+ * then {
+ * the IUT does not re-broadcast the TSB packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BO-04
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_TSB_BO_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BO_04();
+
+ } // End of testcase TC_GEONW_PON_TSB_BO_04
+
+ /**
+ * @desc Check that a received TSB packet is passed over the Gn SAP to the correct upper protocol if it is
+ * received for the first time
+ *
+ * Pics Selection: PICS_GN_TSB_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a TSB packet
+ * }
+ * then {
+ * the IUT passes the received TSB packet to the correct Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_TSB_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BV_05();
+
+ } // End of testcase TC_GEONW_PON_TSB_BV_05
+
+ /**
+ * @desc Check that a received TSB packet is not triggering re-broadcasting if received for the second or
+ * more time
+ *
+ * Pics Selection: PICS_GN_TSB_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received a TSB packet from ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 higher than 1
+ * containing TSB Extended Header
+ * containing SN field
+ * indicating value SN1 and
+ * the IUT having re-broadcast the TSB packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same TSB packet from ItsNodeD
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 - 1
+ * containing TSB Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not re-broadcast the TSB packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BO-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_TSB_BO_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BO_07();
+
+ } // End of testcase TC_GEONW_PON_TSB_BO_07
+
+ /**
+ * @desc Check that a received TSB packet is not passed over the Gn SAP if it is received for the second
+ * or more time
+ *
+ * Pics Selection: PICS_GN_TSB_DST
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received a TSB packet from ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 higher than 1
+ * containing TSB Extended Header
+ * containing SN field
+ * indicating value SN1 and
+ * the IUT having passed the received TSB packet to the correct Upper Layer protocol
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same TSB packet from ItsNodeD
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 - 1
+ * containing TSB Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not pass the received TSB packet to any Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/TSB/BO-08
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.9.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.9.3
+ */
+ testcase TC_GEONW_PON_TSB_BO_08() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_TSB_BO_08();
+
+ } // End of testcase TC_GEONW_PON_TSB_BO_08
+
+ } // End of group geoTopologicallyScopedBroadcast
+
+ // 6.2.2.11
+ group geoSingleHopBroadcast {
+
+ /**
+ * @desc Check that a SHB request over upper Gn SAP triggers the origination of a SHB
+ * packet
+ *
+ * Pics Selection: PICS_GN_SHB_SRC
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a SHB packet
+ * }
+ * then {
+ * the IUT broadcasts the SHB packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/SHB/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.10.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.10.2
+ */
+ testcase TC_GEONW_PON_SHB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_SHB_BV_01();
+
+ } // End of testcase TC_GEONW_PON_SHB_BV_01
+
+ /**
+ * @desc Check that a received SHB packet is passed over the Gn SAP to the correct upper protocol if it is
+ * received for the first time
+ *
+ * Pics Selection: PICS_GN_SHB_DST
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a SHB packet
+ * }
+ * then {
+ * the IUT passes the received SHB packet to the Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/SHB/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.10.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.10.3
+ */
+ testcase TC_GEONW_PON_SHB_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_SHB_BV_05();
+
+ } // End of testcase TC_GEONW_PON_SHB_BV_05
+
+ } // End of group geoSingleHopBroadcast
+
+ // 6.2.2.12
+ group geoGeoAnycast {
+
+ group gacNonAreaForwarding {
+
+ group gacNonAreaAllForwardingAlgorithm {
+
+ /**
+ * @desc Check that the protocol header fields (RHL) are correctly updated during a GAC
+ * forwarding step
+ *
+ * Pics Selection: PICS_GN_GAC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value HL1 higher than 1
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT retrnasmits the GAC packet
+ * containing Basic Header
+ * containing RHL field
+ * indicating value (HL1 - 1)
+ * containing Common Header
+ * containing MHL field
+ * indicating value MHL1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/ALL/BV-03
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.6.3 and 10.3.12.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.6.3 and 10.3.12.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_ALL_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_ALL_BV_03();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_ALL_BV_03
+
+ /**
+ * @desc Check that the RHL restriction is correctly handled at a GAC forwarding step
+ *
+ * Pics Selection: PICS_GN_GAC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeC
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating 1
+ * containing GAC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT does not retransmit the GAC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/ALL/BO-04
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.6.3 and 10.3.12.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.6.3 and 10.3.12.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_ALL_BO_04() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_ALL_BO_04();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_ALL_BO_04
+
+ /**
+ * @desc Check that a received GAC packet is not passed over the Gn SAP if it is received for the
+ * first time outside the GAC destination area
+ *
+ * Pics Selection: PICS_GN_GAC_FWD
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT does not pass the received GAC packet to any Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/BV-06
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.6.3 and 10.3.12.3
+ * ETSI TS 103 836-4-1 [5], clauses 10.3.6.3 and 10.3.12.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_ALL_BV_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_ALL_BV_06();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_ALL_BV_06
+
+ /**
+ * @desc Check that a received GAC packet is discarded when indicating a too big GeoArea
+ *
+ * Pics Selection: PICS_GN_GAC_FWD
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating a geoArea bigger than itsGnMaxGeoAreaSize
+ * }
+ * then {
+ * the IUT does not retransmit the received GAC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/ALL/BO-09
+ * @reference ETSI EN 302 636-4-1 [1], Annex B.3
+ * ETSI TS 103 836-4-1 [5], Annex B.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_ALL_BO_09() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_ALL_BO_09();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_ALL_BO_09
+
+ /**
+ * @desc Check that a received GAC packet from inside the destination area is discarded if received for
+ * the first time from a known sender when IUT is outside the destination area.
+ *
+ * Pics Selection: PICS_GN_GAC_FWD
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the IUT having received Beacon information from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GAC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT discards the received GAC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/ALL/BV-10
+ * @reference ETSI EN 302 636-4-1 [1], Annex D
+ * ETSI TS 103 836-4-1 [5], Annex D
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_ALL_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_ALL_BV_10();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_ALL_BV_10
+
+ } // End of group gacNonAreaAllForwardingAlgorithm
+
+ group gacNonAreaGreedyForwarding {
+
+ /**
+ * @desc Check that a GAC request over upper Gn SAP triggers line forwarding if the IUT is outside the Destination Area
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY' OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GAC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop and
+ * the IUT sends the GAC packet (see note)
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * }
+ * NOTE: Next hop ITS Station being identified by the MAC layer address of ItsNodeB
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/GRD/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.2 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.2 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_GRD_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_GRD_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_GRD_BV_01
+
+ /**
+ * @desc Check that a received GAC packet is triggering line forwarding if received out of its
+ * destination area for the first time
+ *
+ * Pics Selection: PICS_GN_GAC_FWD AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY' OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT selects ItsNodeB as the next hop and
+ * the IUT forwards the GAC packet (see note)
+ * }
+ * }
+ * NOTE: Next hop ITS Station being identified by the MAC layer address of ItsNodeB
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/GRD/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.12.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_GRD_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_GRD_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GAC_BV_02
+
+ /**
+ * @desc Check that a received GAC packet is not triggering line forwarding if received out of its
+ * destination area for the second or more time
+ *
+ * Pics Selection: PICS_GN_GAC_FWD AND (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'GREEDY' OR PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'UNSPECIFIED')
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB
+ * the IUT having received Beacon information from ItsNodeD
+ * the IUT having received a GAC packet from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value HL1 higher than 1
+ * containing GAC Extended Header
+ * containing SN field
+ * indicating value SN1 and
+ * containing DestinationArea
+ * indicating AREA2
+ * the IUT having forwarded the GAC packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GAC packet from other neighbour
+ * containing Basic Header
+ * containing RHL field
+ * indicating value lower than HL1
+ * containing GAC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not forward the received GAC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/GRD/BO-07
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.3 and Annex E.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3 and Annex E.2
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_GRD_BO_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_GRD_BO_07();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_GRD_BO_07
+
+ } // End of group gacNonAreaGreedyForwarding
+
+ group gacNonAreaContentionBasedForwarding {
+
+ /**
+ * @desc Check that a GAC request over upper Gn SAP triggers immediate broadcasting of a
+ * GAC packet if the IUT is outside the Destination Area
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GAC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT broadcasts immediately the GAC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/CBF/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.2
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_CBF_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_01
+
+ /**
+ * @desc Check that a received GAC packet is forwarded at the correct time according to the contention
+ * based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than itsGnDefaultMaxCommunicationRange MIB attribute
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GAC packet
+ * upon expiry of calculated CBF delay (see note)
+ * }
+ * }
+ * NOTE: The CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange, itsGnCbfMinTime,
+ * and itsGnCbfMaxTime MIB attributes, and the distance value between IUT and ItsNodeC.
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/CBF/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.12.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_CBF_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_02
+
+ /**
+ * @desc Check that GAC packet forwarding correctly avoids packet duplication according to the contention
+ * based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeA being
+ * less than the itsGnDefaultMaxCommunicationRange MIB attribute and
+ * the IUT having received a GAC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1 and
+ * the IUT having started a CBF timer for this packet (see note)
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GAC packet from ItsNodeB
+ * before expiration of the CBF timer
+ * }
+ * then {
+ * the IUT does not re-broadcast the GAC packet
+ * }
+ * }
+ * NOTE: The CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange, itsGnCbfMinTime,
+ * and itsGnCbfMaxTime MIB attributes, and the distance value between IUT and ItsNodeC.
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/CBF/BV-07
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.12.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_CBF_BV_07();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_07
+
+ /**
+ * @desc Check that a received GAC packet forwarding is correctly handling the minimum delay value
+ * according to the contention based forwarding rules
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeC and
+ * the distance between IUT and ItsNodeC being
+ * larger than the itsGnDefaultMaxCommunicationRange MIB attribute
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating value greater than 1
+ * }
+ * then {
+ * the IUT re-broadcasts the received GAC packet
+ * upon expiry of itsGnCbfMinTime delay
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/CBF/BV-20
+ * @reference ETSI EN 302 636-4-1 [1], clauses 10.3.12.3 and Annex E.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3 and Annex E.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_20() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_CBF_BV_20();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_20
+
+ /**
+ * @desc Check that a received GAC packet is forwarded at the correct time according to the contention
+ * based forwarding rules if received for the first time when IUT is outside of the destination area
+ * from an unknown sender
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT not having received any message from ItsNodeD
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GAC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT re-broadcasts the GAC packet
+ * upon expiry of CBF_MAX
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/CBF/BV-21
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_21() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_CBF_BV_21();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_21
+
+ /**
+ * @desc Check that a received GAC packet is forwarded at the correct time according to the contention
+ * based forwarding rules if received for the first time when IUT is outside of the destination area
+ * from a known sender having an uncertain position (PAI = 0)
+ *
+ * Pics Selection: PICS_GN_GAC_SRC AND PICS_GN_NON_AREA_FORWARDING_ALGORITHM == 'CBF'
+ * Config Id: CF04
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having received Beacon information from ItsNodeD
+ * containing Beacon ExtendedHeader
+ * containing SOPV field
+ * containing PAI
+ * set to ‘0’
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet generated by ItsNodeC from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing GAC Extended Header
+ * containing DestinationArea
+ * indicating AREA2
+ * }
+ * then {
+ * the IUT re-broadcasts the GAC packet
+ * upon expiry of CBF_MAX
+ * }
+ * }
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/NONAREA/CBF/BV-22
+ * @reference ETSI EN 302 636-4-1 [1], Annex E.3
+ * ETSI TS 103 836-4-1 [5], Annex E.3
+ */
+ testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_22() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_NONAREA_CBF_BV_22();
+
+ } // End of testcase TC_GEONW_PON_GAC_NONAREA_CBF_BV_22
+
+ } // End of group gacNonAreaContentionBasedForwarding
+
+ } // End of group gacNonAreaForwarding
+
+ group gacAreaForwarding {
+
+ /**
+ * @desc Check that GAC request over upper Gn SAP triggers broadcasting of a GAC packet if the IUT is within the Destination Area
+ *
+ * Pics Selection: PICS_GN_GAC_SRC
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GAC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT broadcasts immediately the GAC packet
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/AREA/ALL/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.2
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.2
+ */
+ testcase TC_GEONW_PON_GAC_AREA_ALL_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_AREA_ALL_BV_01();
+
+ } // End of testcase TC_GEONW_PON_GAC_AREA_ALL_BV_01
+
+ /**
+ * @desc Check that a received GAC packet is not triggering forwarding or re-broadcasting if the IUT
+ * is within the Destination Area
+ *
+ * Pics Selection: PICS_GN_GAC_FWD
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received Beacon information from ItsNodeD and
+ * the IUT having received Beacon information from ItsNodeB
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * IUT does not retransmit the received GAC packet
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/AREA/ALL/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3
+ */
+ testcase TC_GEONW_PON_GAC_AREA_ALL_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_AREA_ALL_BV_02();
+
+ } // End of testcase TC_GEONW_PON_GAC_AREA_ALL_BV_02
+
+ /**
+ * @desc Check that a received GAC packet is passed over the Gn SAP to the correct upper
+ * protocol if it is received for the first time within the GAC destination area
+ *
+ * Pics Selection: PICS_GN_GAC_DST
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state"
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GAC packet from ItsNodeB
+ * containing TrafficClass.SCF set to 1
+ * containing DestinationArea
+ * indicating AREA1
+ * }
+ * then {
+ * the IUT passes the received GAC packet to the correct Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/AREA/ALL/BV-05
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3
+ */
+ testcase TC_GEONW_PON_GAC_AREA_ALL_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_AREA_ALL_BV_05();
+
+ } // End of testcase TC_GEONW_PON_GAC_AREA_ALL_BV_05
+
+ /**
+ * @desc Check that a received GAC packet is not passed over the Gn SAP if it is received for
+ * the second or more time
+ *
+ * Pics Selection: PICS_GN_GAC_DST
+ * Config Id: CF02
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having received a GAC packet from ItsNodeD
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1
+ * containing GAC Extended Header
+ * containing SN field
+ * indicating value SN1 and
+ * containing DestinationArea
+ * indicating AREA1 and
+ * the IUT having passed the received GAC packet to the correct Upper Layer protocol
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives the same GAC packet from ItsNodeB
+ * containing Basic Header
+ * containing RHL field
+ * indicating value lower than HL1
+ * containing GAC Extended Header
+ * containing SN field
+ * indicating value SN1
+ * }
+ * then {
+ * the IUT does not pass the received GAC packet to any Upper Layer protocol
+ * }
+ * }
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/PON/GAC/AREA/ALL/BO-08
+ * @reference ETSI EN 302 636-4-1 [1], clause 10.3.12.3
+ * ETSI TS 103 836-4-1 [5], clause 10.3.12.3
+ */
+ testcase TC_GEONW_PON_GAC_AREA_ALL_BO_08() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_PON_GAC_AREA_ALL_BO_08();
+
+ } // End of testcase TC_GEONW_PON_GAC_AREA_ALL_BO_08
+
+ } // End of group gacAreaForwarding
+
+ } // End of group geoGeoAnycast
+
+ } // End of group geoProtocolOperation
+
+ // 6.2.3 Capacities
+ group geoCapacities {
+
+ // 6.2.3.1
+ group geoCapLocationService {
+
+ /**
+ * @desc Test of LS buffer capacity according to its GnLocationServicePacketBufferSize parameter and
+ * the overflow handling procedure
+ *
+ * Pics Selection: PICS_GN_LS_REQ_SRC
+ * Config Id: CF01
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeA and
+ * the IUT having received Beacon information from ItsNodeB and
+ * the IUT having been requested to send multiple GUC packets to ItsNodeA
+ * containing TrafficClass.SCF set to 1 and
+ * the IUT having sent a LS_REQUEST packet and
+ * the IUT not having received a LS_REPLY packet
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT is requested to send a GUC packet to ItsNodeA
+ * containing TrafficClass.SCF set to 1 and
+ * the location service buffer capacity exceeded (see note 1)
+ * }
+ * then {
+ * the IUT removes the older packet(s) in the location service buffer and,
+ * the IUT inserts the new received packet at the end of the location service buffer (see note 2)
+ * }
+ * }
+ * NOTE 1: The amount of stored data exceeds Location Service buffer capacity defined by the
+ * itsGnLocationServicePacketBufferSize MIB parameter
+ * NOTE 2: Buffered packets will be delivered upon reception of LS_REPLY message
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/CAP/LOS/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 8.4.3
+ * ETSI TS 103 836-4-1 [5], clause 8.5.3
+ */
+ testcase TC_GEONW_CAP_LOS_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
+
+ f_GEONW_CAP_LOS_BV_01();
+
+ } // End of testcase TC_GEONW_CAP_LOS_BV_01
+
+ } // End of group geoCapLocationService
+
+ // 6.2.3.2
+ group geoCapForwardingPacketBuffer {
+
+ /**
+ * @desc Test of UC forwarding buffer capacity according to itsGnUcForwardingPacketBufferSize
+ * parameter and the overflow handling procedure
+ *
+ * Pics Selection: PICS_GN_GUC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeB and
+ * the IUT having received multiple GUC packets addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GUC packet addressed to ItsNodeA from ItsNodeC
+ * containing TrafficClass.SCF set to 1
+ * containing Basic Header
+ * containing RHL field
+ * indicating HL1 higher than 1
+ * the UC forwarding packet buffer capacity exceeded (see note 1)
+ * }
+ * then {
+ * the IUT removes the older packet(s) in the UC forwarding packet buffer and,
+ * the IUT inserts the new received GUC packet at the end of the UC forwarding packet buffer (see note 2)
+ * }
+ * }
+ * NOTE 1: The amount of stored data exceeds UC forwarding packet capacity defined by the
+ * itsGnUcForwardingPacketBufferSize MIB parameter
+ * NOTE 2: Buffered packets will be delivered upon reception of Beacon message from ItsNodeB
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/CAP/FPB/BV-01
+ * @reference ETSI EN 302 636-4-1 [1], clause 8.5.3
+ * ETSI TS 103 836-4-1 [5], clause 8.6.3
+ */
+ testcase TC_GEONW_CAP_FPB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_CAP_FPB_BV_01();
+
+ } // End of testcase TC_GEONW_CAP_FPB_BV_01
+
+ /**
+ * @desc Test of BC forwarding buffer capacity according to itsGnBcForwardingPacketBufferSize
+ * parameter and the overflow handling procedure
+ *
+ * Pics Selection: PICS_GN_GBC_FWD
+ * Config Id: CF03
+ * Initial conditions:
+ * with {
+ * the IUT being in the "initial state" and
+ * the IUT having no Location Table Entry for ItsNodeB
+ * the IUT having received multiple GBC packets
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing GBC Destination Area
+ * indicating AREA2
+ * }
+ * Expected behaviour:
+ * ensure that {
+ * when {
+ * the IUT receives a GBC packet
+ * containing TrafficClass.SCF set to 1
+ * containing GBC Extended Header
+ * containing GBC Destination Area
+ * indicating AREA2 and
+ * the BC forwarding packet buffer capacity exceeded (see note 1)
+ * }
+ * then {
+ * the IUT removes the older packet(s) in the BC forwarding packet buffer and,
+ * the IUT inserts the new received GBC packet at the end of the BC forwarding packet buffer (see note 2)
+ * }
+ * }
+ * NOTE 1: The amount of stored data exceeds BC forwarding buffer capacity defined by the
+ * itsGnBcForwardingPacketBufferSize MIB parameter
+ * NOTE 2: Buffered packets will be delivered upon reception of Beacon message from ItsNodeB
+ *
+ *
+ *
+ * @see ETSI TS 102 871-2 V2.2.1 TP/GEONW/CAP/FPB/BV-02
+ * @reference ETSI EN 302 636-4-1 [1], clause 8.5.3
+ * ETSI TS 103 836-4-1 [5], clause 8.6.3
+ */
+ testcase TC_GEONW_CAP_FPB_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
+
+ f_GEONW_CAP_FPB_BV_02();
+
+ } // End of testcase TC_GEONW_CAP_FPB_BV_02
+
+ } // End of group geoCapForwardingPacketBuffer
+
+ } // End of group geoCapacities
+
+} // End of module ItsGeoNetworking_TestCases
+
diff --git a/ItsGeoNetworking_TestControl.ttcn b/ItsGeoNetworking_TestControl.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..f219372a178c59250e75c9ab6f8b864d16f1ad5b
--- /dev/null
+++ b/ItsGeoNetworking_TestControl.ttcn
@@ -0,0 +1,494 @@
+/**
+ * @author ETSI / STF405 / STF449 / STF484
+ * @version $URL$
+ * $Id$
+ * @desc Test Control file for GeoNetworking
+ * @copyright ETSI Copyright Notification
+ * No part may be reproduced except as authorized by written permission.
+ * The copyright and the foregoing restriction extend to reproduction in all media.
+ * All rights reserved.
+ *
+ */
+module ItsGeoNetworking_TestControl {
+
+ // ATS GeoNetworking
+ import from ItsGeoNetworking_TestCases all;
+
+ // LibItsGeoNetworking
+ import from LibItsGeoNetworking_Pics all;
+ import from LibItsGeoNetworking_TypesAndValues all;
+
+ // Test Execution
+ control {
+
+ /* FDV */
+
+ if(PICS_GN_BASIC_HEADER) {
+ execute(TC_GEONW_FDV_BAH_BV_01());
+ execute(TC_GEONW_FDV_BAH_BI_02());
+ }
+
+ if(PICS_GN_COMMON_HEADER) {
+ execute(TC_GEONW_FDV_COH_BV_01());
+ execute(TC_GEONW_FDV_COH_BV_02());
+ execute(TC_GEONW_FDV_COH_BV_03());
+ execute(TC_GEONW_FDV_COH_BO_04());
+ }
+
+ if(PICS_GN_BEACON_SRC) {
+ execute(TC_GEONW_FDV_BEA_BV_01());
+ execute(TC_GEONW_FDV_BEA_BV_02());
+ execute(TC_GEONW_FDV_BEA_BV_03());
+ execute(TC_GEONW_FDV_BEA_BV_04());
+ }
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_FDV_GUC_BV_01());
+ }
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_FDV_GBC_BV_01());
+ }
+
+ if(PICS_GN_GAC_SRC) {
+ execute(TC_GEONW_FDV_GAC_BV_01());
+ }
+
+ if(PICS_GN_SHB_SRC) {
+ execute(TC_GEONW_FDV_SHB_BV_01());
+ }
+
+ if(PICS_GN_TSB_SRC) {
+ execute(TC_GEONW_FDV_TSB_BV_01());
+ }
+
+ /* PON/LOT */
+
+ if(PICS_GN_GUC_SRC and PICS_GN_BEACON_DST) {
+ execute(TC_GEONW_PON_LOT_BV_01());
+ }
+
+ if(PICS_GN_LS_REQ_SRC and PICS_GN_LS_REP_DST) {
+ execute(TC_GEONW_PON_LOT_BV_02());
+ }
+
+ if(PICS_GN_BEACON_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_01());
+ }
+
+ if(PICS_GN_GUC_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_02());
+ }
+
+ if(PICS_GN_GAC_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_03());
+ }
+
+ if(PICS_GN_GBC_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_04());
+ }
+
+ if(PICS_GN_TSB_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_05());
+ }
+
+ if(PICS_GN_SHB_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_06());
+ }
+
+ if(PICS_GN_LS_REQ_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_07());
+ }
+
+ if(PICS_GN_LS_REP_DST) {
+ execute(TC_GEONW_PON_LOT_BV_03_08());
+ }
+
+ if(PICS_GN_LS_REQ_SRC) {
+ execute(TC_GEONW_PON_LOT_BV_04());
+ }
+
+ if(PICS_GN_GUC_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_01());
+ }
+
+ if(PICS_GN_GAC_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_02());
+ }
+
+ if(PICS_GN_GBC_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_03());
+ }
+
+ if(PICS_GN_TSB_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_04());
+ }
+
+ if(PICS_GN_SHB_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_05());
+ }
+
+ if(PICS_GN_LS_REQ_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_06());
+ }
+
+ if(PICS_GN_LS_REP_DST) {
+ execute(TC_GEONW_PON_LOT_BV_05_07());
+ }
+
+ /* PON/LPV */
+
+ if(PICS_GN_BEACON_SRC) {
+ execute(TC_GEONW_PON_LPV_BV_01());
+ }
+
+ /* PON/SQN */
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_PON_SQN_BV_01());
+ execute(TC_GEONW_PON_SQN_BV_02());
+ }
+
+ /* PON/LOS */
+
+ if(PICS_GN_LS_REQ_SRC) {
+ execute(TC_GEONW_PON_LOS_BV_01());
+ execute(TC_GEONW_PON_LOS_BV_02());
+ if(PICS_GN_LS_REP_DST) {
+ execute(TC_GEONW_PON_LOS_BV_03());
+ execute(TC_GEONW_PON_LOS_BV_04());
+ }
+ execute(TC_GEONW_PON_LOS_BV_05());
+ }
+
+ if(PICS_GN_LS_REQ_RETRANSMISSION) {
+ execute(TC_GEONW_PON_LOS_TI_06());
+ execute(TC_GEONW_PON_LOS_BV_07());
+ }
+
+ if(PICS_GN_LS_REQ_DST) {
+ execute(TC_GEONW_PON_LOS_BV_08());
+ execute(TC_GEONW_PON_LOS_BO_09());
+ }
+
+ if(PICS_GN_LS_FWD) {
+ execute(TC_GEONW_PON_LOS_BV_10());
+ execute(TC_GEONW_PON_LOS_BV_11());
+ }
+
+ if(PICS_GN_LS_REQ_SRC) {
+ execute(TC_GEONW_PON_LOS_BV_12());
+ execute(TC_GEONW_PON_LOS_BV_13());
+ execute(TC_GEONW_PON_LOS_BV_14());
+ execute(TC_GEONW_PON_LOS_BV_15());
+ execute(TC_GEONW_PON_LOS_BV_16());
+ execute(TC_GEONW_PON_LOS_BV_17());
+ }
+
+ /* PON/FPB */
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_01());
+ execute(TC_GEONW_PON_FPB_BV_02());
+ execute(TC_GEONW_PON_FPB_BV_03());
+ execute(TC_GEONW_PON_FPB_BV_04());
+ }
+
+ if(PICS_GN_TSB_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_06());
+ execute(TC_GEONW_PON_FPB_BV_07());
+ execute(TC_GEONW_PON_FPB_BV_08());
+ }
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_09());
+ }
+
+ if(PICS_GN_TSB_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_10());
+ }
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_11_01());
+ }
+
+ if(PICS_GN_GAC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_11_02());
+ }
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_11_03());
+ }
+
+ if(PICS_GN_TSB_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_11_04());
+ }
+
+ if(PICS_GN_SHB_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_11_05());
+ }
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_12_01());
+ }
+
+ if(PICS_GN_GAC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_12_02());
+ }
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_12_03());
+ }
+
+ if(PICS_GN_TSB_SRC) {
+ execute(TC_GEONW_PON_FPB_BV_12_04());
+ }
+
+ /* PON/GNA */
+
+ if(PICS_GN_ADDR_AUTO) {
+ if (PICS_GN_LOCAL_ADDR_CONF_METHOD == e_auto) {
+ execute(TC_GEONW_PON_GNA_BV_01());
+ }
+ }
+
+ if(PICS_GN_DAD) {
+ execute(TC_GEONW_PON_GNA_BV_02());
+ }
+
+ /* PON/BEA */
+
+ if(PICS_GN_BEACON_SRC) {
+ execute(TC_GEONW_PON_BEA_TI_01());
+ execute(TC_GEONW_PON_BEA_TI_02());
+ }
+
+ /* PON/GUC */
+ if(PICS_GN_GUC) {
+
+ if(PICS_GN_GUC_FWD) {
+ execute(TC_GEONW_PON_GUC_ALL_BV_03());
+ execute(TC_GEONW_PON_GUC_ALL_BO_04());
+ execute(TC_GEONW_PON_GUC_ALL_BV_06());
+ }
+
+ if(PICS_GN_GUC_DST) {
+ execute(TC_GEONW_PON_GUC_ALL_BV_05());
+ execute(TC_GEONW_PON_GUC_ALL_BO_08());
+ }
+
+ if((PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_greedy) or (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_unspecified)) {
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_PON_GUC_GRD_BV_01());
+ }
+
+ if(PICS_GN_GUC_FWD) {
+ execute(TC_GEONW_PON_GUC_GRD_BV_02());
+ execute(TC_GEONW_PON_GUC_GRD_BO_07());
+ }
+ }
+
+ if(PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_cbf) {
+
+ if(PICS_GN_GUC_SRC) {
+ execute(TC_GEONW_PON_GUC_CBF_BV_01());
+ }
+
+ if(PICS_GN_GUC_FWD) {
+ execute(TC_GEONW_PON_GUC_CBF_BV_02());
+ execute(TC_GEONW_PON_GUC_CBF_BV_07());
+ execute(TC_GEONW_PON_GUC_CBF_BV_20());
+ execute(TC_GEONW_PON_GUC_CBF_BV_21());
+ execute(TC_GEONW_PON_GUC_CBF_BV_22());
+ }
+ }
+
+ }
+
+ /* PON/GBC */
+ if(PICS_GN_GBC) {
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_PON_GBC_NONAREA_ALL_BV_03());
+ execute(TC_GEONW_PON_GBC_NONAREA_ALL_BV_04());
+ execute(TC_GEONW_PON_GBC_NONAREA_ALL_BV_06());
+ execute(TC_GEONW_PON_GBC_NONAREA_ALL_BO_09());
+ execute(TC_GEONW_PON_GBC_NONAREA_ALL_BO_10());
+ }
+
+ if((PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_greedy) or (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_unspecified)) {
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_PON_GBC_NONAREA_GRD_BV_01());
+ }
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_PON_GBC_NONAREA_GRD_BV_02());
+ execute(TC_GEONW_PON_GBC_NONAREA_GRD_BO_07());
+ }
+ }
+
+ if(PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_cbf) {
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_PON_GBC_NONAREA_CBF_BV_01());
+ }
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_PON_GBC_NONAREA_CBF_BV_02());
+ execute(TC_GEONW_PON_GBC_NONAREA_CBF_BV_07());
+ execute(TC_GEONW_PON_GBC_NONAREA_CBF_BV_20());
+ execute(TC_GEONW_PON_GBC_NONAREA_CBF_BV_21());
+ execute(TC_GEONW_PON_GBC_NONAREA_CBF_BV_22());
+ }
+ }
+
+ if(PICS_GN_GBC_SRC) {
+ execute(TC_GEONW_PON_GBC_AREA_ALL_BV_01());
+ }
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_PON_GBC_AREA_ALL_BV_03());
+ execute(TC_GEONW_PON_GBC_AREA_ALL_BV_04());
+ }
+
+ if(PICS_GN_GBC_DST) {
+ execute(TC_GEONW_PON_GBC_AREA_ALL_BV_05());
+ execute(TC_GEONW_PON_GBC_AREA_ALL_BO_08());
+ }
+
+ if((PICS_GN_AREA_FORWARDING_ALGORITHM == e_simple) or (PICS_GN_AREA_FORWARDING_ALGORITHM == e_unspecified)) {
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_PON_GBC_AREA_SMP_BV_02());
+ execute(TC_GEONW_PON_GBC_AREA_SMP_BO_07());
+ }
+ }
+
+ if(PICS_GN_AREA_FORWARDING_ALGORITHM == e_cbf) {
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_PON_GBC_AREA_CBF_BV_02());
+ execute(TC_GEONW_PON_GBC_AREA_CBF_BV_07());
+ execute(TC_GEONW_PON_GBC_AREA_CBF_BV_21());
+ execute(TC_GEONW_PON_GBC_AREA_CBF_BV_22());
+ }
+ }
+
+ if(PICS_GN_AREA_FORWARDING_ALGORITHM == e_advanced) {
+
+ 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());
+ execute(TC_GEONW_PON_GBC_AREA_ADV_BV_25());
+ execute(TC_GEONW_PON_GBC_AREA_ADV_BV_26());
+ execute(TC_GEONW_PON_GBC_AREA_ADV_BV_27());
+ execute(TC_GEONW_PON_GBC_AREA_ADV_BV_28());
+ execute(TC_GEONW_PON_GBC_AREA_ADV_BV_29());
+ }
+ }
+ }
+
+ /* PON/TSB */
+ if(PICS_GN_TSB) {
+
+ if(PICS_GN_TSB_SRC) {
+ execute(TC_GEONW_PON_TSB_BV_01());
+ }
+
+ if(PICS_GN_TSB_FWD) {
+ execute(TC_GEONW_PON_TSB_BV_02());
+ execute(TC_GEONW_PON_TSB_BV_03());
+ execute(TC_GEONW_PON_TSB_BO_04());
+ execute(TC_GEONW_PON_TSB_BO_07());
+ }
+
+ if(PICS_GN_TSB_DST) {
+ execute(TC_GEONW_PON_TSB_BV_05());
+ execute(TC_GEONW_PON_TSB_BO_08());
+ }
+ }
+
+ /* PON/SHB */
+ if(PICS_GN_SHB) {
+
+ if(PICS_GN_SHB_SRC) {
+ execute(TC_GEONW_PON_SHB_BV_01());
+ }
+
+ if(PICS_GN_SHB_DST) {
+ execute(TC_GEONW_PON_SHB_BV_05());
+ }
+ }
+
+ /* PON/GAC */
+ if(PICS_GN_GAC) {
+
+ if(PICS_GN_GAC_FWD) {
+ execute(TC_GEONW_PON_GAC_NONAREA_ALL_BV_03());
+ execute(TC_GEONW_PON_GAC_NONAREA_ALL_BO_04());
+ execute(TC_GEONW_PON_GAC_NONAREA_ALL_BV_06());
+ execute(TC_GEONW_PON_GAC_NONAREA_ALL_BO_09());
+ execute(TC_GEONW_PON_GAC_NONAREA_ALL_BV_10());
+ }
+
+ if((PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_greedy) or (PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_unspecified)) {
+
+ if(PICS_GN_GAC_SRC) {
+ execute(TC_GEONW_PON_GAC_NONAREA_GRD_BV_01());
+ }
+
+ if(PICS_GN_GAC_FWD) {
+ execute(TC_GEONW_PON_GAC_NONAREA_GRD_BV_02());
+ execute(TC_GEONW_PON_GAC_NONAREA_GRD_BO_07());
+ }
+ }
+
+ if(PICS_GN_NON_AREA_FORWARDING_ALGORITHM == e_cbf) {
+
+ if(PICS_GN_GAC_SRC) {
+ execute(TC_GEONW_PON_GAC_NONAREA_CBF_BV_01());
+ }
+
+ if(PICS_GN_GAC_FWD) {
+ execute(TC_GEONW_PON_GAC_NONAREA_CBF_BV_02());
+ execute(TC_GEONW_PON_GAC_NONAREA_CBF_BV_07());
+ execute(TC_GEONW_PON_GAC_NONAREA_CBF_BV_20());
+ execute(TC_GEONW_PON_GAC_NONAREA_CBF_BV_21());
+ execute(TC_GEONW_PON_GAC_NONAREA_CBF_BV_22());
+ }
+ }
+
+ if(PICS_GN_GAC_SRC) {
+ execute(TC_GEONW_PON_GAC_AREA_ALL_BV_01());
+ }
+
+ if(PICS_GN_GAC_FWD) {
+ execute(TC_GEONW_PON_GAC_AREA_ALL_BV_02());
+ }
+
+ if(PICS_GN_GAC_DST) {
+ execute(TC_GEONW_PON_GAC_AREA_ALL_BV_05());
+ execute(TC_GEONW_PON_GAC_AREA_ALL_BO_08());
+ }
+ }
+
+ /* CAP */
+
+ if(PICS_GN_LS_REQ_SRC) {
+ execute(TC_GEONW_CAP_LOS_BV_01());
+ }
+
+ if(PICS_GN_GUC_FWD) {
+ execute(TC_GEONW_CAP_FPB_BV_01());
+ }
+
+ if(PICS_GN_GBC_FWD) {
+ execute(TC_GEONW_CAP_FPB_BV_02());
+ }
+
+ }
+
+} // End of module ItsGeoNetworking_TestControl
diff --git a/ItsGeoNetworking_TpFunctions.ttcn b/ItsGeoNetworking_TpFunctions.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..a7081c32cf6a396631a05abeeb984d6d77494594
--- /dev/null
+++ b/ItsGeoNetworking_TpFunctions.ttcn
@@ -0,0 +1,17237 @@
+/**
+ * @author ETSI / STF405 / STF449 / STF484 / STF525
+ * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsGeoNetworking/ItsGeoNetworking_TpFunctions.ttcn $
+ * $Id: ItsGeoNetworking_TpFunctions.ttcn,v 1.5 2019/08/05 15:18:56 dte Exp $
+ * @desc GeoNetworking TP Functions
+ * @copyright ETSI Copyright Notification
+ * No part may be reproduced except as authorized by written permission.
+ * The copyright and the foregoing restriction extend to reproduction in all media.
+ * All rights reserved.
+ *
+ */
+module ItsGeoNetworking_TpFunctions {
+
+ // Libcommon
+ import from LibCommon_BasicTypesAndValues all;
+ import from LibCommon_DataStrings all;
+ import from LibCommon_Time all;
+ import from LibCommon_VerdictControl all;
+ import from LibCommon_Sync all;
+
+ // LibHelpers
+ import from LibHelpers_Functions all;
+
+ // LibItsCommon
+ import from LibItsCommon_Functions all;
+
+ // LibItsGeoNetworking
+ import from LibItsGeoNetworking_TestSystem all;
+ import from LibItsGeoNetworking_Functions all;
+ import from LibItsGeoNetworking_Templates all;
+ import from LibItsGeoNetworking_TypesAndValues all;
+ import from LibItsGeoNetworking_Pics all;
+ import from LibItsGeoNetworking_Pixits all;
+
+ // 6.2.1
+ group geoFormatingAndDataValidity {
+
+ // 6.2.1.1
+ group geoFdvBasicHeader {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_BAH_BV_01
+ */
+ function f_GEONW_FDV_BAH_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+
+ // Test control
+ if (not PICS_GN_BASIC_HEADER) {
+ log("*** " & testcasename() & ": PICS_GN_BASIC_HEADER required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if(not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1)))) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(?, ?), -, f_getDefaultHopLimit()))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Basic Header correctly formatted ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_BAH_BV_01
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_BAH_BI_02
+ */
+ function f_GEONW_FDV_BAH_BI_02() runs on ItsGeoNetworking {
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var template (value) GeoNetworkingPdu v_gnPacket;
+
+ // Test control
+ if (not PICS_GN_BASIC_HEADER) {
+ log("*** " & testcasename() & ": PICS_GN_BASIC_HEADER required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorNodeB := f_getPosition(c_compNodeB);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ 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);
+
+ if(0 < lengthof(vc_utInds)) {
+ log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
+ //flush received upper indications
+ vc_utInds := {};
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+ }
+ else {
+ log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_error);
+ }
+
+ // Test Body
+ v_gnPacket.basicHeader.version := valueof(v_gnPacket.basicHeader.version) + 1;
+
+ f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
+
+ f_sleep(PX_TAC);
+
+ if(0 != lengthof(vc_utInds)) {
+ log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ else {
+ log("*** " & testcasename() & ": PASS: GN was discarded and not transmitted to upper layer ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_BAH_BI_02
+
+ } // end geoFdvBasicHeader
+
+ // 6.2.1.2
+ group geoFdvCommonHeader {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_COH_BV_01
+ */
+ function f_GEONW_FDV_COH_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_COMMON_HEADER) {
+ log("*** " & testcasename() & ": PICS_GN_COMMON_HEADER required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(?)))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Common Header correclty formatted ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ f_acTriggerEvent(m_stopPassBeaconing);
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_COH_BV_01
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_COH_BV_02
+ */
+ function f_GEONW_FDV_COH_BV_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var GeoNetworkingInd v_geoNwInd;
+ var octetstring v_payload := char2oct("PAYLOAD");
+
+ // Test control
+ if (not PICS_GN_COMMON_HEADER) {
+ log("*** " & testcasename() & ": PICS_GN_COMMON_HEADER required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ if ( not f_utTriggerEvent(m_generateShbMessageWithPayload(v_payload)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_ac.start;
+ alt {
+ [] 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_payload)) {
+ log("*** " & testcasename() & ": PASS: PL field correctly indicates payload size ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ else {
+ log("*** " & testcasename() & ": FAIL: PL does correctly not indicate payload size ("
+ & int2str(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength)
+ & " != "
+ & int2str(lengthof(v_payload))
+ & ")***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ }
+ else {
+ if(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength == 0) {
+ log("*** " & testcasename() & ": PASS: PL field correctly indicates empty payload ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ else {
+ log("*** " & testcasename() & ": FAIL: PL does not indicate empty payload ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ }
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_COH_BV_02
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_COH_BV_03
+ */
+ function f_GEONW_FDV_COH_BV_03(
+ in template (present) UInt8 p_hopLimit := f_getDefaultHopLimit(),
+ in template (present) Bit8 p_flags := f_isMobile()
+ ) runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_COMMON_HEADER) {
+ log("*** " & testcasename() & ": PICS_GN_COMMON_HEADER required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if(not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1)))) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithHlAndFlags(mw_longPosVectorPosition(v_longPosVectorIut), ?, p_hopLimit, p_flags)))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Correct GeoNetworking Common Header received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] a_receiveGeoBroadcast(mw_longPosVectorPosition(v_longPosVectorIut), ?) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: Incorrect GeoNetworking Common Header received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_COH_BV_03
+
+ group GEONW_FDV_COH_BO_04 {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_COH_BO_04
+ */
+ function f_GEONW_FDV_COH_BO_04() runs on ItsMtc {
+
+ // Local variables
+ var ItsGeoNetworking v_nodeB;
+ var ItsGeoNetworking v_nodeD;
+
+ // Test control
+ if (not PICS_GN_COMMON_HEADER) {
+ log("*** " & testcasename() & ": PICS_GN_COMMON_HEADER required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf02Up();
+
+ // Preamble
+
+ // Start components
+ v_nodeB := f_getComponent(c_compNodeB);
+ v_nodeD := f_getComponent(c_compNodeD);
+ v_nodeB.start(f_GEONW_FDV_COH_BO_04_nodeB());
+ v_nodeD.start(f_GEONW_FDV_COH_BO_04_nodeD());
+
+ // Synchronization
+ f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
+
+ // Cleanup
+ f_cf02Down();
+
+ } // End of function f_GEONW_FDV_COH_BV_04
+
+ /**
+ * @desc Behavior function for NodeB (TC_GEONW_FDV_COH_BV_04)
+ */
+ function f_GEONW_FDV_COH_BO_04_nodeB() runs on ItsGeoNetworking {
+
+ // 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
+ v_gnPacket := m_geoNwPdu(
+ m_geoNwTsbPacket(
+ vc_localSeqNumber,
+ v_longPosVectorNodeB,
+ v_hopLimit-1
+ ),
+ -,
+ 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 {
+ [] geoNetworkingPort.receive(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwTsbPacket(
+ ?,
+ mw_longPosVectorPosition(v_longPosVectorNodeB)
+ )
+ )
+ )
+ ) {
+ tc_noac.stop;
+ log("*** " & testcasename() & ": FAIL: TSB packet was not discarded ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_noac.timeout {
+ log("*** " & testcasename() & ": PASS: TSB was correctly discarded ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+
+ } // End of function f_GEONW_FDV_COH_BO_04_nodeB
+
+ /**
+ * @desc Behavior function for NodeD (TC_GEONW_FDV_COH_BV_04)
+ */
+ function f_GEONW_FDV_COH_BO_04_nodeD() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_noac.start;
+ alt {
+ [] geoNetworkingPort.receive(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwTsbPacket(
+ ?,
+ mw_longPosVectorPosition(v_longPosVectorNodeB)
+ )
+ )
+ )
+ ) {
+ tc_noac.stop;
+ log("*** " & testcasename() & ": FAIL: TSB packet was not discarded ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_noac.timeout {
+ log("*** " & testcasename() & ": PASS: TSB was correctly discarded ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+
+ } // End of function f_GEONW_FDV_COH_BO_04_nodeD
+
+ } // end GEONW_FDV_COH_BO_04
+
+ } // end geoFdvCommonHeader
+
+ // 6.2.1.3
+ group geoFdvBeacon {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_BEA_BV_01
+ */
+ function f_GEONW_FDV_BEA_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_BEACON_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_BEACON_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(mw_longPosVectorPosition(v_longPosVectorIut), e_any)))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Common Header correclty formatted ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_BEA_BV_01
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_BEA_BV_02
+ */
+ function f_GEONW_FDV_BEA_BV_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_BEACON_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_BEACON_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(
+ mw_longPosVectorAny(f_getIutGnLocalAddress()))))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: GN address correctly received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_BEA_BV_02
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_BEA_BV_03
+ */
+ function f_GEONW_FDV_BEA_BV_03() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_BEACON_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_BEACON_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(mw_longPosVectorPosition(v_longPosVectorIut))))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Position equaling GN-MNGT primitive value received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_BEA_BV_03
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_BEA_BV_04
+ */
+ function f_GEONW_FDV_BEA_BV_04() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_BEACON_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_BEACON_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(mw_longPosVectorPosition(v_longPosVectorIut))))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Timestamp equaling GN-MNGT primitive value received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_BEA_BV_04
+
+ } // end geoFdvBeacon
+
+ // 6.2.1.4
+ group geoFdvGeoUnicast {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_GUC_BV_01
+ */
+ function f_GEONW_FDV_GUC_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_GUC_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_GUC_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+
+ // Test adapter configuration
+
+ // Preamble
+ v_longPosVectorNodeB := f_getPosition(c_compNodeB);
+ v_longPosVectorIut := f_getPosition(c_compIut);
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwUnicastPacketWithSourcePv(
+ mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeB)), // DEPV
+ ?, // sequence number
+ mw_longPosVectorPosition(v_longPosVectorIut) //SOPV
+ )
+ )
+ )
+ ) {
+ tc_ac.stop;
+
+ log("*** " & testcasename() & ": PASS: Fields of the received GUC message correctly set ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: GUC message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_GUC_BV_01
+
+ } // end geoFdvGeoUnicast
+
+ // 6.2.1.5
+ group geoFdvGeoBroadcast {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_GBC_BV_01
+ */
+ function f_GEONW_FDV_GBC_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_longPosVectorIut;
+ var octetstring v_payload := char2oct("PAYLOAD");
+
+ // Test control
+ if (not PICS_GN_GBC_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_GBC_SRC 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_generateGeoBroadcastMessageWithPayload(f_getArea(c_area1), v_payload)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(
+ f_receiveGeoNetMessageWithPayload(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwBroadcastPacket(
+ mw_longPosVectorPosition(v_longPosVectorIut), // SOPV
+ ? // sequence number
+ )
+ )
+ ),
+ ?
+ )
+ ) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Fields of the received GBC message correctly set ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": FAIL: GBC message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_GBC_BV_01
+
+ } // end geoFdvGeoBroadcast
+
+ // 6.2.1.6
+ group geoFdvGeoAnycast {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_GAC_BV_01
+ */
+ function f_GEONW_FDV_GAC_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+ var octetstring v_payload := char2oct("PAYLOAD");
+
+ // Test control
+ if (not PICS_GN_GAC_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_GAC_SRC 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_generateGeoAnycastMessageWithPayload(f_getArea(c_area1), v_payload)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(
+ f_receiveGeoNetMessageWithPayload(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwAnycastPacket(
+ mw_longPosVectorPosition(v_longPosVectorIut), // SOPV
+ ? // sequence number
+ )
+ )
+ ),
+ ?
+ )
+ ) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Fields of the received GAC message correctly set ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: GAC message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_GAC_BV_01
+
+ } // end geoFdvGeoAnycast
+
+ // 6.2.1.7
+ group geoFdvSingleHopBroadcast {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_SHB_BV_01
+ */
+ function f_GEONW_FDV_SHB_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_SHB_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_SHB_SRC 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_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
+ group geoFdvTopologicallyScopedBroadcast {
+
+ /**
+ * @desc TP Function for TC_GEONW_FDV_TSB_BV_01
+ */
+ function f_GEONW_FDV_TSB_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ 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;
+ }
+
+ // 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_generateTsbMessage) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwTsbPacket(
+ ?, // sequence number
+ mw_longPosVectorPosition(v_longPosVectorIut) // SOPV
+ )
+ )
+ )
+ ) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: message received with correct common and extended headers ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: TSB message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_FDV_TSB_BV_01
+
+ } // end geoFdvTopologicallyScopedBroadcast
+
+ } // end geoFormatingAndDataValidity
+
+ // 6.2.2
+ group geoProtocolOperation {
+
+ // 6.2.2.1
+ group geoLocationTable {
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_01
+ */
+ function f_GEONW_PON_LOT_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_GUC_SRC or not PICS_GN_BEACON_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GUC_SRC and PICS_GN_BEACON_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorNodeB := f_getPosition(c_compNodeB);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeB))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: GUC packet received correctly ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] a_receiveGeoUnicastWithDestination(?) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: GUC packet has some inconsistence ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] a_receiveAnyLsRequest() {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": TIMEOUT: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_LOT_BV_01
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_02
+ */
+ function f_GEONW_PON_LOT_BV_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeA;
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_longPosVectorIut;
+ var GN_Address v_gnAddressNodeA;
+ var boolean v_lsRequestReceived := false;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_SRC or not PICS_GN_LS_REP_DST) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_SRC AND PICS_GN_LS_REP_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorNodeA := f_getPosition(c_compNodeA);
+ v_gnAddressNodeA := v_longPosVectorNodeA.gnAddr;
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] a_receiveLsRequestAndReply(
+ ?, v_gnAddressNodeA.mid,
+ v_longPosVectorNodeA
+ ) {
+ v_lsRequestReceived := true;
+ log("*** " & testcasename() & ": Pre-conditions: Received and answered Location Service Request ***");
+ repeat;
+ }
+ [] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
+ tc_ac.stop;
+ if(v_lsRequestReceived == true) {
+ log("*** " & testcasename() & ": Pre-conditions: First GUC message received correctly ***");
+ }
+ else {
+ log("*** " & testcasename() & ": Pre-conditions: GUC packet received without LS Request ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_error);
+ }
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": Pre-conditions: Initial conditions not satisfied. ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ }
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] a_receiveLsRequest(?, v_gnAddressNodeA.mid, v_longPosVectorIut) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: Received second GUC packet without LS Request ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_LOT_BV_02
+
+ group GEONW_PON_LOT_BV_03 {
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_01
+ */
+ function f_GEONW_PON_LOT_BV_03_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeB);
+
+ // Test control
+ if (not PICS_GN_BEACON_DST) {
+ log("*** " & testcasename() & ": PICS_GN_BEACON_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwBeaconPacket(
+ v_longPosVectorNode
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_01
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_02
+ */
+ function f_GEONW_PON_LOT_BV_03_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeA);
+
+ // Test control
+ if (not PICS_GN_GUC_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GUC_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwUnicastPacket(
+ v_longPosVectorNode,
+ f_getIutShortPosVector(),
+ vc_localSeqNumber
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_02
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_03
+ */
+ function f_GEONW_PON_LOT_BV_03_03() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeA);
+
+ // Test control
+ if (not PICS_GN_GAC_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GAC_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwAnycastPacket(
+ v_longPosVectorNode,
+ vc_localSeqNumber,
+ f_getGeoAnycastArea(c_area1)
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_03
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_04
+ */
+ function f_GEONW_PON_LOT_BV_03_04() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeA);
+
+ // Test control
+ if (not PICS_GN_GBC_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GBC_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwBroadcastPacket(
+ v_longPosVectorNode,
+ vc_localSeqNumber,
+ f_getGeoBroadcastArea(c_area1)
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_04
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_05
+ */
+ function f_GEONW_PON_LOT_BV_03_05() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeA);
+
+ // Test control
+ if (not PICS_GN_TSB_DST) {
+ log("*** " & testcasename() & ": PICS_GN_TSB_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwTsbPacket(
+ vc_localSeqNumber,
+ v_longPosVectorNode
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_05
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_06
+ */
+ function f_GEONW_PON_LOT_BV_03_06() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeB);
+
+ // Test control
+ if (not PICS_GN_SHB_DST) {
+ log("*** " & testcasename() & ": PICS_GN_SHB_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwShbPacket(
+ v_longPosVectorNode,
+ m_mccMco
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_06
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_07
+ */
+ function f_GEONW_PON_LOT_BV_03_07() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeA);
+
+ // Test control
+ if (not PICS_GN_LS_REQ_DST) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ activate(a_receiveAnyLsReply());
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwLsRequestPacket(
+ v_longPosVectorNode,
+ vc_localSeqNumber,
+ f_getIutGnLocalAddress()
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_07
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_03_08
+ */
+ function f_GEONW_PON_LOT_BV_03_08() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode := f_TP_GEONW_PON_LOT_BV_03_pre_1(c_compNodeA);
+
+ // Test control
+ if (not PICS_GN_LS_REP_DST) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REP_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_03_pre_2(
+ m_geoNwLsReplyPacket(
+ v_longPosVectorNode,
+ f_getIutShortPosVector(),
+ vc_localSeqNumber
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_03_main(v_longPosVectorNode);
+
+ } // End of function f_GEONW_PON_LOT_BV_03_08
+
+ /**
+ * @desc Function including first preamble part (TC_GEONW_PON_LOT_BV_03)
+ */
+ function f_TP_GEONW_PON_LOT_BV_03_pre_1(in charstring p_nodeName) runs on ItsGeoNetworking return LongPosVector {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNode;
+
+ // Test control
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorNode := f_getPosition(p_nodeName);
+
+ // Test adapter configuration
+
+ // Preamble part I
+ if(p_nodeName == c_compNodeA) {
+ f_prNeighbour();
+ }
+ else {
+ f_prNonNeighbour();
+ }
+
+ return v_longPosVectorNode;
+ } // End of function f_TP_GEONW_PON_LOT_BV_03_pre_1
+
+ /**
+ * @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(v_gnPacket))
+ );
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+ } // End of function f_TP_GEONW_PON_LOT_BV_03_pre_2
+
+ /**
+ * @desc Function including test body and postamble part (TC_GEONW_PON_LOT_BV_03)
+ */
+ function f_TP_GEONW_PON_LOT_BV_03_main(in template (value) LongPosVector p_longPosVectorNode) runs on ItsGeoNetworking {
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(valueof(p_longPosVectorNode.gnAddr))) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] a_receiveAnyLsRequest() {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_longPosVectorNode)))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: GUC packet received correctly ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_TP_GEONW_PON_LOT_BV_03_main
+
+ } //end GEONW_PON_LOT_BV_03
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_04
+ */
+ function f_GEONW_PON_LOT_BV_04() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorNodeB := f_getPosition(c_compNodeB);
+
+ // Preamble
+ f_prDefault(); // NodeB will send Beacon only once
+ f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(m_geoNwBeaconPacket(v_longPosVectorNodeB), -, c_hopLimit1))));
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ f_sleep(f_getLifetimeLocTableEntry() + PX_T_DELTA);
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] a_receiveLsRequest(?, v_longPosVectorNodeB.gnAddr.mid, v_longPosVectorIut ) {
+ log("*** " & testcasename() & ": PASS: LS Request received correctly ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: LS Request not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poDefault();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_LOT_BV_04
+
+ group GEONW_PON_LOT_BV_05 {
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_01
+ */
+ function f_GEONW_PON_LOT_BV_05_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_GUC_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GUC_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwUnicastPacket(
+ v_obsoleteLongPosVectorNodeB,
+ f_getIutShortPosVector(),
+ vc_localSeqNumber
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_01
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_02
+ */
+ function f_GEONW_PON_LOT_BV_05_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_GAC_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GAC_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwAnycastPacket(
+ v_obsoleteLongPosVectorNodeB,
+ vc_localSeqNumber,
+ f_getGeoAnycastArea(c_area1)
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_02
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_03
+ */
+ function f_GEONW_PON_LOT_BV_05_03() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_GBC_DST) {
+ log("*** " & testcasename() & ": PICS_GN_GBC_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwBroadcastPacket(
+ v_obsoleteLongPosVectorNodeB,
+ vc_localSeqNumber,
+ f_getGeoBroadcastArea(c_area1)
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_03
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_04
+ */
+ function f_GEONW_PON_LOT_BV_05_04() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+ var template (value) GeoNetworkingPdu v_gnPacket;
+
+ // Test control
+ if (not PICS_GN_TSB_DST) {
+ log("*** " & testcasename() & ": PICS_GN_TSB_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwTsbPacket(
+ vc_localSeqNumber,
+ v_obsoleteLongPosVectorNodeB
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_04
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_05
+ */
+ function f_GEONW_PON_LOT_BV_05_05() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_SHB_DST) {
+ log("*** " & testcasename() & ": PICS_GN_SHB_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwShbPacket(
+ v_obsoleteLongPosVectorNodeB,
+ m_mccMco
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_05
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_06
+ */
+ function f_GEONW_PON_LOT_BV_05_06() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_DST) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ activate(a_receiveAnyLsReply());
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwLsRequestPacket(
+ v_obsoleteLongPosVectorNodeB,
+ vc_localSeqNumber,
+ f_getIutGnLocalAddress()
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_06
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOT_BV_05_07
+ */
+ function f_GEONW_PON_LOT_BV_05_07() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeB;
+ var LongPosVector v_obsoleteLongPosVectorNodeB;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_DST) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_1(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ f_TP_GEONW_PON_LOT_BV_05_pre_2(
+ m_geoNwLsReplyPacket(
+ v_obsoleteLongPosVectorNodeB,
+ f_getIutShortPosVector(),
+ vc_localSeqNumber
+ )
+ );
+
+ f_TP_GEONW_PON_LOT_BV_05_main(v_longPosVectorNodeB, v_obsoleteLongPosVectorNodeB);
+
+ } // End of function f_GEONW_PON_LOT_BV_05_07
+
+ /**
+ * @desc Function including first preamble part (TC_GEONW_PON_LOT_BV_05)
+ */
+ function f_TP_GEONW_PON_LOT_BV_05_pre_1(out LongPosVector p_longPosVectorNodeB, out LongPosVector p_obsoleteLongPosVectorNodeB) runs on ItsGeoNetworking {
+
+ // Local variables
+
+ // Test control
+
+ // Test component configuration
+ f_cf01Up();
+ p_longPosVectorNodeB := f_getPosition(c_compNodeB);
+ p_obsoleteLongPosVectorNodeB := p_longPosVectorNodeB;
+ p_obsoleteLongPosVectorNodeB.timestamp_ := p_obsoleteLongPosVectorNodeB.timestamp_ - 1000;
+ p_obsoleteLongPosVectorNodeB.latitude := p_obsoleteLongPosVectorNodeB.latitude - (PX_POS_DELTA * 3);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prDefault();
+
+ // Act as a neighbor and send one beacon
+ f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(m_geoNwBeaconPacket(p_longPosVectorNodeB), -, c_hopLimit1))));
+ } // End of function f_TP_GEONW_PON_LOT_BV_05_pre_1
+
+ /**
+ * @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)))
+ );
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+ } // End of function f_TP_GEONW_PON_LOT_BV_05_pre_2
+
+ /**
+ * @desc Function including test body and postamble part (TC_GEONW_PON_LOT_BV_05)
+ */
+ function f_TP_GEONW_PON_LOT_BV_05_main(in template (value) LongPosVector p_longPosVectorNodeB, in template (value) LongPosVector p_obsoleteLongPosVectorNodeB) runs on ItsGeoNetworking {
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(valueof(p_longPosVectorNodeB.gnAddr)))) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] a_receiveAnyLsRequest() {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_obsoleteLongPosVectorNodeB)))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: GN packet received with obsolete Destination Position Vector ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_longPosVectorNodeB)))) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: GN packet packet received correctly ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poDefault();
+ f_cf01Down();
+
+ } // End of function f_TP_GEONW_PON_LOT_BV_05_main
+
+ } // end group GEONW_PON_LOT_BV_05
+
+ } // end geoLocationTable
+
+ // 6.2.2.2
+ group geoLocalPositionVector {
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LPV_BV_01
+ */
+ function f_GEONW_PON_LPV_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+ var template LongPosVector v_previouslongPosVectorIut;
+ var GeoNetworkingInd v_geoNwInd;
+
+ // Test control
+ if (not PICS_GN_BEACON_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_BEACON_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();//FIXME ac change position, not used by C2C
+ v_longPosVectorIut := f_getPosition(c_compIut);
+ v_previouslongPosVectorIut := v_longPosVectorIut;
+ v_previouslongPosVectorIut.timestamp_ := ?;
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(
+ mw_geoNwBeaconPacket(
+ mw_longPosVectorAny(v_longPosVectorIut.gnAddr)
+ )
+ ))) -> value v_geoNwInd {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": Pre-conditions: Beacon received ***");
+ v_longPosVectorIut := v_geoNwInd.msgIn.gnPacket.packet.extendedHeader.beaconHeader.srcPosVector;
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ }
+ f_utChangePosition();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ geoNetworkingPort.clear;
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(
+ mw_geoNwBeaconPacket(
+ mw_longPosVectorAny(v_longPosVectorIut.gnAddr)
+ )
+ ))) -> value v_geoNwInd {
+ tc_ac.stop;
+ //check if the position vector has changed
+ if (match(v_geoNwInd.msgIn.gnPacket.packet.extendedHeader.beaconHeader.srcPosVector, v_previouslongPosVectorIut)) {
+ log("*** " & testcasename() & ": FAIL: Sender Postion Vector not correctly updated ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ else {
+ log("*** " & testcasename() & ": PASS: Sender Postion Vector correctly updated ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+ f_acTriggerEvent(m_stopPassBeaconing);
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_LPV_BV_01
+
+ } // end geoLocalPositionVector
+
+ // 6.2.2.3
+ group geoSequenceNumber {
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_SQN_BV_01
+ */
+ function f_GEONW_PON_SQN_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var UInt16 v_expectedSequenceNumber := 0;
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_GBC_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_GBC_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if (not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1))) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] a_receiveGeoBroadcast(
+ mw_longPosVectorPosition(v_longPosVectorIut),
+ v_expectedSequenceNumber) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: GBC packet received correctly ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] a_receiveGeoBroadcast(
+ mw_longPosVectorPosition(v_longPosVectorIut),
+ ?) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: GBC packet received with incorrect sequence number ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_SQN_BV_01
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_SQN_BV_02
+ */
+ function f_GEONW_PON_SQN_BV_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var UInt16 v_expectedSequenceNumber := 0;
+ var integer v_nbReceivedPackets := 0;
+ var GeoNetworkingInd v_geoNwInd;
+ var LongPosVector v_longPosVectorIut;
+
+ // Test control
+ if (not PICS_GN_GBC_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_GBC_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorIut := f_getPosition(c_compIut);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_sleep(10.0);
+ // receive first packet
+ if (not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1)))) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] geoNetworkingPort.receive(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwBroadcastPacket(
+ mw_longPosVectorPosition(v_longPosVectorIut),
+ ?
+ )))) -> value v_geoNwInd {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": Pre-conditions: First GUC packet received ***");
+ v_expectedSequenceNumber := v_geoNwInd.msgIn.gnPacket.packet.extendedHeader.geoBroadcastHeader.seqNumber + 1;
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ }
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if (not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1)))) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] a_receiveGeoBroadcast(
+ mw_longPosVectorPosition(v_longPosVectorIut),
+ v_expectedSequenceNumber) {
+ tc_ac.stop;
+ v_nbReceivedPackets := v_nbReceivedPackets + 1;
+ if(v_nbReceivedPackets >= vc_multipleMessagesCount) {
+ log("*** " & testcasename() & ": PASS: GBC packets received with correct sequence numbers ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ else {
+ v_expectedSequenceNumber := v_expectedSequenceNumber + 1;
+ if (not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1)))) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ tc_ac.start;
+ repeat;
+ }
+ }
+ [] a_receiveGeoBroadcast(
+ mw_longPosVectorPosition(v_longPosVectorIut),
+ ?) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: GBC packet received with incorrect sequence number ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_SQN_BV_02
+
+ } // end geoSequenceNumber
+
+ // 6.2.2.4
+ group geoLocationService {
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOS_BV_01
+ */
+ function f_GEONW_PON_LOS_BV_01() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+ var GN_Address v_gnAddressNodeA;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_gnAddressNodeA := f_getPosition(c_compNodeA).gnAddr;
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_gnAddressNodeA)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ tc_ac.start;
+ alt {
+ [] a_receiveLsRequest(
+ ?,
+ v_gnAddressNodeA.mid,
+ v_longPosVectorIut
+ ) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": PASS: LS Request received correctly ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ [] a_receiveAnyLsRequest() {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": FAIL: LS Request does not contain GN Address of nodeA ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": INCONC: Expected message not received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_LOS_BV_01
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOS_BV_02
+ */
+ function f_GEONW_PON_LOS_BV_02() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorIut;
+ var GN_Address v_gnAddressNodeA;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_SRC) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_SRC required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_gnAddressNodeA := f_getPosition(c_compNodeA).gnAddr;
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_gnAddressNodeA)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] a_receiveLsRequest(?, v_gnAddressNodeA.mid, v_longPosVectorIut) {
+ tc_ac.stop;
+ //start retransmission timer
+ tc_ac.start(f_getLsRetransmitTimer() - f_getDeltaTimer());
+ }
+ }
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_gnAddressNodeA)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
+ }
+
+ alt {
+ [] a_receiveLsRequest(?, v_gnAddressNodeA.mid, v_longPosVectorIut) {
+ tc_ac.stop;
+ log("*** " & testcasename() & ": Second LS_REQUEST received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
+ }
+ [] tc_ac.timeout {
+ log("*** " & testcasename() & ": No second LS_REQUEST received ***");
+ f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
+ }
+ }
+
+ // Postamble
+ f_poNeighbour();
+ f_cf01Down();
+
+ } // End of function f_GEONW_PON_LOS_BV_02
+
+ /**
+ * @desc TP Function for TC_GEONW_PON_LOS_BV_03
+ */
+ function f_GEONW_PON_LOS_BV_03() runs on ItsGeoNetworking {
+
+ // Local variables
+ var LongPosVector v_longPosVectorNodeA;
+ var LongPosVector v_longPosVectorIut;
+ var GeoNetworkingInd v_geoNetInd;
+
+ // Test control
+ if (not PICS_GN_LS_REQ_SRC or not PICS_GN_LS_REP_DST) {
+ log("*** " & testcasename() & ": PICS_GN_LS_REQ_SRC AND PICS_GN_LS_REP_DST required for executing the TC ***");
+ setverdict(inconc);
+ stop;
+ }
+
+ // Test component configuration
+ f_cf01Up();
+ v_longPosVectorNodeA := f_getPosition(c_compNodeA);
+
+ // Test adapter configuration
+
+ // Preamble
+ f_prNeighbour();
+ if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
+ log("*** " & testcasename() & ": INCONC: Trigger failed ***");
+ f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
+ }
+ tc_ac.start;
+ alt {
+ [] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
+ tc_ac.stop;
+ }
+ }
+ f_selfOrClientSyncAndVerdict(c_prDone, e_success);
+
+ // Test Body
+ f_sendGeoNetMessage(
+ valueof(m_geoNwReq_linkLayerBroadcast(
+ m_geoNwPdu(
+ m_geoNwLsReplyPacket(
+ v_longPosVectorNodeA,
+ f_longPosVector2ShortPosVector(v_longPosVectorIut),
+ vc_localSeqNumber
+ )
+ )
+ )
+ ));
+
+ tc_ac.start;
+ alt {
+
+ [] geoNetworkingPort.receive(
+ mw_geoNwInd(
+ mw_geoNwPdu(
+ mw_geoNwUnicastPacket(
+ mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA)),
+ ?
+ )
+ )
+ )
+ ) -> value v_geoNetInd {
+ tc_ac.stop;
+ //we only check that the lifetime is less than the default lifetime due to
+ //we do not know exactly the time passed at IUT
+ if (f_getLifetimeValue(v_geoNetInd.msgIn.basicHeader.lifeTime)+ * 0 1 2 3 + * 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | V | NH | Reserved | LT | RHL | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + *+ * + * @see ETSI EN 302 636-4-1 Clause 8.6.1 + * + * @member version + * @member nextHeader + * @member reserved + * @member lifeTime + * @member routerHopLimit + */ + type record BasicHeader { + UInt4 version, + BasicNextHeader nextHeader, + UInt8 reserved, + Lifetime lifeTime, + UInt8 routerHopLimit + } with { + variant "FIELDORDER(msb)" + } + + type enumerated BasicNextHeader { + e_any(0), + e_commonHeader(1), + e_securedPacket(2), + e_reserved + } with { + variant "FIELDLENGTH(4)" + } + + /** + * @desc Indicates the maximum tolerable time a packet can be buffered until it reaches its destination. + * @member multiplier + * @member ltBase + */ + type record Lifetime { + UInt6 multiplier, + LtBase ltBase + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc The base for the calculation of the lifetime. + */ + type enumerated LtBase { + e_50ms(0), + e_1s(1), + e_10s(2), + e_100s(3) + } with { + variant "FIELDLENGTH(2)" + } + + } // end group geoNetworkingBasicHeader + + group geoNetworkingCommonHeader { + + /** + * @desc Common header for GeoNetworking + * + *
+ * 0 1 2 3 + * 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | NH | R | HT | HST | TC | Flags | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | PL | MHL | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + *+ * + * @see ETSI EN 302 636-4-1 Clause 8.7.2 + * @see ETSI TS 103-836-4-1 Clause 9.7.1 + * + * @member nextHeader + * @member reserved + * @member headerTST Header type + Header Sub Type + * @member trafficClass + * @member flags + * @member plLength + * @member maxHopLimit + * @member reserved2 + */ + type record CommonHeader { + NextHeader nextHeader, + UInt4 reserved, + HeaderTST headerTST, + TrafficClass trafficClass, + Bit8 flags, + UInt16 plLength, // The Codec shall set the length of the paylaod if present + UInt8 maxHopLimit, + UInt8 reserved2 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the type of header immediately following the Common Header (4Bits). + */ + type enumerated NextHeader { + e_any(0), + e_btpA(1), + e_btpB(2), + e_ipv6(3), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc TrafficClass + * + *
+ * 0 1 2 3 4 5 6 7 + * +---+---+---+---+---+---+---+---+ + * |SCF|Res| TC ID | + * +---+---+---+---+---+---+---+---+ + *+ * + * @see ETSI EN 302 636-4-1 Clause 8.7.5 + * @see ETSI TS 103-836-4-1 Clause 9.7.5 + * + * @member scf + * @member channelOffload + * @member tcId + */ + type record TrafficClass { + SCF scf, + Reserved reserved, + TcId tcId + } with { + variant "FIELDORDER(msb)" + } + + type enumerated SCF { + e_scfDisabled(0), + e_scfEnabled (1) + } with { + variant "FIELDLENGTH(1)" //variant "1 bit" + } + type enumerated Reserved { + e_reserved(0) + } with { + variant "FIELDLENGTH(1)" //variant "1 bit" + } + type UInt6 TcId; + + } // end group geoNetworkingCommonHeader + + group geoNetworkingExtendedHeaders { + + /** + * @desc GeoNetworking ExtendedHeader + * + * @see ETSI EN 302 636-4-1 Clause 8.3 + * @see ETSI TS 103-836-4-1 Clause 9.8 + * + * @member commonHeader + * @member gnExtHeader + */ + type union ExtendedHeader { + GeoUnicastHeader geoUnicastHeader, + TSBHeader tsbHeader, + SHBHeader shbHeader, + GeoBroadcastHeader geoBroadcastHeader, + GeoAnycastHeader geoAnycastHeader, + BeaconHeader beaconHeader, + LSRequestHeader lsRequestHeader, + LSReplyHeader lsReplyHeader, + AnyHeader anyHeader + } with { + variant "" + } + + /** + * @desc The unspecified ANY header. + * + * @member seqNumber + * @member reserved + */ + type record AnyHeader { + UInt16 seqNumber, + UInt16 reserved + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc The BEACON packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.6 + * @see ETSI TS 103-836-4-1 Clause 9.8.6 + * + * @member commonHeader + */ + type record BeaconHeader { + LongPosVector srcPosVector + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc The GEOANYCAST packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.5 + * @see ETSI TS 103-836-4-1 Clause 9.8.5 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member geoAreaPosLatitude + * @member geoAreaPosLongitude + * @member distanceA + * @member distanceB + * @member angle + * @member reserved + */ + type record GeoAnycastHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + Int32 geoAreaPosLatitude, + Int32 geoAreaPosLongitude, + UInt16 distanceA, + UInt16 distanceB, + UInt16 angle, + UInt16 reserved2 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc The GEOBROADCAST packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.5 + * @see ETSI TS 103-836-4-1 Clause 9.8.5 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member geoAreaPosLatitude + * @member geoAreaPosLongitude + * @member distanceA + * @member distanceB + * @member angle + * @member reserved + */ + type GeoAnycastHeader GeoBroadcastHeader; + + /** + * @desc The GEOUNICAST packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.2 + * @see ETSI TS 103-836-4-1 Clause 9.8.2 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member dstPosVector + */ + type record GeoUnicastHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + ShortPosVector dstPosVector + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc The Location Service (LS) Reply packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.8 + * @see ETSI TS 103-836-4-1 Clause 9.8.8 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member dstPosVector + */ + type record LSReplyHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + ShortPosVector dstPosVector + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc The Location Service (LS) Request packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.7 + * @see ETSI TS 103-836-4-1 Clause 9.8.7 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member gnAddress + */ + type record LSRequestHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + GN_Address gnAddress + } with { + variant "FIELDORDER(msb)" + } + + /** + * The Single Hop Broadcast (SHB) packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.4 + * @see ETSI EN 302 636-4-2 Clause 6.3.3 Field settings in the Extended Header of the SHB packet + * + * @member srcPosVector + * @member reserved + */ + type record SHBHeader { + LongPosVector srcPosVector, + MediaDependantData mediaDependantData + } with { + variant "FIELDORDER(msb)" + } + + /** + * The Single Hop Broadcast (SHB) packet header. + * + * @see ETSI EN 302 636-4-2 Clause 6.3.3 Field settings in the Extended Header of the SHB packet + * + * @member cbr_l_0_hop Current CBR_L_0_Hop encoded as floor(CBR_L_0_Hop x 255) + * @member cbr_l_1_hop Current CBR_L_1_Hop encoded as floor(CBR_L_1_Hop x 255) + * @member eirp Transmit power of the current packet, E.I.R.P. [0 dBm to 31 dBm, unit 1 dBm, values higher than 31 dBm shall be set to 31 dBm] + * @member reserved Bit 5 to Bit 7: Reserved for future use + * @member reserved1 Reserved for MCO + */ + type record MccMco { + Oct1 cbr_l_0_hop, + Oct1 cbr_l_1_hop, + Bit4 eirp, + Bit4 reserved, + Oct1 reserved1 + } with { + variant "FIELDORDER(msb)" + } + + type record TimeSynchronization { + Bit4 version, + Bit24 compacTimeSynchronization, + Bit4 mediaDependentData + } with { + variant "FIELDORDER(msb)" + } + + type union MediaDependantData { + MccMco mccMco, // ITS G5 + TimeSynchronization timeSynchronization // C-V2X-GNSS + } + + /** + * @desc The Topologically-Scoped Broadcast (TSB) packet header. + * + * @see ETSI EN 302 636-4-1 Clause 8.8.3 + * @see ETSI TS 103-836-4-1 Clause 9.8.3 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + */ + type record TSBHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector + } with { + variant "FIELDORDER(msb)" + } + + group geoNetworkingHeadersSubtypes { + + /** + * @desc Identifies the header type and the header subtype for ANY. + * @member headerType + * @member reserved + */ + type record AnyHeaderType { + HeaderType headerType(e_any), + UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header type and the header subtype for BEACON. + * @member headerType + * @member reserved + */ + type record BeaconHeaderType { + HeaderType headerType(e_beacon), + UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header type and the header subtype for GEOANYCAST. + * @member headerType + * @member reserved + */ + type record GeoAnycastHeaderType { + HeaderType headerType(e_geoAnycast), + HeaderSubTypeGeoAnycast headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header type and the header subtype for GEOBROADCAST. + * @member headerType + * @member reserved + */ + type record GeoBroadcastHeaderType { + HeaderType headerType(e_geoBroadcast), + HeaderSubTypeGeoBroadcast headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header type and the header subtype for GEOUNICAST. + * @member headerType + * @member reserved + */ + type record GeoUnicastHeaderType { + HeaderType headerType(e_geoUnicast), + UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header type and the header subtype for Location Service LS. + * @member headerType + * @member reserved + */ + type record LsHeaderType { + HeaderType headerType(e_locationService), + HeaderSubTypeLs headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header type and the header subtype for Topologically-Scoped Broadcast TSB. + * @member headerType + * @member headerSubType + */ + type record TsbHeaderType { + HeaderType headerType(e_topologicallyScopedBroadcast), + HeaderSubTypeTSB headerSubType + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the header subtype for GEOANYCAST. + */ + type enumerated HeaderSubTypeGeoAnycast { + e_geoAnycastCircle(0), + e_geoAnycastRect(1), + e_geoAnycastElip(2), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc Identifies the header subtype for GEOBROADCAST. + */ + type enumerated HeaderSubTypeGeoBroadcast { + e_geoBroadcastCircle(0), + e_geoBroadcastRect(1), + e_geoBroadcastElip(2), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc Identifies the header subtype for Topologically-scoped broadcast TSB. + */ + type enumerated HeaderSubTypeTSB { + e_singleHop(0), + e_multiHop(1), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc Identifies the header subtype for Location Service LS. + */ + type enumerated HeaderSubTypeLs { + e_lsRequest(0), + e_lsReply(1), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc Identifies the header subtype for Service Announcement SA. + */ + type enumerated HeaderSubTypeSa { + e_sa(0), + e_saEos(1), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc Identifies the header type and the header subtype. + * @member anyHdr + * @member beaconHdr + * @member geoUnicastHdr + * @member geoAnycastHdr + * @member geoBroadcastHdr + * @member tsbHdr + * @member lsHdr + * @member saHdr + * @member reserved + */ + type union HeaderTST { + AnyHeaderType anyHdr, + BeaconHeaderType beaconHdr, + GeoUnicastHeaderType geoUnicastHdr, + GeoAnycastHeaderType geoAnycastHdr, + GeoBroadcastHeaderType geoBroadcastHdr, + TsbHeaderType tsbHdr, + LsHeaderType lsHdr, + UInt8 reserved + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Identifies the type of the GeoAdhoc header type (4Bits). + */ + type enumerated HeaderType { + e_any(0), + e_beacon(1), + e_geoUnicast(2), + e_geoAnycast(3), + e_geoBroadcast(4), + e_topologicallyScopedBroadcast(5), + e_locationService(6), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } + + /** + * @desc Long Position Vector + * + *
+ * 0 1 2 3 + * 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | GN_ADDR | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | TST | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Lat | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Long | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |P| S | H | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + *+ * + * @see ETSI EN 302 636-4-1 Clause 8.5.2 + * @see ETSI TS 103-836-4-1 Clause 9.5.2 + * + * @member gnAddr + * @member timestamp_ + * @member latitude + * @member longitude + * @member pai Position Accuracy Indicator + * @member speed + * @member heading + */ + type record LongPosVector { + GN_Address gnAddr, + UInt32 timestamp_, + Int32 latitude, + Int32 longitude, + Bit1 pai, + Int15 speed, + UInt16 heading + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Short Position Vector + * + *
+ * 0 1 2 3 + * 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | GN_ADDR | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | TST | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Lat | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Long | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + *+ * + * @see ETSI EN 302 636-4-1 Clause 8.5.3 + * @see ETSI TS 103-836-4-1 Clause 9.5.3 + * + * @member gnAddr + * @member timestamp + * @member latitude + * @member longitude + */ + type record ShortPosVector { + GN_Address gnAddr, + UInt32 timestamp_, + Int32 latitude, + Int32 longitude + } with { + variant "FIELDORDER(msb)" + } + + group geoNetworkingAddress { + /** + * @desc GeoNetworking address + * + *
+ * 0 1 2 3 + * 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |M| S_T | S_CC | M_ID | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | M_ID | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + *+ * + * @see ETSI EN 302 636-4-1 Clause 6.2 + * @see ETSI TS 103-836-4-1 Clause 6.2 + * + * @member typeOfAddress + * @member stationType + * @member mid + */ + type record GN_Address { + TypeOfAddress typeOfAddress, + StationType stationType, + UInt10 reserved, + Oct6 mid + } with { + variant "FIELDORDER(msb)" + } + + group geoNetworkingAddressSubtypes { + + /** + * @desc Identifies the ITS station (5Bits). + */ + type enumerated StationType { + e_unknown(0), + e_pedestrian(1), + e_cyclist(2), + e_moped(3), + e_motorcycle(4), + e_passengerCar(5), + e_bus(6), + e_lightTruck(7), + e_heavyTruck(8), + e_trailer(9), + e_specialVehicle(10), + e_tram(11), + e_roadSideUnit(15) + } with { + variant "FIELDLENGTH(5)" //variant "5 bit" + } + + /** + * @desc Distinguish between manually configured + * network address and the initial GeoNetwork address (1Bit). + */ + type enumerated TypeOfAddress { + e_manual(1), + e_initial(0) + } with { + variant "FIELDLENGTH(1)" //variant "1 bit" + } + + } // end group geoNetworkingAddressSubtypes + + } // end group geoNetworkingAddress + + } // end group geoNetworkingHeadersSubtypes + + } // end group geoNetworkingExtendedHeaders + + } // end group geoNetworkingHeader + + group geoNwPicsTypes { + + /** + * @desc The GeoUnicast forwarding algorithm. + */ + type enumerated NonAreaForwardingAlgorithm { + e_unspecified(0), + e_greedy(1), + e_cbf(2) + } + + /** + * @desc The GeoBroadcast forwarding algorithm. + */ + type enumerated AreaForwardingAlgorithm { + e_unspecified(0), + e_simple(1), + e_cbf(2), + e_advanced(3) + } + + /** + * @desc GN address configuration method. + */ + type enumerated GnAddressConfigurationMethod { + e_auto(0), + e_managed(1), + e_anonymous(2) + } + + } // end geoNwPicsTypes + + group utPrimitives { + + /** + * @desc Upper Tester message to initialize IUT + * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use + */ + type record UtGnInitialize { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester results message of the GeoNetworking IUT + * @member utGnInitialize - + * @member utGnTriggerResult - + * @member utAutoInteropTriggerResult - + * @member utGnChangePositionResult - + */ + type union UtGnResults { + boolean utGnInitializeResult, + boolean utGnTriggerResult, + boolean utAutoInteropTriggerResult, // FIXME Remove UtAutoInteropTrigger from GN component, create an AutoInterop component + boolean utGnChangePositionResult + } with { + variant "" + } // End of type UtGnResults + + /** + * @desc AutoInterop UpperTester trigger + * @member utRadioOnOff Set to true to power on the radio (on-link mode), false to power off the radio (off-link). + */ + type union UtAutoInteropTrigger { + boolean utRadioOnOff + } with { + variant "" + } // End of type UtAutoInteropTrigger + + /** + * @desc Upper Tester message to change the position of IUT. Values a relatives + */ + type record UtGnChangePosition { + Int32 latitude, + Int32 longitude, + Int32 elevation + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc UT primitives for GeoNetworking + * @member geoUnicast - + * @member geoBroadcast - + * @member geoAnycast - + * @member shb - + * @member tsb - + * @member changePosition - + * @member checkPacket - + */ + type union UtGnTrigger { + GenerateGeoUnicastMessage geoUnicast, + GenerateGeoBroadcastMessage geoBroadcast, + GenerateGeoAnycastMessage geoAnycast, + GenerateSHBMessage shb, + GenerateTSBMessage tsb + } with { + variant "" + } + + /** + * @desc UT primitive for IUT to send a GeoUnicast packet + * @member gnAddress Destination of the packet + * @member lifetime Lifetime of the packet + * @member trafficClass Traffic class of the packet + * @member payload GnRawPayload of the packet + */ + type record GenerateGeoUnicastMessage { + GN_Address gnAddress, + UInt16 lifetime, + TrafficClass trafficClass, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc UT primitive for IUT to send a GeoBroadcast packet + * @member shape Shape of the area + * @member lifetime Lifetime of the packet + * @member trafficClass Traffic class of the packet + * @member area Destination GeoArea + * @member payload GnRawPayload of the packet + */ + type record GenerateGeoBroadcastMessage { + GeoShape shape, + UInt16 lifetime, + TrafficClass trafficClass, + UInt24 reserved, + Area area, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc UT primitive for IUT to send a Geoanycast packet + */ + type GenerateGeoBroadcastMessage GenerateGeoAnycastMessage; + + /** + * @desc UT primitive for IUT to send a SHB packet + * @member trafficClass Traffic class of the packet + * @member payload GnRawPayload of the packet + */ + type record GenerateSHBMessage { + TrafficClass trafficClass, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc UT primitive for IUT to send a SHB packet + * @member nbHops Number of Hops + * @member lifetime Lifetime of the packet + * @member trafficClass Traffic class of the packet + * @member payload GnRawPayload of the packet + */ + type record GenerateTSBMessage { + UInt8 nbHops, + UInt16 lifetime, + TrafficClass trafficClass, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to check Upper Layer message transmission on GN IUT + */ + type record UtGnEventInd { + GnRawPayload rawPayload + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc List of Upper Tester messages to check Upper Layer message transmission on GN IUT + */ + type record of UtGnEventInd UtGnEventIndList; + + } // end utPrimitives + with { + encode "UpperTester"; + variant "" + } + + group acPrimitives { + + /** + * @desc TA primitives for GeoNetworking + * @member startBeaconing - + * @member stopBeaconing - + * @member startPassBeaconing - + * @member stopPassBeaconing - + * @member startBeaconingMultipleNeighbour - + * @member stopBeaconingMultipleNeighbour - + * @member getLongPosVector - + */ + type union AcGnPrimitive { + AcStartBeaconing startBeaconing, + AcStopBeaconing stopBeaconing, + AcStartPassBeaconing startPassBeaconing, + AcStopPassBeaconing stopPassBeaconing, + AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour, + AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour, + AcGetLongPosVector getLongPosVector + } with { + variant "" + } + + /** + * @desc Primitive for receiveing response from TA + * @member getLongPosVector + */ + type union AcGnResponse { + LongPosVector getLongPosVector, + AcGnResponseFailure failure + } + with { + variant "" + encode(getLongPosVector) "LibItsGeoNetworking" + } + + type record AcGnResponseFailure { + boolean failure + } + + /** + * @desc Primitive for TA to start sending beacons for the test component + * @member beaconHeader Beacon template + */ + type record AcStartBeaconing { + GeoNetworkingPdu beaconPacket + } + with { + encode(beaconPacket) "LibItsGeoNetworking" + } + + /** + * @desc Primitive for TA to stop sending beacons for the test component + */ + type record AcStopBeaconing { + } + + /** + * @desc Primitive for TA to start enqueueing received beacons + * @member beaconHeader Filter + */ + type record AcStartPassBeaconing { + BeaconHeader beaconHeader + } + with { + encode(beaconHeader) "LibItsGeoNetworking" + }; + + /** + * @desc Primitive for TA to stop enqueueing received beacons + */ + type record AcStopPassBeaconing { + } + + /** + * @desc Primitive for TA to start sending beacons for multiple neighbours + * @member beaconHeader Beacon template + * @member numberOfNeighbour Number of neighbours to simulate + */ + type record AcStartBeaconingMultipleNeighbour { + GeoNetworkingPdu beaconPacket, + integer numberOfNeighbour + } + with { + encode(beaconPacket) "LibItsGeoNetworking" + }; + + /** + * @desc Primitive for TA to stop sending beacons for multiple neighbours + */ + type record AcStopBeaconingMultipleNeighbour { + } + + /** + * @desc Primitive for retrieving the position vector corresponding to a specific GN address + * @member gnAddress GN address to be searched + */ + type record AcGetLongPosVector { + GN_Address gnAddress + } + with { + encode(gnAddress) "LibItsGeoNetworking" + }; + + } // end acPrimitives + with { + variant "" + encode "AdapterControl" + } + + group networkAndTransportPrimitives { + + group nt2Primitives { + + /** + * @desc NT2 GeoNetworking Indication Primitive + */ + type record GeoNetworkingInd { + GeoNetworkingPdu msgIn, + MacAddress macDestinationAddress, + Bit256 ssp optional, + UInt32 its_aid optional + } with { + //encode "RAW"; + variant "FIELDORDER(msb)" + } + + /** + * @desc NT2 GeoNetworking Request Primitive + */ + type record GeoNetworkingReq { + GeoNetworkingPdu msgOut, + MacAddress macDestinationAddress, + UInt32 its_aid + } with { + //encode "RAW"; + variant "FIELDORDER(msb)" + } + + } // end nt2Primitives + + } // End of group networkAndTransportPrimitives + with { + variant "" + encode "LibIts_Interface" + } // end interfacePrimitives + +} +with { + variant "" + encode "LibItsGeoNetworking" + } diff --git a/lib/module.mk b/lib/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..9ecc5bad322bac3197bbd5f11ea3bb339e4fea7e --- /dev/null +++ b/lib/module.mk @@ -0,0 +1,7 @@ +sources := \ + LibItsGeoNetworking_EncdecDeclarations.ttcn \ + LibItsGeoNetworking_Pics.ttcn \ + LibItsGeoNetworking_Pixits.ttcn \ + LibItsGeoNetworking_Templates.ttcn \ + LibItsGeoNetworking_TypesAndValues.ttcn \ + diff --git a/lib_system/LibItsGeoNetworking_Functions.ttcn b/lib_system/LibItsGeoNetworking_Functions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b344e82cb3df5d92f9ed4ed6ccf989a86308319a --- /dev/null +++ b/lib_system/LibItsGeoNetworking_Functions.ttcn @@ -0,0 +1,2863 @@ +/** + * @author ETSI / STF405 / STF449 / STF484 / STF517 / STF 538 + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn $ + * $Id: LibItsGeoNetworking_Functions.ttcn 1329 2017-02-21 14:48:18Z berge $ + * @desc Module containing functions for GeoNetworking + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module LibItsGeoNetworking_Functions { + + // Libcommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + import from LibCommon_Time all; + + // LibHelpers + import from LibHelpers_Functions all; + + // LibIts + import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; + import from Ieee1609Dot2 language "ASN.1:1997" all; + import from EtsiTs103097Module language "ASN.1:1997" all; + + // LibItsCommon + import from LibItsCommon_TypesAndValues all; + import from LibItsExternal_TypesAndValues all; + import from LibItsCommon_Templates all; + import from LibItsCommon_Functions all; + import from LibItsCommon_Pixits all; + // import from LibItsCommon_TestSystem all; + + // LibItsSecurity + import from LibItsSecurity_TypesAndValues all; + import from LibItsSecurity_Templates all; + import from LibItsSecurity_Functions all; + import from LibItsSecurity_Pixits all; + + // LibItsGeoNetworking + import from LibItsGeoNetworking_TestSystem all; + import from LibItsGeoNetworking_TypesAndValues all; + import from LibItsGeoNetworking_Templates all; + import from LibItsGeoNetworking_Pixits all; + import from LibItsGeoNetworking_Pics all; + + group utFuntions { + + /** + * @desc Requests to bring the IUT in an initial state + * @param p_init The initialisation to trigger. + */ + function f_utInitializeIut(template (value) UtGnInitialize p_init) runs on ItsBaseGeoNetworking { + + //deactivate gnPort default alts + vc_gnDefaultActive := false; + + utPort.send(p_init); + tc_wait.start; + alt { + [] utPort.receive(UtGnResults: { utGnInitializeResult := 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 gnPort default alts + vc_gnDefaultActive := true; + + } + + /** + * @desc Requests to change the position of the IUT + */ + function f_utChangePosition() runs on ItsBaseGeoNetworking { + + //deactivate gnPort default alts + vc_gnDefaultActive := false; + + utPort.send(m_changePosition); + tc_wait.start; + alt { + [] utPort.receive(UtGnResults: { utGnChangePositionResult := true} ) { + tc_wait.stop; + log("*** f_utChangePosition: INFO: IUT position changed ***"); + } + [] utPort.receive(UtGnResults: { utGnChangePositionResult := false }) { + tc_wait.stop; + log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] a_utDefault() { + } + [] tc_wait.timeout { + log("*** f_utChangePosition: INFO: IUT position not changed in time ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + } + + //activate gnPort default alts + vc_gnDefaultActive := true; + + } + + /** + * @desc Triggers event from the application layer + * @param p_event The event to trigger. + */ + function f_utTriggerEvent(template (value) UtGnTrigger p_event) runs on ItsBaseGeoNetworking return boolean { + + // Variables + var boolean v_return := true; + + //deactivate gnPort default alts + vc_gnDefaultActive := false; + + utPort.send(p_event); + tc_wait.start; + alt { + [] utPort.receive(UtGnResults: { utGnTriggerResult := true }) { + tc_wait.stop; + } + [] utPort.receive(UtGnResults: { utGnTriggerResult := false }) { + tc_wait.stop; + log("*** UtGnTriggerResult: INFO: UT trigger was not successful ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] a_utDefault() { + } + [] tc_wait.timeout { + v_return := false; + } + } + + //activate gnPort default alts + vc_gnDefaultActive := true; + + return v_return; + } + + } // End of group utFunctions + + group geoConfigurationFunctions { + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - two ITS nodes (nodeA, nodeB) + * - Area1 which only includes NodeB and IUT + * - Area2 which only includes NodeB + * NodeB being close to the area center + */ + function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + + // Map + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + map(self:geoNetworkingPort, system:geoNetworkingPort); + + // Connect + f_connect4SelfOrClientSync(); + activate(a_cf01Down()); + + // Initialise secured mode + f_initialiseSecuredMode(); + + //Initialze the IUT + f_initialState(p_scenario); + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + f_initialiseComponent(v_positionTable, v_areaTable, c_compNodeB); + + } // End of function f_cf01Up + + function f_cf01Down() runs on ItsGeoNetworking system ItsGeoNetworkingSystem { + + f_uninitialiseSecuredMode(); + + // Unmap + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + unmap(self:geoNetworkingPort, system:geoNetworkingPort); + + // Disconnect + f_disconnect4SelfOrClientSync(); + + } // End of function f_cf01Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node (NodeD) + * - Area1 which only includes NodeB, NodeD and IUT + * - Area2 which only includes NodeB and NodeD + * NodeB being close to the area center + * + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + log(">>> f_cf02Up: p_mainUtComponent: ", p_mainUtComponent); + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; + } + + // Map & Connect + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + map(self:geoNetworkingPort, system:geoNetworkingPort); + connect(self:syncPort, mtc:syncPort); + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + map(vc_componentTable[i].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf02Down()); + + //Initialze the IUT + log("f_cf02Up: start f_initialState for: ", p_mainUtComponent); + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); + + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + + } // End of function f_cf02Up + + /** + * @desc Deletes configuration cf02 + */ + function f_cf02Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + unmap(self:geoNetworkingPort, system:geoNetworkingPort); + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf02Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeA) + * - one ITS node in direction of NodeA (NodeB) + * - one ITS node not in direction of NodeA (NodeC) + * - Area1 which only includes NodeB and IUT + * - Area2 which only includes NodeB + * NodeB being close to the area center + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; + } + + // Map & Connect + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + connect(self:syncPort, mtc:syncPort); + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + map(vc_componentTable[i].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf03Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); + + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + + } // End of function f_cf03Up + + /** + * @desc Deletes configuration cf03 + */ + function f_cf03Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf03Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeA) + * - one ITS node in direction of NodeA and having + * shortest distance to NodeA (NodeB) + * - one ITS node in direction of NodeA (NodeD) + * - one ITS node not in direction of NodeA (NodeC) + * - Area1 which only includes NodeB, NodeD and IUT + * - Area2 which only includes NodeA, NodeB and NodeD + * NodeB being close to the area center + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}, {c_compNodeD, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; + } + + // Map & Connect + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + connect(self:syncPort, mtc:syncPort); + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + map(vc_componentTable[i].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf04Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); + + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + + } // End of function f_cf04Up + + /** + * @desc Deletes configuration cf04 + */ + function f_cf04Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf04Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node not in direction of NodeB and having + * longest distance to NodeB (NodeE) + * - Area1 which only includes NodeB, NodeD and IUT + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeE, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; + } + + // Map & Connect + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + connect(self:syncPort, mtc:syncPort); + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + map(vc_componentTable[i].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf05Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); + + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + } + + /** + * @desc Deletes configuration cf05 + */ + function f_cf05Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf05Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node not in direction of NodeB and having + * shortest distance to NodeB (NodeF) + * - Area1 which only includes NodeB, NodeD and IUT + * - IUT not in sectorial area of NodeB-NodeF + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeF, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; + } + + // Map & Connect + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + connect(self:syncPort, mtc:syncPort); + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + map(vc_componentTable[i].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf06Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); + + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + } + + /** + * @desc Deletes configuration cf06 + */ + function f_cf06Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf06Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node in direction of NodeB and having + * shortest distance to NodeB (NodeD) + * - Area1 which only includes NodeB, NodeD and IUT + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; + } + + // Map & Connect + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + connect(self:syncPort, mtc:syncPort); + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + map(vc_componentTable[i].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf07Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); + + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + } + + /** + * @desc Deletes configuration cf06 + */ + function f_cf07Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // End of function f_cf07Down + + /** + * @desc Behavior function for initializing component's variables and tables + * @param p_positionTable Table containing position vectors of all nodes + * @param p_areaTable Table containing all defined geoAreas + * @param p_componentName Name of the component + */ + function f_initialiseComponent( + in PositionTable p_positionTable, + in GeoAreaTable p_areaTable, + in charstring p_componentName) + runs on ItsGeoNetworking { + + vc_positionTable := p_positionTable; + vc_areaTable := p_areaTable; + vc_componentName := p_componentName; + + vc_localSeqNumber := f_getInitialSequenceNumber(); + vc_multipleMessagesCount := f_getMessageCount(); + + } // End of function f_initialiseComponent + + /** + * @desc Makes the simulated ITS node behave as a neighbour of IUT + */ + function f_startBeingNeighbour() runs on ItsGeoNetworking { + + vc_neighbourDefault := activate(a_neighbourDefault()); + f_acTriggerEvent(m_startBeaconing(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader)); + f_sleepIgnoreDef(PX_NEIGHBOUR_DISCOVERY_DELAY); + } // End of function f_startBeingNeighbour + + /** + * @desc Makes the simulated ITS node behave as not being a neighbour of IUT + */ + function f_stopBeingNeighbour() runs on ItsGeoNetworking { + + f_acTriggerEvent(m_stopBeaconing); + if (PICS_GN_SECURITY == true) { + deactivate(vc_neighbourDefault); + } + } // End of function f_stopBeingNeighbour + + /** + * @desc Initialise secure mode if required + */ + function f_initialiseSecuredMode() runs on ItsBaseGeoNetworking { + + // Local variables + + // Load certificates + if (PICS_GN_SECURITY == true) { + if( not f_loadCertificates(PX_IUT_SEC_CONFIG_NAME) ) { + log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); + stop; + } + + // Initialize vc_location + f_setGenerationLocation( + f_getTsLatitude(), + f_getTsLongitude() + ); + } else if (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 ItsBaseGeoNetworking { + if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { + f_acDisableSecurity(); + } + } // End of function f_uninitialiseSecuredMode() + + } // End of group geoConfigurationFunctions + + group componentFunctions { + /** + * @desc Get the component corresponding to a key + * @param p_componentName Name searched component + * @return ItsGeoNetworking - The searched position vector + */ + function f_getComponent( + in charstring p_componentName + ) runs on ItsMtc + return ItsGeoNetworking { + + var ItsGeoNetworking v_return := null; + var integer i := 0; + + for (i:=0; i