Commit 000ab667 authored by Yann Garcia's avatar Yann Garcia
Browse files

Start AtsGeonetworking review for ITS rel.2

parent dbe05aa9
Loading
Loading
Loading
Loading
+362 −222

File changed.

Preview size limit exceeded, changes collapsed.

+125 −7
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ module ItsGeoNetworking_TpFunctions {
                
                // Preamble
                f_prNeighbour();
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB, m_mccMco));
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
                
@@ -920,6 +920,122 @@ module ItsGeoNetworking_TpFunctions {
                
            } // End of function f_GEONW_FDV_SHB_BV_01
            
            /**
             * @desc    TP Function for TC_GEONW_FDV_SHB_BV_02
             */
            function f_GEONW_FDV_SHB_BV_02() runs on ItsGeoNetworking {
                
                // Local variables
                var LongPosVector v_longPosVectorIut;
                
                // Test control
                if (not PICS_GN_SHB_SRC or PICS_RADIO_COMM != e_its_g5) {
                    log("*** " & testcasename() & ": PICS_GN_SHB_SRC and PICS_RADIO_COMM != e_its_g5 required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cf01Up();
                
                // Test adapter configuration
                
                // Preamble
                v_longPosVectorIut := f_getPosition(c_compIut);
                f_prNeighbour();
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body
                if ( not f_utTriggerEvent(m_generateShbMessage) ) {
                    log("*** " & testcasename() & ": INCONC: Trigger failed ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
                tc_ac.start;
                alt {
                    [] geoNetworkingPort.receive(
                            mw_geoNwInd(
                                mw_geoNwPdu(
                                    mw_geoNwShbPacket(
                                      mw_longPosVectorPosition(v_longPosVectorIut), // SOPV
                                      1 //MHL
                                    )
                                )
                            )
                        ) {
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Fields of the received SHB message correctly set ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: SHB message not received ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_poNeighbour();
                f_cf01Down();
                
            } // End of function f_GEONW_FDV_SHB_BV_02
            
            /**
             * @desc    TP Function for TC_GEONW_FDV_SHB_BV_03
             */
            function f_GEONW_FDV_SHB_BV_03() runs on ItsGeoNetworking {
                
                // Local variables
                var LongPosVector v_longPosVectorIut;
                
                // Test control
                if (not PICS_GN_SHB_SRC or PICS_RADIO_COMM != e_lte_cv2x) {
                    log("*** " & testcasename() & ": PICS_GN_SHB_SRC and PICS_RADIO_COMM != e_lte_cv2x required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                
                // Test component configuration
                f_cf01Up();
                
                // Test adapter configuration
                
                // Preamble
                v_longPosVectorIut := f_getPosition(c_compIut);
                f_prNeighbour();
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body
                if ( not f_utTriggerEvent(m_generateShbMessage) ) {
                    log("*** " & testcasename() & ": INCONC: Trigger failed ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
                tc_ac.start;
                alt {
                    [] geoNetworkingPort.receive(
                            mw_geoNwInd(
                                mw_geoNwPdu(
                                    mw_geoNwShbPacket_c_v2x(
                                      mw_longPosVectorPosition(v_longPosVectorIut), // SOPV
                                      1 //MHL
                                    )
                                )
                            )
                        ) {
                        tc_ac.stop;
                        log("*** " & testcasename() & ": PASS: Fields of the received SHB message correctly set ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    }
                    [] tc_ac.timeout {
                        log("*** " & testcasename() & ": INCONC: SHB message not received ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                    }
                }
                
                // Postamble
                f_poNeighbour();
                f_cf01Down();
                
            } // End of function f_GEONW_FDV_SHB_BV_03
            
        } // end geoFdvSingleHopBroadcast
        
        // 6.2.1.8
@@ -934,8 +1050,8 @@ module ItsGeoNetworking_TpFunctions {
                var LongPosVector v_longPosVectorIut;
                
                // Test control
                if (not PICS_GN_TSB_SRC) {
                    log("*** " & testcasename() & ": PICS_GN_TSB_SRC required for executing the TC ***");
                if (not PICS_GN_TSB_SRC or PICS_RADIO_COMM != e_its_g5) {
                    log("*** " & testcasename() & ": PICS_GN_TSB_SRC and PICS_RADIO_COMM == e_its_g5 required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
@@ -1294,7 +1410,8 @@ module ItsGeoNetworking_TpFunctions {
                    
                    f_TP_GEONW_PON_LOT_BV_03_pre_2(
                        m_geoNwShbPacket(
                            v_longPosVectorNode
                            v_longPosVectorNode,
                            m_mccMco
                        )
                    );
                    
@@ -1629,7 +1746,8 @@ module ItsGeoNetworking_TpFunctions {
                    
                    f_TP_GEONW_PON_LOT_BV_05_pre_2(
                        m_geoNwShbPacket(
                            v_obsoleteLongPosVectorNodeB
                            v_obsoleteLongPosVectorNodeB,
                            m_mccMco
                        )
                    );
                    
@@ -5961,7 +6079,7 @@ module ItsGeoNetworking_TpFunctions {
                
                // Test Body
                v_longPosVectorNodeB.gnAddr := v_iutGnAddress;
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB), -, c_hopLimit1);
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB, m_mccMco), -, c_hopLimit1);
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(v_gnPacket)));
                
@@ -14054,7 +14172,7 @@ module ItsGeoNetworking_TpFunctions {
                f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                
                // Test Body                    
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
                v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB, m_mccMco));
                v_gnPacket.gnPacket.packet.payload := f_adapPayload(valueof(v_gnPacket.gnPacket.packet.payload));
                f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
                
+26 −0
Original line number Diff line number Diff line
@@ -21,6 +21,12 @@ module LibItsGeoNetworking_Pics {
    
    group geoNwPics {
        
        /**
         * @desc Is IUT supports ITS rel.2 ?
         * @see  ETSI TS 102 871-1 Table 1
         */
        modulepar boolean PICS_ITS_RELEASE_2 := true;
        
        /**
         * @desc GeoNetworking address of the GeoAdhoc router
         * @see  ETSI TS 102 871-1 Table 1
@@ -365,6 +371,12 @@ module LibItsGeoNetworking_Pics {
         */
        modulepar boolean PICS_GN_DAD := true;

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

        group radioComm {

            type enumerated RadioAccess {
                e_its_g5,
                e_lte_cv2x
            }

            /**
            * @desc Does radio communication use ITS-G5 or LTE-V2X?
            * @see  ETSI TS 102 871-1 Table A.17
            */
            modulepar RadioAccess PICS_RADIO_COMM := e_its_g5;
        
        } // End of group radioComm
    } // end geoNwPics
    
    /**
+127 −21
Original line number Diff line number Diff line
@@ -1230,11 +1230,13 @@ module LibItsGeoNetworking_Templates {
        group geoNwPacketShbTemplates {
            
            /**
             * @desc    Send template for GeoNetworking SHB Packet
             * @desc    Send template for GeoNetworking SHB Packet (Case ITS G5)
             * @param   p_sourceLongPosVec  Long position vector of source
             * @param   p_mccMco            Media-dependent data
             */
            template (value) GnNonSecuredPacket m_geoNwShbPacket(
                in template (value) LongPosVector p_sourceLongPosVec
                in template (value) LongPosVector p_sourceLongPosVec,
                in template (value) MccMco p_mccMco
            ) := {
                commonHeader := valueof(m_commonHeader(
                    PX_GN_UPPER_LAYER,
@@ -1243,26 +1245,96 @@ module LibItsGeoNetworking_Templates {
                    c_defaultHopLimit
                )),
                extendedHeader := valueof(m_shbHeader(
                    p_sourceLongPosVec
                    p_sourceLongPosVec,
                    p_mccMco
                )),
                payload :=  valueof(char2oct("DEFAULT_PAYLOAD"))
            }
            
            /**
             * @desc    Receive template for GeoNetworking SHB Packet
             * @desc    Receive template for GeoNetworking SHB Packet (Case ITS G5)
             * @param   p_sourceLongPosVec    Long position vector of source (Default: ?)
             * @param   p_hopLimit            Maximum number of hops (Default: ?)
             * @param   p_timeSynchronization Media-dependent data
             * @see ETSI TS 103 836-4-3 V2.1.1 Table 4: Fields of the SHB packet header
             */
            template (present) GnNonSecuredPacket mw_geoNwShbPacket(
                template (present) LongPosVector p_sourceLongPosVec := ?,
                template (present) UInt8 p_hopLimit := ?
                template (present) UInt8 p_hopLimit := ?,
                template (present) MccMco p_mccMco := ?
            ) := {
                commonHeader := mw_commonHeaderWithHopLimit(
                    PX_GN_UPPER_LAYER,
                    m_shbHeaderType,
                    p_hopLimit
                ),
                extendedHeader := mw_shbHeader(p_sourceLongPosVec),
                extendedHeader := mw_shbHeader(p_sourceLongPosVec, p_mccMco),
                payload := *
            }
            
            template (value) MccMco m_mccMco(
                                             in Oct1 p_cbr_l_0_hop := 'FF'O,
                                             in Oct1 p_cbr_l_1_hop := 'FF'O,
                                             in Bit4 p_eirp := '1111'B
                                             ) := {
                cbr_l_0_hop := p_cbr_l_0_hop,
                cbr_l_1_hop := p_cbr_l_1_hop,
                eirp        := p_eirp,
                reserved    := '0000'B,
                reserved1   := '00'O
            }

            template (present) MccMco mw_mccMco(
                                                template (present) Oct1 p_cbr_l_0_hop := ?,
                                                template (present) Oct1 p_cbr_l_1_hop := ?,
                                                template (present) Bit4 p_eirp := ?
                                                ) := {
                cbr_l_0_hop := p_cbr_l_0_hop,
                cbr_l_1_hop := p_cbr_l_1_hop,
                eirp        := p_eirp,
                reserved    := '0000'B,
                reserved1   := '00'O
            }

            /**
             * @desc    Send template for GeoNetworking SHB Packet (Case C-V2X)
             * @param   p_sourceLongPosVec  Long position vector of source
             * @param   p_timeSynchronization Media-dependent data
             */
            template (value) GnNonSecuredPacket m_geoNwShbPacket_c_v2x(
                in template (value) LongPosVector p_sourceLongPosVec,
                in template (value) TimeSynchronization p_timeSynchronization
            ) := {
                commonHeader := valueof(m_commonHeader(
                    PX_GN_UPPER_LAYER,
                    m_shbHeaderType,
                    m_trafficClass,
                    c_defaultHopLimit
                )),
                extendedHeader := valueof(m_shbHeader_c_v2x(
                    p_sourceLongPosVec,
                    p_timeSynchronization
                )),
                payload :=  valueof(char2oct("DEFAULT_PAYLOAD"))
            }
            
            /**
             * @desc    Receive template for GeoNetworking SHB Packet (Case C-V2X)
             * @param   p_sourceLongPosVec  Long position vector of source (Default: ?)
             * @param   p_hopLimit          Maximum number of hops (Default: ?)
             * @param   p_timeSynchronization Media-dependent data (Default: ?)
             */
            template (present) GnNonSecuredPacket mw_geoNwShbPacket_c_v2x(
                template (present) LongPosVector p_sourceLongPosVec := ?,
                template (present) UInt8 p_hopLimit := ?,
                template (present) TimeSynchronization p_timeSynchronization := ?
            ) := {
                commonHeader := mw_commonHeaderWithHopLimit(
                    PX_GN_UPPER_LAYER,
                    m_shbHeaderType,
                    p_hopLimit
                ),
                extendedHeader := mw_shbHeader_c_v2x(p_sourceLongPosVec, p_timeSynchronization),
                payload := *
            }
            
@@ -1561,18 +1633,18 @@ module LibItsGeoNetworking_Templates {
            /**
             * @desc    Default send template for traffic class
             */
            template (value) TrafficClass m_trafficClass ( in SCF p_scf := e_scfEnabled, in ChannelOffload p_ChOff := e_choffDisabled ) := {
            template (value) TrafficClass m_trafficClass ( in SCF p_scf := e_scfEnabled) := {
                scf      := p_scf,
                channelOffload  := p_ChOff,
                reserved := e_reserved,
                tcId     := 0
            }
            
            /**
             * @desc    Receive template for traffic class
             */
            template TrafficClass mw_trafficClass ( in template(present) SCF p_scf := ?, in template(present) ChannelOffload p_ChOff := ? ) := {
            template TrafficClass mw_trafficClass ( in template(present) SCF p_scf := ?) := {
                scf      := p_scf,
                channelOffload  := p_ChOff,
                reserved := e_reserved,
                tcId     := ?
            }
            
@@ -2151,28 +2223,62 @@ module LibItsGeoNetworking_Templates {
        group shbHeaderTemplates {
            
            /**
             * @desc    Send template for SHB header
             * @desc    Send template for SHB header (Case of ITS G5)
             * @param   p_sourceLongPosVec  Long position vector of sender
             * @param   p_mccMco Media-dependent functionality
             */
            template (value) ExtendedHeader m_shbHeader(
                in template (value) LongPosVector p_sourceLongPosVec
                in template (value) LongPosVector p_sourceLongPosVec,
                in template (value) MccMco p_mccMco
            ) := {
                shbHeader := {
                    srcPosVector := p_sourceLongPosVec,
                    reserved := 0
                    mediaDependantData := { mccMco := p_mccMco }
                }
            }
            
            /**
             * @desc    Receive template for SHB header
             * @desc    Receive template for SHB header (Case of ITS G5)
             * @param   p_sourceLongPosVec  Long position vector of sender
             * @param   p_mccMco Media-dependent functionality
             */
            template (present) ExtendedHeader mw_shbHeader(
                template (present) LongPosVector p_sourceLongPosVec
                template (present) LongPosVector p_sourceLongPosVec,
                template (present) MccMco p_mccMco := ?
            ) := {
                shbHeader := {
                    srcPosVector:= p_sourceLongPosVec,
                    mediaDependantData := { mccMco := p_mccMco }
                }
            }
            
            /**
             * @desc    Send template for SHB header (Case of C-V2X)
             * @param   p_sourceLongPosVec  Long position vector of sender
             * @param   p_timeSynchronization GNSS Time sinchronyzation
             */
            template (value) ExtendedHeader m_shbHeader_c_v2x(
                in template (value) LongPosVector p_sourceLongPosVec,
                in template (value) TimeSynchronization p_timeSynchronization
            ) := {
                shbHeader := {
                    srcPosVector := p_sourceLongPosVec,
                    mediaDependantData := { timeSynchronization := p_timeSynchronization }
                }
            }
            
            /**
             * @desc    Receive template for SHB header (Case of C-V2X)
             * @param   p_sourceLongPosVec  Long position vector of sender
             * @param   p_timeSynchronization GNSS Time sinchronyzation
             */
            template (present) ExtendedHeader mw_shbHeader_c_v2x(
                template (present) LongPosVector p_sourceLongPosVec,
                template (present) TimeSynchronization p_timeSynchronization := ?
            ) := {
                shbHeader := {
                    srcPosVector:= p_sourceLongPosVec,
                    reserved := ?
                    mediaDependantData := { timeSynchronization := p_timeSynchronization }
                }
            }
            
+73 −26
Original line number Diff line number Diff line
@@ -177,7 +177,8 @@ module LibItsGeoNetworking_TypesAndValues {
    /**
     * @desc GeoNetworking Packet
     *
     * @see ETSI EN 302 636-4-1 chapter 8.2, 8.3, 8.4
     * @see ETSI EN 302 636-4-1 Clauses 8.2, 8.3, 8.4
     * @see ETSI TS 103-836-4-1 Clause 9
     *
     * @member basicHeader
     * @member gnPacket
@@ -218,7 +219,7 @@ module LibItsGeoNetworking_TypesAndValues {
       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       * </pre>
       *
       * @see ETSI EN 302 636-4-1 chapter 8.6.1
       * @see ETSI EN 302 636-4-1 Clause 8.6.1
       *
       * @member version
       * @member nextHeader
@@ -286,7 +287,8 @@ module LibItsGeoNetworking_TypesAndValues {
       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       * </pre>
       *
       * @see ETSI EN 302 636-4-1 chapter 8.7.2
       * @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
@@ -329,12 +331,12 @@ module LibItsGeoNetworking_TypesAndValues {
       * <pre>
       *  0   1   2   3   4   5   6   7
       * +---+---+---+---+---+---+---+---+
       * |SCF|Ch.|         TC ID         |
       * |   |Off|                       |
       * |SCF|Res|         TC ID         |
       * +---+---+---+---+---+---+---+---+
       * </pre>
       *
       * @see ETSI EN 302 636-4-1 chapter 8.7.5
       * @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
@@ -342,7 +344,7 @@ module LibItsGeoNetworking_TypesAndValues {
       */
      type record TrafficClass {
        SCF      scf,
        ChannelOffload          channelOffload,
        Reserved reserved,
        TcId     tcId
      } with { 
        variant "FIELDORDER(msb)" 
@@ -354,9 +356,8 @@ module LibItsGeoNetworking_TypesAndValues {
      } with {
        variant "FIELDLENGTH(1)" //variant "1 bit"
      }
      type enumerated ChannelOffload {
        e_choffDisabled(0),
        e_choffEnable (1)
      type enumerated Reserved {
        e_reserved(0)
      } with {
        variant "FIELDLENGTH(1)" //variant "1 bit"
      }
@@ -369,7 +370,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc GeoNetworking ExtendedHeader
       *
       * @see ETSI EN 302 636-4-1 chapter 8.3
       * @see ETSI EN 302 636-4-1 Clause 8.3
       * @see ETSI TS 103-836-4-1 Clause 9.8
       *
       * @member commonHeader
       * @member gnExtHeader
@@ -404,7 +406,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc The BEACON packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.6
       * @see ETSI EN 302 636-4-1 Clause 8.8.6
       * @see ETSI TS 103-836-4-1 Clause 9.8.6
       *
       * @member commonHeader
       */
@@ -417,7 +420,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc The GEOANYCAST packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.5
       * @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
@@ -446,7 +450,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc The GEOBROADCAST packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.5
       * @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
@@ -463,7 +468,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc The GEOUNICAST packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.2
       * @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
@@ -482,7 +488,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc The Location Service (LS) Reply packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.8
       * @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
@@ -501,7 +508,8 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * @desc The Location Service (LS) Request packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.7
       * @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
@@ -520,22 +528,58 @@ module LibItsGeoNetworking_TypesAndValues {
      /**
       * The Single Hop Broadcast (SHB) packet header.
       *
       * @see ETSI EN 302 636-4-1 chapter 8.8.4
       * @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,
        UInt32          reserved
        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 chapter 8.8.3
       * @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
@@ -752,7 +796,8 @@ module LibItsGeoNetworking_TypesAndValues {
         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         * </pre>
         *
         * @see ETSI EN 302 636-4-1 chapter 8.5.2
         * @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_
@@ -791,7 +836,8 @@ module LibItsGeoNetworking_TypesAndValues {
         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         * </pre>
         *
         * @see ETSI EN 302 636-4-1 chapter 8.5.3
         * @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
@@ -821,7 +867,8 @@ module LibItsGeoNetworking_TypesAndValues {
           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           * </pre>
           *
           * @see ETSI EN 302 636-4-1 chapter 6.2
           * @see ETSI EN 302 636-4-1 Clause 6.2
           * @see ETSI TS 103-836-4-1 Clause 6.2
           *
           * @member typeOfAddress
           * @member stationType
Loading