Commits (2)
...@@ -47,7 +47,7 @@ PublicKeys ::= SEQUENCE { ...@@ -47,7 +47,7 @@ PublicKeys ::= SEQUENCE {
encryptionKey PublicEncryptionKey OPTIONAL encryptionKey PublicEncryptionKey OPTIONAL
} }
Version ::= INTEGER {v1(1)} Version ::= INTEGER {v1(1)} (1..255)
EtsiTs103097Data-Encrypted-Unicast {ToBeEncryptedDataContent} ::= EtsiTs103097Data-Encrypted {ToBeEncryptedDataContent} EtsiTs103097Data-Encrypted-Unicast {ToBeEncryptedDataContent} ::= EtsiTs103097Data-Encrypted {ToBeEncryptedDataContent}
(WITH COMPONENTS {..., (WITH COMPONENTS {...,
......
/** /**
* @author ETSI / STF405 / STF449 / STF484 / STF517 * @author ETSI / STF405 / STF449 / STF484 / STF517
* @version $URL$ * @version $URL$
* $Id$ * $Id$
* @desc Module containing types and values for GeoNetworking Protocol * @desc Module containing types and values for GeoNetworking Protocol
* @copyright ETSI Copyright Notification * @copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission. * No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media. * The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved. * All rights reserved.
* *
*/ */
module LibItsGeoNetworking_TypesAndValues { module LibItsGeoNetworking_TypesAndValues {
// LibCommon // LibCommon
import from LibCommon_BasicTypesAndValues all; import from LibCommon_BasicTypesAndValues all;
import from LibCommon_DataStrings all; import from LibCommon_DataStrings all;
// LibIts // LibIts
import from EtsiTs103097Module language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all;
group geoConfigurationValues { group geoConfigurationValues {
const charstring c_compIut := "IUT"; const charstring c_compIut := "IUT";
const charstring c_compMTC := "MTC"; const charstring c_compMTC := "MTC";
const charstring c_compNodeA := "NodeA"; const charstring c_compNodeA := "NodeA";
const charstring c_compNodeB := "NodeB"; const charstring c_compNodeB := "NodeB";
const charstring c_compNodeC := "NodeC"; const charstring c_compNodeC := "NodeC";
const charstring c_compNodeD := "NodeD"; const charstring c_compNodeD := "NodeD";
const charstring c_compNodeE := "NodeE"; const charstring c_compNodeE := "NodeE";
const charstring c_compNodeF := "NodeF"; const charstring c_compNodeF := "NodeF";
const charstring c_area1 := "AREA1"; const charstring c_area1 := "AREA1";
const charstring c_area2 := "AREA2"; const charstring c_area2 := "AREA2";
const integer c_latitudeFactorNodeA := 10; const integer c_latitudeFactorNodeA := 10;
const integer c_latitudeFactorNodeB := 2; const integer c_latitudeFactorNodeB := 2;
const integer c_latitudeFactorNodeC := -6; const integer c_latitudeFactorNodeC := -6;
const integer c_latitudeFactorNodeD := 1; const integer c_latitudeFactorNodeD := 1;
const integer c_latitudeFactorNodeE := -1; const integer c_latitudeFactorNodeE := -1;
const integer c_latitudeFactorNodeF := 2; const integer c_latitudeFactorNodeF := 2;
const integer c_longitudeFactorNodeA := 0; const integer c_longitudeFactorNodeA := 0;
const integer c_longitudeFactorNodeB := 0; const integer c_longitudeFactorNodeB := 0;
const integer c_longitudeFactorNodeC := 0; const integer c_longitudeFactorNodeC := 0;
const integer c_longitudeFactorNodeD := 0; const integer c_longitudeFactorNodeD := 0;
const integer c_longitudeFactorNodeE := 0; const integer c_longitudeFactorNodeE := 0;
const integer c_longitudeFactorNodeF := -3; const integer c_longitudeFactorNodeF := -3;
} // end geoConfigurationValues } // end geoConfigurationValues
group geoSyncMessages { group geoSyncMessages {
const charstring c_msgSent := "Message sent"; const charstring c_msgSent := "Message sent";
} // end geoSyncMessages } // end geoSyncMessages
group geoTestingConstants { group geoTestingConstants {
const UInt6 c_defaultLifetime := 10; // in seconds const UInt6 c_defaultLifetime := 10; // in seconds
const UInt16 c_lifetime := 1000 * c_defaultLifetime; // in seconds const UInt16 c_lifetime := 1000 * c_defaultLifetime; // in seconds
} // end geoTestingConstants } // end geoTestingConstants
group units { group units {
const float c_squareKm := 1000000.0; const float c_squareKm := 1000000.0;
} // end units } // end units
group geoConfigurationTypes { group geoConfigurationTypes {
/** /**
* @desc Entry of position table * @desc Entry of position table
* @member key Reference key of the entry * @member key Reference key of the entry
* @member position Position vector stored in the entry * @member position Position vector stored in the entry
*/ */
type record PositionEntry { type record PositionEntry {
charstring key, charstring key,
LongPosVector position LongPosVector position
} }
/** /**
* @desc Table containing node positions * @desc Table containing node positions
*/ */
type record of PositionEntry PositionTable; type record of PositionEntry PositionTable;
/** /**
* @desc Parameters of a geometric area * @desc Parameters of a geometric area
* @member geoAreaPosLatitude Latitude of area's center * @member geoAreaPosLatitude Latitude of area's center
* @member geoAreaPosLongitude Longitude of area's center * @member geoAreaPosLongitude Longitude of area's center
* @member distanceA Distance A * @member distanceA Distance A
* @member distanceB Distance B * @member distanceB Distance B
* @member angle Angle * @member angle Angle
*/ */
type record Area { type record Area {
Int32 geoAreaPosLatitude, Int32 geoAreaPosLatitude,
Int32 geoAreaPosLongitude, Int32 geoAreaPosLongitude,
UInt16 distanceA, UInt16 distanceA,
UInt16 distanceB, UInt16 distanceB,
UInt16 angle UInt16 angle
} }
/** /**
* @desc Compact definition of GeoBroadcastArea * @desc Compact definition of GeoBroadcastArea
* @member geoBroadcastSubType Type of GeoBroadcastArea (=shape) * @member geoBroadcastSubType Type of GeoBroadcastArea (=shape)
* @member geoBroadcastArea Parameters of the geometric area * @member geoBroadcastArea Parameters of the geometric area
*/ */
type record GeoBroadcastArea { type record GeoBroadcastArea {
HeaderSubTypeGeoBroadcast geoBroadcastSubType, HeaderSubTypeGeoBroadcast geoBroadcastSubType,
Area geoBroadcastArea Area geoBroadcastArea
} }
/** /**
* @desc Compact definition of GeoAnycastArea * @desc Compact definition of GeoAnycastArea
* @member geoAnycastSubType Type of GeoAnycastArea (=shape) * @member geoAnycastSubType Type of GeoAnycastArea (=shape)
* @member geoAnycastArea Parameters of the geometric area * @member geoAnycastArea Parameters of the geometric area
*/ */
type record GeoAnycastArea { type record GeoAnycastArea {
HeaderSubTypeGeoAnycast geoAnycastSubType, HeaderSubTypeGeoAnycast geoAnycastSubType,
Area geoAnycastArea Area geoAnycastArea
} }
/** /**
* @desc Compact definition of a GeoArea (either GeoBroadcastArea or GeoAnycastArea) * @desc Compact definition of a GeoArea (either GeoBroadcastArea or GeoAnycastArea)
* @member shape Shape of the GeoArea * @member shape Shape of the GeoArea
* @member area Parameters of the geometric area * @member area Parameters of the geometric area
*/ */
type record GeoArea { type record GeoArea {
GeoShape shape, GeoShape shape,
Area area Area area
} }
/** /**
* @desc Geometric shapes used to define GeoAreas * @desc Geometric shapes used to define GeoAreas
*/ */
type enumerated GeoShape { type enumerated GeoShape {
e_geoCircle(0), e_geoCircle(0),
e_geoRect(1), e_geoRect(1),
e_geoElip(2), e_geoElip(2),
e_reserved e_reserved
} }
/** /**
* @desc Entry of GeoArea table * @desc Entry of GeoArea table
* @member key Reference key of the entry * @member key Reference key of the entry
* @member geoArea GeoArea stored in the entry * @member geoArea GeoArea stored in the entry
*/ */
type record GeoAreaEntry { type record GeoAreaEntry {
charstring key, charstring key,
GeoArea geoArea GeoArea geoArea
} }
/** /**
* @desc Table containing geoArea definitions * @desc Table containing geoArea definitions
*/ */
type record of GeoAreaEntry GeoAreaTable; type record of GeoAreaEntry GeoAreaTable;
} // end geoConfigurationTypes } // end geoConfigurationTypes
group geoNwValues { group geoNwValues {
group geoNwHeaderConstants { group geoNwHeaderConstants {
const UInt4 c_geoNwProtocolVersion := 0; const UInt4 c_geoNwProtocolVersion := 0;
const UInt8 c_hopLimit1 := 1; const UInt8 c_hopLimit1 := 1;
const UInt8 c_defaultHopLimit := 10; const UInt8 c_defaultHopLimit := 10;
} // end geoNwHeaderConstants } // end geoNwHeaderConstants
} // end geoNwValues } // end geoNwValues
group geoNetworkingPdus { group geoNetworkingPdus {
/** /**
* @desc GeoNetworking Packet * @desc GeoNetworking Packet
* *
* @see ETSI EN 302 636-4-1 chapter 8.2, 8.3, 8.4 * @see ETSI EN 302 636-4-1 chapter 8.2, 8.3, 8.4
* *
* @member basicHeader * @member basicHeader
* @member gnPacket * @member gnPacket
*/ */
type record GeoNetworkingPdu { type record GeoNetworkingPdu {
BasicHeader basicHeader, BasicHeader basicHeader,
GeoNetworkingPacket gnPacket GeoNetworkingPacket gnPacket
} }
type record GeoNetworkingPacket { type record GeoNetworkingPacket {
GnNonSecuredPacket packet, GnNonSecuredPacket packet,
EtsiTs103097Data securedMsg optional EtsiTs103097Data securedMsg optional
} with { } with {
encode (securedMsg) "LibItsSecurity" encode (securedMsg) "LibItsSecurity"
} }
type octetstring GnRawPayload; type octetstring GnRawPayload;
type record GnNonSecuredPacket { type record GnNonSecuredPacket {
CommonHeader commonHeader, CommonHeader commonHeader,
ExtendedHeader extendedHeader optional, ExtendedHeader extendedHeader optional,
GnRawPayload payload optional GnRawPayload payload optional
} }
} // end group geoNetworkingPdus } // end group geoNetworkingPdus
group geoNetworkingHeader { group geoNetworkingHeader {
group geoNetworkingBasicHeader { group geoNetworkingBasicHeader {
/** /**
* @desc Basic Header * @desc Basic Header
* *
* <pre> * <pre>
* 0 1 2 3 * 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 * 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 | * | V | NH | Reserved | LT | RHL |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* </pre> * </pre>
* *
* @see ETSI EN 302 636-4-1 chapter 8.6.1 * @see ETSI EN 302 636-4-1 chapter 8.6.1
* *
* @member version * @member version
* @member nextHeader * @member nextHeader
* @member reserved * @member reserved
* @member lifeTime * @member lifeTime
* @member routerHopLimit * @member routerHopLimit
*/ */
type record BasicHeader { type record BasicHeader {
UInt4 version, UInt4 version,
BasicNextHeader nextHeader, BasicNextHeader nextHeader,
UInt8 reserved, UInt8 reserved,
Lifetime lifeTime, Lifetime lifeTime,
UInt8 routerHopLimit UInt8 routerHopLimit
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
type enumerated BasicNextHeader { type enumerated BasicNextHeader {
e_any(0), e_any(0),
e_commonHeader(1), e_commonHeader(1),
e_securedPacket(2), e_securedPacket(2),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Indicates the maximum tolerable time a packet can be buffered until it reaches its destination. * @desc Indicates the maximum tolerable time a packet can be buffered until it reaches its destination.
* @member multiplier * @member multiplier
* @member ltBase * @member ltBase
*/ */
type record Lifetime { type record Lifetime {
UInt6 multiplier, UInt6 multiplier,
LtBase ltBase LtBase ltBase
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The base for the calculation of the lifetime. * @desc The base for the calculation of the lifetime.
*/ */
type enumerated LtBase { type enumerated LtBase {
e_50ms(0), e_50ms(0),
e_1s(1), e_1s(1),
e_10s(2), e_10s(2),
e_100s(3) e_100s(3)
} with { } with {
variant "FIELDLENGTH(2)" //variant "2 bit" variant "FIELDLENGTH(2)" //variant "2 bit"
} }
} // end group geoNetworkingBasicHeader } // end group geoNetworkingBasicHeader
group geoNetworkingCommonHeader { group geoNetworkingCommonHeader {
/** /**
* @desc Common header for GeoNetworking * @desc Common header for GeoNetworking
* *
* <pre> * <pre>
* 0 1 2 3 * 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 * 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 | * | NH | R | HT | HST | TC | Flags |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | PL | MHL | Reserved | * | PL | MHL | Reserved |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* </pre> * </pre>
* *
* @see ETSI EN 302 636-4-1 chapter 8.7.2 * @see ETSI EN 302 636-4-1 chapter 8.7.2
* *
* @member nextHeader * @member nextHeader
* @member reserved * @member reserved
* @member headerTST Header type + Header Sub Type * @member headerTST Header type + Header Sub Type
* @member trafficClass * @member trafficClass
* @member flags * @member flags
* @member plLength * @member plLength
* @member maxHopLimit * @member maxHopLimit
* @member reserved2 * @member reserved2
*/ */
type record CommonHeader { type record CommonHeader {
NextHeader nextHeader, NextHeader nextHeader,
UInt4 reserved, UInt4 reserved,
HeaderTST headerTST, HeaderTST headerTST,
TrafficClass trafficClass, TrafficClass trafficClass,
Bit8 flags, Bit8 flags,
UInt16 plLength, // The Codec shall set the length of the paylaod if present UInt16 plLength, // The Codec shall set the length of the paylaod if present
UInt8 maxHopLimit, UInt8 maxHopLimit,
UInt8 reserved2 UInt8 reserved2
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the type of header immediately following the Common Header (4Bits). * @desc Identifies the type of header immediately following the Common Header (4Bits).
*/ */
type enumerated NextHeader { type enumerated NextHeader {
e_any(0), e_any(0),
e_btpA(1), e_btpA(1),
e_btpB(2), e_btpB(2),
e_ipv6(3), e_ipv6(3),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc TrafficClass * @desc TrafficClass
* *
* <pre> * <pre>
* 0 1 2 3 4 5 6 7 * 0 1 2 3 4 5 6 7
* +---+---+---+---+---+---+---+---+ * +---+---+---+---+---+---+---+---+
* |SCF|Ch.| TC ID | * |SCF|Ch.| TC ID |
* | |Off| | * | |Off| |
* +---+---+---+---+---+---+---+---+ * +---+---+---+---+---+---+---+---+
* </pre> * </pre>
* *
* @see ETSI EN 302 636-4-1 chapter 8.7.5 * @see ETSI EN 302 636-4-1 chapter 8.7.5
* *
* @member scf * @member scf
* @member channelOffload * @member channelOffload
* @member tcId * @member tcId
*/ */
type record TrafficClass { type record TrafficClass {
SCF scf, SCF scf,
ChannelOffload channelOffload, ChannelOffload channelOffload,
TcId tcId TcId tcId
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
type enumerated SCF { type enumerated SCF {
e_scfDisabled(0), e_scfDisabled(0),
e_scfEnable (1) e_scfEnable (1)
} with { } with {
variant "FIELDLENGTH(1)" //variant "1 bit" variant "FIELDLENGTH(1)" //variant "1 bit"
} }
type enumerated ChannelOffload { type enumerated ChannelOffload {
e_choffDisabled(0), e_choffDisabled(0),
e_choffEnable (1) e_choffEnable (1)
} with { } with {
variant "FIELDLENGTH(1)" //variant "1 bit" variant "FIELDLENGTH(1)" //variant "1 bit"
} }
type UInt6 TcId; type UInt6 TcId;
} // end group geoNetworkingCommonHeader } // end group geoNetworkingCommonHeader
group geoNetworkingExtendedHeaders { group geoNetworkingExtendedHeaders {
/** /**
* @desc GeoNetworking ExtendedHeader * @desc GeoNetworking ExtendedHeader
* *
* @see ETSI EN 302 636-4-1 chapter 8.3 * @see ETSI EN 302 636-4-1 chapter 8.3
* *
* @member commonHeader * @member commonHeader
* @member gnExtHeader * @member gnExtHeader
*/ */
type union ExtendedHeader { type union ExtendedHeader {
GeoUnicastHeader geoUnicastHeader, GeoUnicastHeader geoUnicastHeader,
TSBHeader tsbHeader, TSBHeader tsbHeader,
SHBHeader shbHeader, SHBHeader shbHeader,
GeoBroadcastHeader geoBroadcastHeader, GeoBroadcastHeader geoBroadcastHeader,
GeoAnycastHeader geoAnycastHeader, GeoAnycastHeader geoAnycastHeader,
BeaconHeader beaconHeader, BeaconHeader beaconHeader,
LSRequestHeader lsRequestHeader, LSRequestHeader lsRequestHeader,
LSReplyHeader lsReplyHeader, LSReplyHeader lsReplyHeader,
AnyHeader saHeader, // FIXME Cannot find description, AnyHeader was used as default AnyHeader saHeader, // FIXME Cannot find description, AnyHeader was used as default
AnyHeader saEosHeader, // FIXME Cannot find description, AnyHeader was used as default AnyHeader saEosHeader, // FIXME Cannot find description, AnyHeader was used as default
AnyHeader anyHeader AnyHeader anyHeader
} with { } with {
variant "" variant ""
} }
/** /**
* @desc The unspecified ANY header. * @desc The unspecified ANY header.
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
*/ */
type record AnyHeader { type record AnyHeader {
UInt16 seqNumber, UInt16 seqNumber,
UInt16 reserved UInt16 reserved
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The BEACON packet header. * @desc The BEACON packet header.
* *
* @see ETSI EN 302 636-4-1 chapter 8.8.6 * @see ETSI EN 302 636-4-1 chapter 8.8.6
* *
* @member commonHeader * @member commonHeader
*/ */
type record BeaconHeader { type record BeaconHeader {
LongPosVector srcPosVector LongPosVector srcPosVector
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The GEOANYCAST packet header. * @desc The GEOANYCAST packet header.
* *
* @see ETSI EN 302 636-4-1 chapter 8.8.5 * @see ETSI EN 302 636-4-1 chapter 8.8.5
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
* @member srcPosVector * @member srcPosVector
* @member geoAreaPosLatitude * @member geoAreaPosLatitude
* @member geoAreaPosLongitude * @member geoAreaPosLongitude
* @member distanceA * @member distanceA
* @member distanceB * @member distanceB
* @member angle * @member angle
* @member reserved * @member reserved
*/ */
type record GeoAnycastHeader { type record GeoAnycastHeader {
UInt16 seqNumber, UInt16 seqNumber,
UInt16 reserved, UInt16 reserved,
LongPosVector srcPosVector, LongPosVector srcPosVector,
Int32 geoAreaPosLatitude, Int32 geoAreaPosLatitude,
Int32 geoAreaPosLongitude, Int32 geoAreaPosLongitude,
UInt16 distanceA, UInt16 distanceA,
UInt16 distanceB, UInt16 distanceB,
UInt16 angle, UInt16 angle,
UInt16 reserved2 UInt16 reserved2
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The GEOBROADCAST packet header. * @desc The GEOBROADCAST packet header.
* *
* @see ETSI EN 302 636-4-1 chapter 8.8.5 * @see ETSI EN 302 636-4-1 chapter 8.8.5
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
* @member srcPosVector * @member srcPosVector
* @member geoAreaPosLatitude * @member geoAreaPosLatitude
* @member geoAreaPosLongitude * @member geoAreaPosLongitude
* @member distanceA * @member distanceA
* @member distanceB * @member distanceB
* @member angle * @member angle
* @member reserved * @member reserved
*/ */
type GeoAnycastHeader GeoBroadcastHeader; type GeoAnycastHeader GeoBroadcastHeader;
/** /**
* @desc The GEOUNICAST packet header. * @desc The GEOUNICAST packet header.
* *
* @see ETSI EN 302 636-4-1 chapter 8.8.2 * @see ETSI EN 302 636-4-1 chapter 8.8.2
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
* @member srcPosVector * @member srcPosVector
* @member dstPosVector * @member dstPosVector
*/ */
type record GeoUnicastHeader { type record GeoUnicastHeader {
UInt16 seqNumber, UInt16 seqNumber,
UInt16 reserved, UInt16 reserved,
LongPosVector srcPosVector, LongPosVector srcPosVector,
ShortPosVector dstPosVector ShortPosVector dstPosVector
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The Location Service (LS) Reply packet header. * @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 chapter 8.8.8
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
* @member srcPosVector * @member srcPosVector
* @member dstPosVector * @member dstPosVector
*/ */
type record LSReplyHeader { type record LSReplyHeader {
UInt16 seqNumber, UInt16 seqNumber,
UInt16 reserved, UInt16 reserved,
LongPosVector srcPosVector, LongPosVector srcPosVector,
ShortPosVector dstPosVector ShortPosVector dstPosVector
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The Location Service (LS) Request packet header. * @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 chapter 8.8.7
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
* @member srcPosVector * @member srcPosVector
* @member gnAddress * @member gnAddress
*/ */
type record LSRequestHeader { type record LSRequestHeader {
UInt16 seqNumber, UInt16 seqNumber,
UInt16 reserved, UInt16 reserved,
LongPosVector srcPosVector, LongPosVector srcPosVector,
GN_Address gnAddress GN_Address gnAddress
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* The Single Hop Broadcast (SHB) packet header. * 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 chapter 8.8.4
* *
* @member srcPosVector * @member srcPosVector
* @member reserved * @member reserved
*/ */
type record SHBHeader { type record SHBHeader {
LongPosVector srcPosVector, LongPosVector srcPosVector,
UInt32 reserved UInt32 reserved
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc The Topologically-Scoped Broadcast (TSB) packet header. * @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 chapter 8.8.3
* *
* @member seqNumber * @member seqNumber
* @member reserved * @member reserved
* @member srcPosVector * @member srcPosVector
*/ */
type record TSBHeader { type record TSBHeader {
UInt16 seqNumber, UInt16 seqNumber,
UInt16 reserved, UInt16 reserved,
LongPosVector srcPosVector LongPosVector srcPosVector
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
group geoNetworkingHeadersSubtypes { group geoNetworkingHeadersSubtypes {
/** /**
* @desc Identifies the header type and the header subtype for ANY. * @desc Identifies the header type and the header subtype for ANY.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record AnyHeaderType { type record AnyHeaderType {
HeaderType headerType(e_any), HeaderType headerType(e_any),
UInt4 headerSubType UInt4 headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for BEACON. * @desc Identifies the header type and the header subtype for BEACON.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record BeaconHeaderType { type record BeaconHeaderType {
HeaderType headerType(e_beacon), HeaderType headerType(e_beacon),
UInt4 headerSubType UInt4 headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for GEOANYCAST. * @desc Identifies the header type and the header subtype for GEOANYCAST.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record GeoAnycastHeaderType { type record GeoAnycastHeaderType {
HeaderType headerType(e_geoAnycast), HeaderType headerType(e_geoAnycast),
HeaderSubTypeGeoAnycast headerSubType HeaderSubTypeGeoAnycast headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for GEOBROADCAST. * @desc Identifies the header type and the header subtype for GEOBROADCAST.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record GeoBroadcastHeaderType { type record GeoBroadcastHeaderType {
HeaderType headerType(e_geoBroadcast), HeaderType headerType(e_geoBroadcast),
HeaderSubTypeGeoBroadcast headerSubType HeaderSubTypeGeoBroadcast headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for GEOUNICAST. * @desc Identifies the header type and the header subtype for GEOUNICAST.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record GeoUnicastHeaderType { type record GeoUnicastHeaderType {
HeaderType headerType(e_geoUnicast), HeaderType headerType(e_geoUnicast),
UInt4 headerSubType UInt4 headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for Location Service LS. * @desc Identifies the header type and the header subtype for Location Service LS.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record LsHeaderType { type record LsHeaderType {
HeaderType headerType(e_locationService), HeaderType headerType(e_locationService),
HeaderSubTypeLs headerSubType HeaderSubTypeLs headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for Service Announcement SA. * @desc Identifies the header type and the header subtype for Service Announcement SA.
* @member headerType * @member headerType
* @member reserved * @member reserved
*/ */
type record SaHeaderType { type record SaHeaderType {
HeaderType headerType(e_serviceAnnouncement), HeaderType headerType(e_serviceAnnouncement),
HeaderSubTypeSa headerSubType HeaderSubTypeSa headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header type and the header subtype for Topologically-Scoped Broadcast TSB. * @desc Identifies the header type and the header subtype for Topologically-Scoped Broadcast TSB.
* @member headerType * @member headerType
* @member headerSubType * @member headerSubType
*/ */
type record TsbHeaderType { type record TsbHeaderType {
HeaderType headerType(e_topologicallyScopedBroadcast), HeaderType headerType(e_topologicallyScopedBroadcast),
HeaderSubTypeTSB headerSubType HeaderSubTypeTSB headerSubType
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the header subtype for GEOANYCAST. * @desc Identifies the header subtype for GEOANYCAST.
*/ */
type enumerated HeaderSubTypeGeoAnycast { type enumerated HeaderSubTypeGeoAnycast {
e_geoAnycastCircle(0), e_geoAnycastCircle(0),
e_geoAnycastRect(1), e_geoAnycastRect(1),
e_geoAnycastElip(2), e_geoAnycastElip(2),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Identifies the header subtype for GEOBROADCAST. * @desc Identifies the header subtype for GEOBROADCAST.
*/ */
type enumerated HeaderSubTypeGeoBroadcast { type enumerated HeaderSubTypeGeoBroadcast {
e_geoBroadcastCircle(0), e_geoBroadcastCircle(0),
e_geoBroadcastRect(1), e_geoBroadcastRect(1),
e_geoBroadcastElip(2), e_geoBroadcastElip(2),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Identifies the header subtype for Topologically-scoped broadcast TSB. * @desc Identifies the header subtype for Topologically-scoped broadcast TSB.
*/ */
type enumerated HeaderSubTypeTSB { type enumerated HeaderSubTypeTSB {
e_singleHop(0), e_singleHop(0),
e_multiHop(1), e_multiHop(1),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Identifies the header subtype for Location Service LS. * @desc Identifies the header subtype for Location Service LS.
*/ */
type enumerated HeaderSubTypeLs { type enumerated HeaderSubTypeLs {
e_lsRequest(0), e_lsRequest(0),
e_lsReply(1), e_lsReply(1),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Identifies the header subtype for Service Announcement SA. * @desc Identifies the header subtype for Service Announcement SA.
*/ */
type enumerated HeaderSubTypeSa { type enumerated HeaderSubTypeSa {
e_sa(0), e_sa(0),
e_saEos(1), e_saEos(1),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Identifies the header type and the header subtype. * @desc Identifies the header type and the header subtype.
* @member anyHdr * @member anyHdr
* @member beaconHdr * @member beaconHdr
* @member geoUnicastHdr * @member geoUnicastHdr
* @member geoAnycastHdr * @member geoAnycastHdr
* @member geoBroadcastHdr * @member geoBroadcastHdr
* @member tsbHdr * @member tsbHdr
* @member lsHdr * @member lsHdr
* @member saHdr * @member saHdr
* @member reserved * @member reserved
*/ */
type union HeaderTST { type union HeaderTST {
AnyHeaderType anyHdr, AnyHeaderType anyHdr,
BeaconHeaderType beaconHdr, BeaconHeaderType beaconHdr,
GeoUnicastHeaderType geoUnicastHdr, GeoUnicastHeaderType geoUnicastHdr,
GeoAnycastHeaderType geoAnycastHdr, GeoAnycastHeaderType geoAnycastHdr,
GeoBroadcastHeaderType geoBroadcastHdr, GeoBroadcastHeaderType geoBroadcastHdr,
TsbHeaderType tsbHdr, TsbHeaderType tsbHdr,
LsHeaderType lsHdr, LsHeaderType lsHdr,
SaHeaderType saHdr, SaHeaderType saHdr,
UInt8 reserved UInt8 reserved
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Identifies the type of the GeoAdhoc header type (4Bits). * @desc Identifies the type of the GeoAdhoc header type (4Bits).
*/ */
type enumerated HeaderType { type enumerated HeaderType {
e_any(0), e_any(0),
e_beacon(1), e_beacon(1),
e_geoUnicast(2), e_geoUnicast(2),
e_geoAnycast(3), e_geoAnycast(3),
e_geoBroadcast(4), e_geoBroadcast(4),
e_topologicallyScopedBroadcast(5), e_topologicallyScopedBroadcast(5),
e_locationService(6), e_locationService(6),
e_serviceAnnouncement(7), e_serviceAnnouncement(7),
e_reserved e_reserved
} with { } with {
variant "FIELDLENGTH(4)" //variant "4 bit" variant "FIELDLENGTH(4)" //variant "4 bit"
} }
/** /**
* @desc Long Position Vector * @desc Long Position Vector
* *
* <pre> * <pre>
* 0 1 2 3 * 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 * 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 | * | GN_ADDR |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | TST | * | TST |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Lat | * | Lat |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Long | * | Long |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |P| S | H | * |P| S | H |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* </pre> * </pre>
* *
* @see ETSI EN 302 636-4-1 chapter 8.5.2 * @see ETSI EN 302 636-4-1 chapter 8.5.2
* *
* @member gnAddr * @member gnAddr
* @member timestamp_ * @member timestamp_
* @member latitude * @member latitude
* @member longitude * @member longitude
* @member pai Position Accuracy Indicator * @member pai Position Accuracy Indicator
* @member speed * @member speed
* @member heading * @member heading
*/ */
type record LongPosVector { type record LongPosVector {
GN_Address gnAddr, GN_Address gnAddr,
UInt32 timestamp_, UInt32 timestamp_,
Int32 latitude, Int32 latitude,
Int32 longitude, Int32 longitude,
Bit1 pai, Bit1 pai,
Int15 speed, Int15 speed,
UInt16 heading UInt16 heading
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Short Position Vector * @desc Short Position Vector
* *
* <pre> * <pre>
* 0 1 2 3 * 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 * 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 | * | GN_ADDR |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | TST | * | TST |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Lat | * | Lat |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Long | * | Long |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* </pre> * </pre>
* *
* @see ETSI EN 302 636-4-1 chapter 8.5.3 * @see ETSI EN 302 636-4-1 chapter 8.5.3
* *
* @member gnAddr * @member gnAddr
* @member timestamp * @member timestamp
* @member latitude * @member latitude
* @member longitude * @member longitude
*/ */
type record ShortPosVector { type record ShortPosVector {
GN_Address gnAddr, GN_Address gnAddr,
UInt32 timestamp_, UInt32 timestamp_,
Int32 latitude, Int32 latitude,
Int32 longitude Int32 longitude
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
group geoNetworkingAddress { group geoNetworkingAddress {
/** /**
* @desc GeoNetworking address * @desc GeoNetworking address
* *
* <pre> * <pre>
* 0 1 2 3 * 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 * 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| S_T | S_CC | M_ID |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | M_ID | * | M_ID |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* </pre> * </pre>
* *
* @see ETSI EN 302 636-4-1 chapter 6.2 * @see ETSI EN 302 636-4-1 chapter 6.2
* *
* @member typeOfAddress * @member typeOfAddress
* @member stationType * @member stationType
* @member mid * @member mid
*/ */
type record GN_Address { type record GN_Address {
TypeOfAddress typeOfAddress, TypeOfAddress typeOfAddress,
StationType stationType, StationType stationType,
UInt10 stationCountryCode, UInt10 stationCountryCode,
Oct6 mid Oct6 mid
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
group geoNetworkingAddressSubtypes { group geoNetworkingAddressSubtypes {
/** /**
* @desc Identifies the ITS station (5Bits). * @desc Identifies the ITS station (5Bits).
*/ */
type enumerated StationType { type enumerated StationType {
e_unknown(0), e_unknown(0),
e_pedestrian(1), e_pedestrian(1),
e_cyclist(2), e_cyclist(2),
e_moped(3), e_moped(3),
e_motorcycle(4), e_motorcycle(4),
e_passengerCar(5), e_passengerCar(5),
e_bus(6), e_bus(6),
e_lightTruck(7), e_lightTruck(7),
e_heavyTruck(8), e_heavyTruck(8),
e_trailer(9), e_trailer(9),
e_specialVehicle(10), e_specialVehicle(10),
e_tram(11), e_tram(11),
e_roadSideUnit(15) e_roadSideUnit(15)
} with { } with {
variant "FIELDLENGTH(5)" //variant "5 bit" variant "FIELDLENGTH(5)" //variant "5 bit"
} }
/** /**
* @desc Distinguish between manually configured * @desc Distinguish between manually configured
* network address and the initial GeoNetwork address (1Bit). * network address and the initial GeoNetwork address (1Bit).
*/ */
type enumerated TypeOfAddress { type enumerated TypeOfAddress {
e_manual(1), e_manual(1),
e_initial(0) e_initial(0)
} with { } with {
variant "FIELDLENGTH(1)" //variant "1 bit" variant "FIELDLENGTH(1)" //variant "1 bit"
} }
} // end group geoNetworkingAddressSubtypes } // end group geoNetworkingAddressSubtypes
} // end group geoNetworkingAddress } // end group geoNetworkingAddress
} // end group geoNetworkingHeadersSubtypes } // end group geoNetworkingHeadersSubtypes
} // end group geoNetworkingExtendedHeaders } // end group geoNetworkingExtendedHeaders
} // end group geoNetworkingHeader } // end group geoNetworkingHeader
group geoNwPicsTypes { group geoNwPicsTypes {
/** /**
* @desc The GeoUnicast forwarding algorithm. * @desc The GeoUnicast forwarding algorithm.
*/ */
type enumerated GeoUnicastForwardingAlgorithm { type enumerated GeoUnicastForwardingAlgorithm {
e_unspecified(0), e_unspecified(0),
e_greedy(1), e_greedy(1),
e_cbf(2) e_cbf(2)
} }
/** /**
* @desc The GeoBroadcast forwarding algorithm. * @desc The GeoBroadcast forwarding algorithm.
*/ */
type enumerated GeoBroadcastForwardingAlgorithm { type enumerated GeoBroadcastForwardingAlgorithm {
e_unspecified(0), e_unspecified(0),
e_simple(1), e_simple(1),
e_cbf(2), e_cbf(2),
e_advanced(3) e_advanced(3)
} }
/** /**
* @desc GN address configuration method. * @desc GN address configuration method.
*/ */
type enumerated GnAddressConfigurationMethod { type enumerated GnAddressConfigurationMethod {
e_auto(0), e_auto(0),
e_managed(1), e_managed(1),
e_anonymous(2) e_anonymous(2)
} }
} // end geoNwPicsTypes } // end geoNwPicsTypes
group utPrimitives { group utPrimitives {
/** /**
* @desc Upper Tester message to initialize IUT * @desc Upper Tester message to initialize IUT
* @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use
*/ */
type record UtGnInitialize { type record UtGnInitialize {
Oct8 hashedId8 Oct8 hashedId8
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Upper Tester results message of the GeoNetworking IUT * @desc Upper Tester results message of the GeoNetworking IUT
* @member utGnInitialize - * @member utGnInitialize -
* @member utGnTriggerResult - * @member utGnTriggerResult -
* @member utAutoInteropTriggerResult - * @member utAutoInteropTriggerResult -
* @member utGnChangePositionResult - * @member utGnChangePositionResult -
*/ */
type union UtGnResults { type union UtGnResults {
boolean utGnInitializeResult, boolean utGnInitializeResult,
boolean utGnTriggerResult, boolean utGnTriggerResult,
boolean utAutoInteropTriggerResult, // FIXME Remove UtAutoInteropTrigger from GN component, create an AutoInterop component boolean utAutoInteropTriggerResult, // FIXME Remove UtAutoInteropTrigger from GN component, create an AutoInterop component
boolean utGnChangePositionResult boolean utGnChangePositionResult
} with { } with {
variant "" variant ""
} // End of type UtGnResults } // End of type UtGnResults
/** /**
* @desc AutoInterop UpperTester trigger * @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). * @member utRadioOnOff Set to true to power on the radio (on-link mode), false to power off the radio (off-link).
*/ */
type union UtAutoInteropTrigger { type union UtAutoInteropTrigger {
boolean utRadioOnOff boolean utRadioOnOff
} with { } with {
variant "" variant ""
} // End of type UtAutoInteropTrigger } // End of type UtAutoInteropTrigger
/** /**
* @desc Upper Tester message to change the position of IUT. Values a relatives * @desc Upper Tester message to change the position of IUT. Values a relatives
*/ */
type record UtGnChangePosition { type record UtGnChangePosition {
Int32 latitude, Int32 latitude,
Int32 longitude, Int32 longitude,
Int32 elevation Int32 elevation
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc UT primitives for GeoNetworking * @desc UT primitives for GeoNetworking
* @member geoUnicast - * @member geoUnicast -
* @member geoBroadcast - * @member geoBroadcast -
* @member geoAnycast - * @member geoAnycast -
* @member shb - * @member shb -
* @member tsb - * @member tsb -
* @member changePosition - * @member changePosition -
* @member checkPacket - * @member checkPacket -
*/ */
type union UtGnTrigger { type union UtGnTrigger {
GenerateGeoUnicastMessage geoUnicast, GenerateGeoUnicastMessage geoUnicast,
GenerateGeoBroadcastMessage geoBroadcast, GenerateGeoBroadcastMessage geoBroadcast,
GenerateGeoAnycastMessage geoAnycast, GenerateGeoAnycastMessage geoAnycast,
GenerateSHBMessage shb, GenerateSHBMessage shb,
GenerateTSBMessage tsb GenerateTSBMessage tsb
} with { } with {
variant "" variant ""
} }
/** /**
* @desc UT primitive for IUT to send a GeoUnicast packet * @desc UT primitive for IUT to send a GeoUnicast packet
* @member gnAddress Destination of the packet * @member gnAddress Destination of the packet
* @member lifetime Lifetime of the packet * @member lifetime Lifetime of the packet
* @member trafficClass Traffic class of the packet * @member trafficClass Traffic class of the packet
* @member payload GnRawPayload of the packet * @member payload GnRawPayload of the packet
*/ */
type record GenerateGeoUnicastMessage { type record GenerateGeoUnicastMessage {
GN_Address gnAddress, GN_Address gnAddress,
UInt16 lifetime, UInt16 lifetime,
TrafficClass trafficClass, TrafficClass trafficClass,
GnRawPayload payload GnRawPayload payload
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc UT primitive for IUT to send a GeoBroadcast packet * @desc UT primitive for IUT to send a GeoBroadcast packet
* @member shape Shape of the area * @member shape Shape of the area
* @member lifetime Lifetime of the packet * @member lifetime Lifetime of the packet
* @member trafficClass Traffic class of the packet * @member trafficClass Traffic class of the packet
* @member area Destination GeoArea * @member area Destination GeoArea
* @member payload GnRawPayload of the packet * @member payload GnRawPayload of the packet
*/ */
type record GenerateGeoBroadcastMessage { type record GenerateGeoBroadcastMessage {
GeoShape shape, GeoShape shape,
UInt16 lifetime, UInt16 lifetime,
TrafficClass trafficClass, TrafficClass trafficClass,
UInt24 reserved, UInt24 reserved,
Area area, Area area,
GnRawPayload payload GnRawPayload payload
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc UT primitive for IUT to send a Geoanycast packet * @desc UT primitive for IUT to send a Geoanycast packet
*/ */
type GenerateGeoBroadcastMessage GenerateGeoAnycastMessage; type GenerateGeoBroadcastMessage GenerateGeoAnycastMessage;
/** /**
* @desc UT primitive for IUT to send a SHB packet * @desc UT primitive for IUT to send a SHB packet
* @member trafficClass Traffic class of the packet * @member trafficClass Traffic class of the packet
* @member payload GnRawPayload of the packet * @member payload GnRawPayload of the packet
*/ */
type record GenerateSHBMessage { type record GenerateSHBMessage {
TrafficClass trafficClass, TrafficClass trafficClass,
GnRawPayload payload GnRawPayload payload
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc UT primitive for IUT to send a SHB packet * @desc UT primitive for IUT to send a SHB packet
* @member nbHops Number of Hops * @member nbHops Number of Hops
* @member lifetime Lifetime of the packet * @member lifetime Lifetime of the packet
* @member trafficClass Traffic class of the packet * @member trafficClass Traffic class of the packet
* @member payload GnRawPayload of the packet * @member payload GnRawPayload of the packet
*/ */
type record GenerateTSBMessage { type record GenerateTSBMessage {
UInt8 nbHops, UInt8 nbHops,
UInt16 lifetime, UInt16 lifetime,
TrafficClass trafficClass, TrafficClass trafficClass,
GnRawPayload payload GnRawPayload payload
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc Upper Tester message to check Upper Layer message transmission on GN IUT * @desc Upper Tester message to check Upper Layer message transmission on GN IUT
*/ */
type record UtGnEventInd { type record UtGnEventInd {
// GeoNetworkingPdu gnPdu // GeoNetworkingPdu gnPdu
GnRawPayload rawPayload GnRawPayload rawPayload
} with { } with {
variant "FIELDORDER(msb)" variant "FIELDORDER(msb)"
} }
/** /**
* @desc List of Upper Tester messages to check Upper Layer message transmission on GN IUT * @desc List of Upper Tester messages to check Upper Layer message transmission on GN IUT
*/ */
type record of UtGnEventInd UtGnEventIndList; type record of UtGnEventInd UtGnEventIndList;
} // end utPrimitives } // end utPrimitives
with { with {
encode "UpperTester"; encode "UpperTester";
variant "" variant ""
} }
group acPrimitives { group acPrimitives {
/** /**
* @desc TA primitives for GeoNetworking * @desc TA primitives for GeoNetworking
* @member startBeaconing - * @member startBeaconing -
* @member stopBeaconing - * @member stopBeaconing -
* @member startPassBeaconing - * @member startPassBeaconing -
* @member stopPassBeaconing - * @member stopPassBeaconing -
* @member startBeaconingMultipleNeighbour - * @member startBeaconingMultipleNeighbour -
* @member stopBeaconingMultipleNeighbour - * @member stopBeaconingMultipleNeighbour -
* @member getLongPosVector - * @member getLongPosVector -
*/ */
type union AcGnPrimitive { type union AcGnPrimitive {
AcStartBeaconing startBeaconing, AcStartBeaconing startBeaconing,
AcStopBeaconing stopBeaconing, AcStopBeaconing stopBeaconing,
AcStartPassBeaconing startPassBeaconing, AcStartPassBeaconing startPassBeaconing,
AcStopPassBeaconing stopPassBeaconing, AcStopPassBeaconing stopPassBeaconing,
AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour, AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour,
AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour, AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour,
AcGetLongPosVector getLongPosVector AcGetLongPosVector getLongPosVector
} with { } with {
variant "" variant ""
} }
/** /**
* @desc Primitive for receiveing response from TA * @desc Primitive for receiveing response from TA
* @member getLongPosVector * @member getLongPosVector
*/ */
type union AcGnResponse { type union AcGnResponse {
LongPosVector getLongPosVector, LongPosVector getLongPosVector,
AcGnResponseFailure failure AcGnResponseFailure failure
} }
with { with {
variant "" variant ""
encode(getLongPosVector) "LibItsGeoNetworking" encode(getLongPosVector) "LibItsGeoNetworking"
} }
type record AcGnResponseFailure { type record AcGnResponseFailure {
boolean failure boolean failure
} }
/** /**
* @desc Primitive for TA to start sending beacons for the test component * @desc Primitive for TA to start sending beacons for the test component
* @member beaconHeader Beacon template * @member beaconHeader Beacon template
*/ */
type record AcStartBeaconing { type record AcStartBeaconing {
GeoNetworkingPdu beaconPacket GeoNetworkingPdu beaconPacket
} }
with { with {
encode(beaconPacket) "LibItsGeoNetworking" encode(beaconPacket) "LibItsGeoNetworking"
} }
/** /**
* @desc Primitive for TA to stop sending beacons for the test component * @desc Primitive for TA to stop sending beacons for the test component
*/ */
type record AcStopBeaconing { type record AcStopBeaconing {
} }
/** /**
* @desc Primitive for TA to start enqueueing received beacons * @desc Primitive for TA to start enqueueing received beacons
* @member beaconHeader Filter * @member beaconHeader Filter
*/ */
type record AcStartPassBeaconing { type record AcStartPassBeaconing {
BeaconHeader beaconHeader BeaconHeader beaconHeader
} }
with { with {
encode(beaconHeader) "LibItsGeoNetworking" encode(beaconHeader) "LibItsGeoNetworking"
}; };
/** /**
* @desc Primitive for TA to stop enqueueing received beacons * @desc Primitive for TA to stop enqueueing received beacons
*/ */
type record AcStopPassBeaconing { type record AcStopPassBeaconing {
} }
/** /**
* @desc Primitive for TA to start sending beacons for multiple neighbours * @desc Primitive for TA to start sending beacons for multiple neighbours
* @member beaconHeader Beacon template * @member beaconHeader Beacon template
* @member numberOfNeighbour Number of neighbours to simulate * @member numberOfNeighbour Number of neighbours to simulate
*/ */
type record AcStartBeaconingMultipleNeighbour { type record AcStartBeaconingMultipleNeighbour {
GeoNetworkingPdu beaconPacket, GeoNetworkingPdu beaconPacket,
integer numberOfNeighbour integer numberOfNeighbour
} }
with { with {
encode(beaconPacket) "LibItsGeoNetworking" encode(beaconPacket) "LibItsGeoNetworking"
}; };
/** /**
* @desc Primitive for TA to stop sending beacons for multiple neighbours * @desc Primitive for TA to stop sending beacons for multiple neighbours
*/ */
type record AcStopBeaconingMultipleNeighbour { type record AcStopBeaconingMultipleNeighbour {
} }
/** /**
* @desc Primitive for retrieving the position vector corresponding to a specific GN address * @desc Primitive for retrieving the position vector corresponding to a specific GN address
* @member gnAddress GN address to be searched * @member gnAddress GN address to be searched
*/ */
type record AcGetLongPosVector { type record AcGetLongPosVector {
GN_Address gnAddress GN_Address gnAddress
} }
with { with {
encode(gnAddress) "LibItsGeoNetworking" encode(gnAddress) "LibItsGeoNetworking"
}; };
} // end acPrimitives } // end acPrimitives
with { with {
variant "" variant ""
encode "AdapterControl" encode "AdapterControl"
} }
} }
with { with {
variant "" variant ""
encode "LibItsGeoNetworking" encode "LibItsGeoNetworking"
} }