Loading ItsGeoNetworking_TestCases.ttcn +362 −222 File changed.Preview size limit exceeded, changes collapsed. Show changes ItsGeoNetworking_TpFunctions.ttcn +125 −7 Original line number Diff line number Diff line Loading @@ -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))); Loading Loading @@ -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 Loading @@ -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; } Loading Loading @@ -1294,7 +1410,8 @@ module ItsGeoNetworking_TpFunctions { f_TP_GEONW_PON_LOT_BV_03_pre_2( m_geoNwShbPacket( v_longPosVectorNode v_longPosVectorNode, m_mccMco ) ); Loading Loading @@ -1629,7 +1746,8 @@ module ItsGeoNetworking_TpFunctions { f_TP_GEONW_PON_LOT_BV_05_pre_2( m_geoNwShbPacket( v_obsoleteLongPosVectorNodeB v_obsoleteLongPosVectorNodeB, m_mccMco ) ); Loading Loading @@ -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))); Loading Loading @@ -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)); lib/LibItsGeoNetworking_Pics.ttcn +26 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -376,6 +388,20 @@ module LibItsGeoNetworking_Pics { */ modulepar MacAddress PICS_IUT_MAC_ADDRESS := 'FFFFFFFFFFFF'O; group radioComm { type enumerated RadioAccess { e_its_g5, e_lte_cv2x } /** * @desc Does radio communication use ITS-G5 or LTE-V2X? * @see ETSI TS 102 871-1 Table A.17 */ modulepar RadioAccess PICS_RADIO_COMM := e_its_g5; } // End of group radioComm } // end geoNwPics /** Loading lib/LibItsGeoNetworking_Templates.ttcn +127 −21 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 := * } Loading Loading @@ -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 := ? } Loading Loading @@ -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 } } } Loading lib/LibItsGeoNetworking_TypesAndValues.ttcn +73 −26 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 Loading @@ -342,7 +344,7 @@ module LibItsGeoNetworking_TypesAndValues { */ type record TrafficClass { SCF scf, ChannelOffload channelOffload, Reserved reserved, TcId tcId } with { variant "FIELDORDER(msb)" Loading @@ -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" } Loading @@ -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 Loading Loading @@ -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 */ Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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_ Loading Loading @@ -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 Loading Loading @@ -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 Loading
ItsGeoNetworking_TestCases.ttcn +362 −222 File changed.Preview size limit exceeded, changes collapsed. Show changes
ItsGeoNetworking_TpFunctions.ttcn +125 −7 Original line number Diff line number Diff line Loading @@ -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))); Loading Loading @@ -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 Loading @@ -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; } Loading Loading @@ -1294,7 +1410,8 @@ module ItsGeoNetworking_TpFunctions { f_TP_GEONW_PON_LOT_BV_03_pre_2( m_geoNwShbPacket( v_longPosVectorNode v_longPosVectorNode, m_mccMco ) ); Loading Loading @@ -1629,7 +1746,8 @@ module ItsGeoNetworking_TpFunctions { f_TP_GEONW_PON_LOT_BV_05_pre_2( m_geoNwShbPacket( v_obsoleteLongPosVectorNodeB v_obsoleteLongPosVectorNodeB, m_mccMco ) ); Loading Loading @@ -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))); Loading Loading @@ -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));
lib/LibItsGeoNetworking_Pics.ttcn +26 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading @@ -376,6 +388,20 @@ module LibItsGeoNetworking_Pics { */ modulepar MacAddress PICS_IUT_MAC_ADDRESS := 'FFFFFFFFFFFF'O; group radioComm { type enumerated RadioAccess { e_its_g5, e_lte_cv2x } /** * @desc Does radio communication use ITS-G5 or LTE-V2X? * @see ETSI TS 102 871-1 Table A.17 */ modulepar RadioAccess PICS_RADIO_COMM := e_its_g5; } // End of group radioComm } // end geoNwPics /** Loading
lib/LibItsGeoNetworking_Templates.ttcn +127 −21 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 := * } Loading Loading @@ -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 := ? } Loading Loading @@ -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 } } } Loading
lib/LibItsGeoNetworking_TypesAndValues.ttcn +73 −26 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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 Loading @@ -342,7 +344,7 @@ module LibItsGeoNetworking_TypesAndValues { */ type record TrafficClass { SCF scf, ChannelOffload channelOffload, Reserved reserved, TcId tcId } with { variant "FIELDORDER(msb)" Loading @@ -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" } Loading @@ -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 Loading Loading @@ -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 */ Loading @@ -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 Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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_ Loading Loading @@ -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 Loading Loading @@ -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