Commit 67092010 authored by tepelmann's avatar tepelmann
Browse files

Adapted definitions to reflect the specification.

parent f967f47c
Loading
Loading
Loading
Loading
+176 −53
Original line number Original line Diff line number Diff line
@@ -9,8 +9,8 @@ BEGIN
--	The root data frame for cooperative awareness messages
--	The root data frame for cooperative awareness messages
CoopAwareness ::= SEQUENCE {
CoopAwareness ::= SEQUENCE {


	-- protocolVersionCAM fixed to 0
	-- protocolVersion fixed to 0
	protocolVersionCAM		INTEGER(0..255),
	protocolVersion		INTEGER(0..255),


	-- message type ID associated to CAM = 0
	-- message type ID associated to CAM = 0
	messageID 		INTEGER(0..255),
	messageID 		INTEGER(0..255),
@@ -18,7 +18,8 @@ CoopAwareness ::= SEQUENCE {
	-- milliseconds elapsed since midnight January 1st, 1970 UTC
	-- milliseconds elapsed since midnight January 1st, 1970 UTC
	generationTime	INTEGER (0.. 281474976710655),
	generationTime	INTEGER (0.. 281474976710655),


	stationId	INTEGER(0..4294967295),
    -- STF405: introduced type StationID
	stationId	StationID,


	referencePosition ReferencePosition,
	referencePosition ReferencePosition,


@@ -33,50 +34,142 @@ CoopAwareness ::= SEQUENCE {


	-- tagged list has optional and mandatory entries depending on the profile of the 
	-- tagged list has optional and mandatory entries depending on the profile of the 
	-- ITS station, this is defined in a separate document
	-- ITS station, this is defined in a separate document
	taggedList	SET SIZE(0..32) OF TaggedValue,
	-- STF405: replace taggedList with profile as described in chapter 7.2
	-- taggedList	SET SIZE(0..32) OF TaggedValue,
	profile ProfileParameters,


   ...
   ...
}
}


TaggedValue ::= CHOICE {
ProfileParameters ::= CHOICE {
    basicVehicle            [1] BasicVehicle,
    basicIRS                [2] NULL,
    emergencyVehicle        [3] EmergencyVehicle,
    publicTransportVehicle  [4] PublicTransportVehicle,
    ...
}

-- STF405: replaced by the different profiles BasicVehicle, BasicIRS, EmergencyVehicle and PublicTransportVehicle
--TaggedValue ::= CHOICE {
--	 vehicleType           			 [1] VehicleType,
--	 publicVehicleType     			 [2] PublicVehicleType,
--	 lightBarInUse         			 [3] LightBarInUse,
--	 sireneInUse           			 [4] SireneInUse,
--	 emergencyResponseType 			 [5] EmergencyResponseType,
--	 stationLength         			 [6] StationLength,
--	 stationLengthConfidence		 [7] Confidence,
--	 stationWidth          			 [8] StationWidth,
--	 stationWidthConfidence			 [9] Confidence,
--	 vehicleSpeed          			[10] VehicleSpeed,
--	 vehicleSpeedConfidence			[11] Confidence,
--	 longAcceleration      			[12] LongAcceleration,
--	 longAccelConfidence   			[13] Confidence,
--	 yawRate               			[14] YawRate,
--	 yawRateConfidence     			[15] Confidence,
--	 accelerationControl   			[16] AccelerationControl,
--	 exteriorLights        			[17] ExteriorLights,
--	 causeCode             			[18] CauseCode,
--	 ambientAirTemperature 			[19] AmbientAirTemperature,
--	 speed                 			[20] Speed,
--	 pTLineDescription     			[22] PTLineDescription,
--	 turnAdvice            			[23] TurnAdvice,
--	 distanceToStopLine    			[24] DistanceToStopLine,
--	 distanceToStoLineConfidence	[25] Confidence,
--	 occupancy             			[26] Occupancy,
--	 scheduleDeviation    			[27] ScheduleDeviation,
--	 trafficLightPriority 			[28] TrafficLightPriority,
--	 doorOpen            			[29] DoorOpen,
--	 dataReference       			[30] DataReference,
--	 posConfidenceElli   			[31] PosConfidenceEllipse,
--	 curvature           			[32] Curvature,
--	 curvatureGradient     			[33] CurvatureGradient,
--	 curvatureConfidence   			[34] Confidence,
--	 wiperSystemFront      			[35] WiperSystemFront,
--	 crashStatus           			[36] CrashStatus,
--	 headingConfidence     			[37] Confidence,
--	 dangerousGoods			 		[38] DangerousGoods,
--	 ...
--	}

-- STF405: introduced as replacement for TaggedValue to reflect the profiles
BasicVehicle ::= SEQUENCE {
     vehicleType                     [1] VehicleType,
     vehicleType                     [1] VehicleType,
	 publicVehicleType     			 [2] PublicVehicleType,
     stationLength                   [6] StationLength,
	 lightBarInUse         			 [3] LightBarInUse,
     stationLengthConfidence         [7] Confidence OPTIONAL,
	 sireneInUse           			 [4] SireneInUse,
     stationWidth                    [8] StationWidth,
     stationWidthConfidence          [9] Confidence OPTIONAL,
     vehicleSpeed                   [10] VehicleSpeed,
     vehicleSpeedConfidence         [11] Confidence,
     longAcceleration               [12] LongAcceleration,
     accelerationControl            [16] AccelerationControl,
     exteriorLights                 [17] ExteriorLights,
     turnAdvice                     [23] TurnAdvice OPTIONAL,
     distanceToStopLine             [24] DistanceToStopLine OPTIONAL,
     occupancy                      [26] Occupancy OPTIONAL,
     doorOpen                       [29] DoorOpen OPTIONAL,
     posConfidenceEllipse           [31] PosConfidenceEllipse,
     curvature                      [32] Curvature,
     curvatureGradient              [33] CurvatureGradient OPTIONAL,
     crashStatus                    [36] CrashStatus OPTIONAL,
     headingConfidence              [37] Confidence,
     dangerousGoods             [38] DangerousGoods OPTIONAL,
     ...
}

-- STF405: introduced as replacement for TaggedValue to reflect the profiles
EmergencyVehicle ::= SEQUENCE {
     vehicleType                     [1] VehicleType,
     lightBarInUse                   [3] LightBarInUse OPTIONAL,
     sireneInUse                     [4] SireneInUse OPTIONAL,
     emergencyResponseType           [5] EmergencyResponseType,
     emergencyResponseType           [5] EmergencyResponseType,
     stationLength                   [6] StationLength,
     stationLength                   [6] StationLength,
	 stationLengthConfidence		 [7] Confidence,
     stationLengthConfidence         [7] Confidence OPTIONAL,
     stationWidth                    [8] StationWidth,
     stationWidth                    [8] StationWidth,
	 stationWidthConfidence			 [9] Confidence,
     stationWidthConfidence          [9] Confidence OPTIONAL,
     vehicleSpeed                   [10] VehicleSpeed,
     vehicleSpeed                   [10] VehicleSpeed,
     vehicleSpeedConfidence         [11] Confidence,
     vehicleSpeedConfidence         [11] Confidence,
     longAcceleration               [12] LongAcceleration,
     longAcceleration               [12] LongAcceleration,
	 longAccelConfidence   			[13] Confidence,
	 yawRate               			[14] YawRate,
	 yawRateConfidence     			[15] Confidence,
     accelerationControl            [16] AccelerationControl,
     accelerationControl            [16] AccelerationControl,
     exteriorLights                 [17] ExteriorLights,
     exteriorLights                 [17] ExteriorLights,
	 causeCode             			[18] CauseCode,
     turnAdvice                     [23] TurnAdvice OPTIONAL,
	 ambientAirTemperature 			[19] AmbientAirTemperature,
     distanceToStopLine             [24] DistanceToStopLine OPTIONAL,
	 speed                 			[20] Speed, --other speed than vehicle speed
     occupancy                      [26] Occupancy OPTIONAL,
	 -- heading               			[21] Heading,
     doorOpen                       [29] DoorOpen OPTIONAL,
	 pTLineDescription     			[22] PTLineDescription,
     posConfidenceEllipse           [31] PosConfidenceEllipse,
	 turnAdvice            			[23] TurnAdvice,
	 distanceToStopLine    			[24] DistanceToStopLine,
	 distanceToStoLineConfidence	[25] Confidence,
	 occupancy             			[26] Occupancy,
	 scheduleDeviation    			[27] ScheduleDeviation,
	 trafficLightPriority 			[28] TrafficLightPriority,
	 doorOpen            			  	[29] DoorOpen,
	 dataReference       			  	[30] DataReference,
	 posConfidenceElli   			  	[31] PosConfidenceEllipse,
     curvature                      [32] Curvature,
     curvature                      [32] Curvature,
	 curvatureGradient     			[33] CurvatureGradient,
     curvatureGradient              [33] CurvatureGradient OPTIONAL,
	 curvatureConfidence   			[34] Confidence,
     crashStatus                    [36] CrashStatus OPTIONAL,
	 wiperSystemFront      			[35] WiperSystemFront,
	 crashStatus           			[36] CrashStatus,
     headingConfidence              [37] Confidence,
     headingConfidence              [37] Confidence,
	 dangerousGoods			 			[38] DangerousGoods,
     dangerousGoods                 [38] DangerousGoods OPTIONAL,
     ...
}

-- STF405: introduced as replacement for TaggedValue to reflect the profiles
PublicTransportVehicle ::= SEQUENCE {
     vehicleType                     [1] VehicleType,
     publicVehicleType               [2] PublicVehicleType,
     stationLength                   [6] StationLength,
     stationLengthConfidence         [7] Confidence OPTIONAL,
     stationWidth                    [8] StationWidth,
     stationWidthConfidence          [9] Confidence OPTIONAL,
     vehicleSpeed                   [10] VehicleSpeed,
     vehicleSpeedConfidence         [11] Confidence,
     longAcceleration               [12] LongAcceleration,
     accelerationControl            [16] AccelerationControl,
     exteriorLights                 [17] ExteriorLights,
     pTLineDescription              [22] PTLineDescription OPTIONAL,
     turnAdvice                     [23] TurnAdvice OPTIONAL,
     distanceToStopLine             [24] DistanceToStopLine OPTIONAL,
     occupancy                      [26] Occupancy OPTIONAL,
     scheduleDeviation              [27] ScheduleDeviation OPTIONAL,
     trafficLightPriority           [28] TrafficLightPriority OPTIONAL,
     doorOpen                       [29] DoorOpen OPTIONAL,
     posConfidenceEllipse           [31] PosConfidenceEllipse,
     curvature                      [32] Curvature,
     curvatureGradient              [33] CurvatureGradient OPTIONAL,
     crashStatus                    [36] CrashStatus OPTIONAL,
     headingConfidence              [37] Confidence,
     dangerousGoods                 [38] DangerousGoods OPTIONAL,
     ...
     ...
}
}


@@ -109,7 +202,7 @@ DangerousGoods ::= INTEGER (0..8191)


Dimension ::= INTEGER (0..16383)
Dimension ::= INTEGER (0..16383)


Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28800)
Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28799)


Distance ::= INTEGER (0..65535) -- multiples of 1.0m
Distance ::= INTEGER (0..65535) -- multiples of 1.0m


@@ -164,12 +257,18 @@ Longitude ::= SEQUENCE {
Occupancy ::= INTEGER (0..255) 
Occupancy ::= INTEGER (0..255) 


PosConfidenceEllipse ::= SEQUENCE {
PosConfidenceEllipse ::= SEQUENCE {
  semiMajorConfidence   PositionConfidence,   -- confidence of the ellipse's major semi-axes
-- STF405: changed type from PositionConfidence to Confidence
  semiMinorConfidence   PositionConfidence,   -- confidence of the ellipse's minor semi-axes
--  semiMajorConfidence   PositionConfidence,   
  semiMajorConfidence   Confidence,   -- confidence of the ellipse's major semi-axes
-- STF405: changed type from PositionConfidence to Confidence
--  semiMinorConfidence   PositionConfidence,   
  semiMinorConfidence   Confidence,   -- confidence of the ellipse's minor semi-axes
  semiMajorOrientation   Direction
  semiMajorOrientation   Direction
} 
} 


PositionConfidence ::= Confidence -- 2^PositionConfidence * 0.1m 
-- STF405: deleted as there is not need for this special type, all occurencies can be expressed directly by using Confidence
--PositionConfidence ::= Confidence 
-- 2^PositionConfidence * 0.1m 


Priority ::= INTEGER(0..7) 
Priority ::= INTEGER(0..7) 


@@ -187,11 +286,27 @@ ReferencePosition ::= SEQUENCE {
  elevation Elevation,
  elevation Elevation,
  heading [1] Direction OPTIONAL, -- if relevant for position reference
  heading [1] Direction OPTIONAL, -- if relevant for position reference
  streetName [2] StreetName OPTIONAL,
  streetName [2] StreetName OPTIONAL,
  positionConfidence [3] PositionConfidence OPTIONAL, -- ommitted for fixed position, e.g. infrastructure location
-- STF405: changed optionallity due to introduction of new PositionConfidence type
  elevationConfidence [4] Confidence OPTIONAL, -- ommitted for fixed position, e.g. infrastructure location
--  positionConfidence [3] PositionConfidence OPTIONAL, 
  positionConfidence [3] PositionConfidence, -- ommitted for fixed position, e.g. infrastructure location
-- STF405: changed optionallity due to introduction of new PositionConfidence type
--  elevationConfidence [4] Confidence OPTIONAL, 
  elevationConfidence [4] ElevationConfidence, -- ommitted for fixed position, e.g. infrastructure location
  roadSegmentID [5] RoadSegmentID OPTIONAL
  roadSegmentID [5] RoadSegmentID OPTIONAL
}
}


-- STF405: introduced
PositionConfidence ::= CHOICE {
  mobile Confidence,
  stationary NULL	-- omitted for fixed position, e.g. infrastructure location
}

-- STF405: introduced
ElevationConfidence ::= CHOICE {
  mobile Confidence,
  stationary NULL	-- omitted for fixed position, e.g. infrastructure location
}

RoadSegmentID ::= INTEGER (0..99999999) 
RoadSegmentID ::= INTEGER (0..99999999) 


RouteRef ::= IA5String(SIZE(0..32)) 
RouteRef ::= IA5String(SIZE(0..32)) 
@@ -209,6 +324,9 @@ SireneInUse ::= SimpleSystemState


Speed ::= INTEGER (-32765..32765)  -- multiples of 0.01 m/s 
Speed ::= INTEGER (-32765..32765)  -- multiples of 0.01 m/s 


-- STF405: introduced
StationID ::=   INTEGER(0..4294967295)

StationLength ::= Dimension 
StationLength ::= Dimension 


StationWidth ::= Dimension 
StationWidth ::= Dimension 
@@ -247,7 +365,12 @@ WiperSystemFront ::= ENUMERATED {
  washerActive (4)
  washerActive (4)
}
}


YawRate ::= INTEGER (-32765..32765) 
-- STF405: changed
-- YawRate ::= INTEGER (-32765..32765) 
YawRate ::= SEQUENCE {
  isLeft BOOLEAN,                 	-- true if yaw is to the left
  yawRate  INTEGER (0..32765)  		-- multiples of 0.01deg/s
}


END
END
+89 −71
Original line number Original line Diff line number Diff line
@@ -6,6 +6,10 @@ DEFINITIONS AUTOMATIC TAGS ::=


BEGIN
BEGIN


IMPORTS 
    ProfileParameters, StationID 
FROM CAM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cam (2) version1 (1) };

--STF405: doubled defined, renamed
--STF405: doubled defined, renamed
--DecentralizedSituation ::= SEQUENCE {
--DecentralizedSituation ::= SEQUENCE {
DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {
DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {
@@ -16,7 +20,7 @@ DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {


DecentralizedSituationManagement::= SEQUENCE {
DecentralizedSituationManagement::= SEQUENCE {
	-- protocol version number of the DENM
	-- protocol version number of the DENM
	protocolVersionDENM	INTEGER (0..255),
	protocolVersion	INTEGER (0..255),
	-- unique message type identifier assigned to the DENM		
	-- unique message type identifier assigned to the DENM		
	messageID	MessageID,	-- 1 byte 
	messageID	MessageID,	-- 1 byte 
	-- time at which an originator  ITS  station generates the DENM
	-- time at which an originator  ITS  station generates the DENM
@@ -24,7 +28,10 @@ DecentralizedSituationManagement::= SEQUENCE {
	-- unique identifier about an event from one originator ITS station, combination of node ID and a sequence number
	-- unique identifier about an event from one originator ITS station, combination of node ID and a sequence number
	actionID	ActionID,	-- 6 byte
	actionID	ActionID,	-- 6 byte
	-- version of the DENM indicating updates from the same originator ITS station; value of 255 is used for the  cancellation message sent from the originator ITS station
	-- version of the DENM indicating updates from the same originator ITS station; value of 255 is used for the  cancellation message sent from the originator ITS station
	dataVersion	INTEGER(0..255),  	-- 1 byte
	
	-- STF405: changed inline definition to explicit
	-- dataVersion	INTEGER(0..255),
	dataVersion	DataVersion,  	-- 1 byte
	-- time when the DENM is deleted from the DEN management and the inforamtion related to the event is set as invalid.. If it is not provided, it indicates that the expiry time is unkown by the originator ITS station	
	-- time when the DENM is deleted from the DEN management and the inforamtion related to the event is set as invalid.. If it is not provided, it indicates that the expiry time is unkown by the originator ITS station	
	expiryTime	TimeStamp  	OPTIONAL, 	-- 6 byte
	expiryTime	TimeStamp  	OPTIONAL, 	-- 6 byte
	frequency	INTEGER (0..255)	OPTIONAL, 	--1 byte
	frequency	INTEGER (0..255)	OPTIONAL, 	--1 byte
@@ -39,10 +46,7 @@ DecentralizedSituation::= SEQUENCE {
	-- traffic status near the event position, defined based on [3], TPEG table tec001 
	-- traffic status near the event position, defined based on [3], TPEG table tec001 
	trafficFlowEffect 	TrafficFlowEffect	OPTIONAL,	 -- 1 byte. 
	trafficFlowEffect 	TrafficFlowEffect	OPTIONAL,	 -- 1 byte. 
	-- event direct cause and sub cause description as defined in tab6.1 and in [3]
	-- event direct cause and sub cause description as defined in tab6.1 and in [3]
	situation	SEQUENCE {
	situation	Situation,
		cause 	CauseCode, 	-- 1 byte
		subCause	SubCauseCode	-- 1 byte
	},
	-- linked cause if information is available.
	-- linked cause if information is available.
	linkedCause	Situation		OPTIONAL,	-- 2 Byte, 
	linkedCause	Situation		OPTIONAL,	-- 2 Byte, 
	-- severity value of the event, defined in [3], TPEG table tec003			
	-- severity value of the event, defined in [3], TPEG table tec003			
@@ -53,16 +57,23 @@ DecentralizedSituation::= SEQUENCE {
		-- event mobility description, set to TRUE if the event is in mobility 
		-- event mobility description, set to TRUE if the event is in mobility 
		eventmobility	BOOLEAN,
		eventmobility	BOOLEAN,
		-- whether the event is caused by the originator ITS station, set to TRUE if it is the case. FALSE if it is a location that may cause danger
		-- whether the event is caused by the originator ITS station, set to TRUE if it is the case. FALSE if it is a location that may cause danger
		causeType	BOOLEAN,
-- STF405: changed type to be more self explaining
--		causeType	BOOLEAN,
		causeType   ENUMERATED { itsStation, geographicalRegion },
		-- whether the event is physicalling relevant to the  receiving ITS station.. Set to TRUE if it is the case
		-- whether the event is physicalling relevant to the  receiving ITS station.. Set to TRUE if it is the case
		relevant	BOOLEAN,
-- STF405: changed type to be more self explaining
--		relevant	BOOLEAN,
        relevant ENUMERATED {physicallyRelevant, difficultDrivingConditions },
		-- whether the event is time critical road safety event, set to TRUE if it is the case.
		-- whether the event is time critical road safety event, set to TRUE if it is the case.
		timeCritacality	BOOLEAN,
		timeCritacality	BOOLEAN,
		-- more characteristics may be added. 	
		-- more characteristics may be added. 	
		...
		...
	} OPTIONAL,
	} OPTIONAL,
	-- tagged list to provide supplementary information  describing the event, may include DEs and EFs definied in [i.6] or [6]		
	-- tagged list to provide supplementary information  describing the event, may include DEs and EFs definied in [i.6] or [6]		
	taggedList	SET SIZE(0..32) OF TaggedList OPTIONAL -- optional taggedlist with TaggedValue  OPTIONAL
	-- STF405: changed to profile based on the changes in the CAM module
	-- taggedList	SET SIZE(0..32) OF TaggedList OPTIONAL 
	-- optional taggedlist with TaggedValue  OPTIONAL
	profile ProfileParameters    OPTIONAL
}
}


DecentralizedSituationLocation::= SEQUENCE {
DecentralizedSituationLocation::= SEQUENCE {
@@ -70,9 +81,6 @@ DecentralizedSituationLocation::= SEQUENCE {
	eventPosition	CHOICE	{
	eventPosition	CHOICE	{
		-- the geographical position of the reference position 
		-- the geographical position of the reference position 
		refPosition	[0] RefPosition,	
		refPosition	[0] RefPosition,	
		-- other descriptions of the event position or the event area,  may be  as defined in [6]
		--STF405: type definition of EventArea missing!
		--eventArea	[1]	EventArea,	
		...
		...
	},
	},
	-- description of  the relevance area for the  DENM dissemination
	-- description of  the relevance area for the  DENM dissemination
@@ -87,8 +95,6 @@ DecentralizedSituationLocation::= SEQUENCE {
	}
	}
}
}


ProtocolVersionDENM ::=	INTEGER (0..255) 		-- 1 byte

MessageID ::=  	INTEGER (0..255) 		-- 1 byte
MessageID ::=  	INTEGER (0..255) 		-- 1 byte


--STF405: renamed to TimeStamp as this is actually referenced, LongTimeStamp never
--STF405: renamed to TimeStamp as this is actually referenced, LongTimeStamp never
@@ -100,18 +106,20 @@ ActionID ::= SEQUENCE {
	sequenceNo 	SequenceNo	-- a 2 byte value
	sequenceNo 	SequenceNo	-- a 2 byte value
}
}


--STF405: STRING not a valid ASN.1 type
--STF405: STRING not a valid ASN.1 type, using the CAM definition
--StationID ::=	STRING 		
--StationID ::=	STRING 		
StationID ::=	CHARACTER STRING 		
-- station ID of the DENM originator ITS station	
-- station ID of the DENM originator ITS station	

SequenceNo ::=	INTEGER (0..65535)		-- increased by 1 each time a new event is detected by the same ITS  station.
SequenceNo ::=	INTEGER (0..65535)		-- increased by 1 each time a new event is detected by the same ITS  station.


DataVersion ::= ENUMERATED {
-- STF405: changed to INTEGER as ENUMERATED is not applicable for handling
	firstVersion	(0),
-- DataVersion ::= ENUMERATED {
	secondVersion	(1),
-- 	firstVersion	(0),
	cancellation	(255),
-- 	secondVersion	(1),
	...
-- 	cancellation	(255),
}
-- 	...
-- }
DataVersion ::= INTEGER {firstVersion(0),secondVersion(1),cancellation(255) } (0..255)


--STF405: removed as is expressed already in TimeStamp which is referenced only, furthermore OPTIONAL is syntactically incorrect
--STF405: removed as is expressed already in TimeStamp which is referenced only, furthermore OPTIONAL is syntactically incorrect
--LongTimeStamp ::=	INTEGER (0.. 281474976710655) 	OPTIONAL
--LongTimeStamp ::=	INTEGER (0.. 281474976710655) 	OPTIONAL
@@ -119,9 +127,13 @@ DataVersion ::= ENUMERATED {


Frenquency ::=	INTEGER (0..255)
Frenquency ::=	INTEGER (0..255)


Reliability ::=	INTEGER (0.. 100)	--7 bit
-- STF405: no need for explicit type
--Reliability ::=	INTEGER (0..100)	
--7 bit


IsNegation ::=	BOOLEAN	--1 bit
-- STF405: no need for explicit type
-- IsNegation ::=	BOOLEAN	
--1 bit


--STF405: removed OPTIONAL, as it is syntactically incorrect
--STF405: removed OPTIONAL, as it is syntactically incorrect
--TrafficFlowEffect ::= 	INTEGER(0..7)	OPTIONAL
--TrafficFlowEffect ::= 	INTEGER(0..7)	OPTIONAL
@@ -132,28 +144,32 @@ Situation ::= SEQUENCE {
	subCause	SubCauseCode	-- 1 byte
	subCause	SubCauseCode	-- 1 byte
}
}


CauseCode ::= ENUMERATED  
-- STF405: Changed to INTEGER as it allows to use cause codes in [3]
-- CauseCode ::= ENUMERATED  


-- 1 to 100 indicates causecode defined within [3]
-- 1 to 100 indicates causecode defined within [3]
-- 101 – 255 indicates causecode without being defined by [3]
-- 101 – 255 indicates causecode without being defined by [3]


{
-- {
	reserved		(0),
--	reserved		(0),
	dangerousDriving	(101),
--	dangerousDriving	(101),
	intersectionViolation	(102),
--	intersectionViolation	(102),
	vehicleProblem	(103),
--	vehicleProblem	(103),
	intersectionCollision	(104),
--	intersectionCollision	(104),
	hazardousLocation	(105),
--	hazardousLocation	(105),
	...
--	...
}
--}

CauseCode ::= INTEGER {reserved(0),dangerousDriving(101),intersectionViolation(102),vehicleProblem(103),intersectionCollision(104),hazardousLocation(105) } (0..255)
SubCauseCode ::= ENUMERATED

{
-- STF405: changed type as it seems more applicable
	unknown		(0),
-- SubCauseCode ::= ENUMERATED
	subCauseCode1	(1),
-- {
	subCauseCode2	(2),
-- 	unknown		(0),
	...
-- 	subCauseCode1	(1),
}													
-- 	subCauseCode2	(2),
-- 	...
-- }													
SubCauseCode ::= INTEGER {unknown(0)} (0..255)


--STF405: removed OPTIONAL, as it is syntactically incorrect
--STF405: removed OPTIONAL, as it is syntactically incorrect
--LinkedCause ::= 	Situation		OPTIONAL
--LinkedCause ::= 	Situation		OPTIONAL
@@ -172,25 +188,26 @@ Severity ::= ENUMERATED -- 1 byte
	highestDanger	(4)		--danger level 3: 
	highestDanger	(4)		--danger level 3: 
}
}


--STF405: removed OPTIONAL, as it is syntactically incorrect
--STF405: no need for explicit type
EventCharact ::= SEQUENCE	-- 1 byte
--EventCharact ::= SEQUENCE	
{
-- 1 byte
--{
-- whether the detected event is in mobility (moving vehicle) or static
-- whether the detected event is in mobility (moving vehicle) or static
	mobility		BOOLEAN,
--	mobility		BOOLEAN,
-- whether the detected event is an ITS station, or is a geographical region
-- whether the detected event is an ITS station, or is a geographical region
	causeType		BOOLEAN,
-- causeType		BOOLEAN,
-- whether the detected event is physically relevant to the received ITS stations (accident) or describing difficult driving conditions (fog on the road)
-- whether the detected event is physically relevant to the received ITS stations (accident) or describing difficult driving conditions (fog on the road)
	relevant	BOOLEAN,
-- relevant	BOOLEAN,
-- whether a detected event is time critical (e.g., electronic braking light) or not (e.g. fog on the road)
-- whether a detected event is time critical (e.g., electronic braking light) or not (e.g. fog on the road)
	timeCriticality	BOOLEAN,
--	timeCriticality	BOOLEAN,
	...
--	...
}
--}


--STF405: removed OPTIONAL, as it is syntactically incorrect
--STF405: The CAM definition is used instead, removed OPTIONAL, as it is syntactically incorrect
TaggedList ::= SEQUENCE
-- TaggedList ::= SEQUENCE
{
-- {
	...
-- 	...
}
-- }


RefPosition ::= SEQUENCE {
RefPosition ::= SEQUENCE {
	situationLat	Latitude,  	-- 4 bytes
	situationLat	Latitude,  	-- 4 bytes
@@ -219,27 +236,28 @@ Altitude ::= INTEGER (-10000..16767215) -- multiples of 0.1 m
PositionAccuracy ::= OCTET STRING (SIZE(4))	
PositionAccuracy ::= OCTET STRING (SIZE(4))	


--STF405: removed OPTIONAL, as it is syntactically incorrect
--STF405: removed OPTIONAL, as it is syntactically incorrect
Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28800)
Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28799)


--STF405: removed OPTIONAL, as it is syntactically incorrect
--STF405: removed OPTIONAL, as it is syntactically incorrect
Speed ::= INTEGER (-32765..32765)	 -- multiples of 0.01 m/s 
Speed ::= INTEGER (-32765..32765)	 -- multiples of 0.01 m/s 


LocationRef ::=	CHOICE {
--STF405: no need for explicit type
--LocationRef ::=	CHOICE {
	-- consequence position of the trace location referencing mechanism
	-- consequence position of the trace location referencing mechanism
	trace	[0]	TraceLocData,
--	trace	[0]	TraceLocData,
	-- more location referencing mechanism to be added
	-- more location referencing mechanism to be added
	...
--	...
}
--}


TraceLocData ::=	SEQUENCE {
TraceLocData ::=	SEQUENCE {
	--3 bits, identifier of the trace.
	--3 bits, identifier of the trace
	traceID	INTEGER(0 .. 7),	
	traceID	INTEGER(0 .. 7),	
	--5 bits, number of waypoint positions included in the trace.	
	--5 bits, number of waypoint positions included in the trace
	waypoints	SEQUENCE (SIZE(0..31)) OF	Waypoint
	waypoints	SEQUENCE (SIZE(0..31)) OF	Waypoint
}
}


Waypoint  ::=		SEQUENCE{
Waypoint  ::=		SEQUENCE{
	-- 1st waypoint positions included in the trace.	
	--  waypoint positions included in the trace.	
	ptLat 	Latitude,							--a 4 bytes value 
	ptLat 	Latitude,							--a 4 bytes value 
	ptLong 	Longitude,						--a 4 bytes value
	ptLong 	Longitude,						--a 4 bytes value
	ptAlt 	Altitude,							--a 2 bytes value
	ptAlt 	Altitude,							--a 2 bytes value