Commit 003fa845 authored by tepelmann's avatar tepelmann
Browse files

Initial checkin.

Definitions taken from draft specifications(CAM TS 102 637-2 V1.0.4/DENM TS 102 637-3 V2.1.1).
Corrected ASN.1 for syntactically incorrect definitions.
Added module definitions.
parent 69dfb053
Loading
Loading
Loading
Loading

CAM/CAM.asn

0 → 100644
+253 −0
Original line number Diff line number Diff line
CAM-PDU-Descriptions {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cam (2) version1 (1) 
}

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

--	The root data frame for cooperative awareness messages
CoopAwareness ::= SEQUENCE {

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

	-- message type ID associated to CAM = 0
	messageID 		INTEGER(0..255),

	-- milliseconds elapsed since midnight January 1st, 1970 UTC
	generationTime	INTEGER (0.. 281474976710655),

	stationId	INTEGER(0..4294967295),

	referencePosition ReferencePosition,

	-- Basic characterization of an ITS station. A more detailed classification can be given by
	-- VehicleType.
	stationCharacteristics	SEQUENCE {
		mobile		BOOLEAN,	-- will ITS station change position?
		private		BOOLEAN,	-- not public authority
		physicalRelevant	BOOLEAN,	-- can another mobile ITS station crash into this station?
		...
	},

	-- tagged list has optional and mandatory entries depending on the profile of the 
	-- ITS station, this is defined in a separate document
	taggedList	SET SIZE(0..32) OF TaggedValue,

   ...
}
	
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, --other speed than vehicle speed
	 -- heading               			[21] Heading,
	 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,
	 ...
	}

AccelerationControl ::= BIT STRING {
 brakePedal    (0),
 throttlePedal (1),
 cruiseControl (2),
 acc           (3),
 limiter       (4),
 brakeAssist   (5)
} 

AmbientAirTemperature ::= Temperature 

CauseCode ::= INTEGER (0..100, ...) 

Confidence ::= INTEGER (0..15) 

CourseOfJourney ::= IA5String(SIZE(0..32)) 

CrashStatus ::= BOOLEAN

Curvature ::= INTEGER (-32765..32765)

CurvatureGradient ::= INTEGER (-1023..1023)

DataReference ::= IA5String(SIZE(1..128))

DangerousGoods ::= INTEGER (0..8191)

Dimension ::= INTEGER (0..16383)

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

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

DistanceToStopLine ::= Distance

DoorOpen ::= BIT STRING {
  driver (0),
  passenger (1), -- any passenger door
  maintenance (2), -- hood, other access to engine, or similar
  luggage (3)
} 

Elevation ::= INTEGER (-10000..16767215) -- multiples of 0.1 m

EmergencyResponseType ::= ENUMERATED {
 none         (0),
 staticSafeguard (1),   -- e.g. at accident spot
 movingSafeguard (2),   -- e.g. convoy or abnormal load
 rightOfWay      (3),   -- claiming right of way
 ...
} 

ExteriorLights ::= BIT STRING {
 lowBeamHeadlightsOn     (0),
 highBeamHeadlightsOn    (1),
 leftTurnSignalOn        (2),
 rightTurnSignalOn       (3),
 automaticLightControlOn (4),
 daytimeRunningLightsOn  (5),
 fogLightOn              (6),
 parkingLightsOn         (7)
 } 

Heading ::= Direction 

Latitude ::= SEQUENCE {
  isSouth BOOLEAN,               -- true if on southern hemisphere (sign flag)
  degree  INTEGER (0..900000000) -- multiples of 0.1 microdegree
} 

LightBarInUse ::= SimpleSystemState 

LineRef ::= IA5String(SIZE(0..32)) 

LongAcceleration ::= INTEGER (-2000..2000)  -- multiples of 0.01 m/s^2 

Longitude ::= SEQUENCE {
  isEast BOOLEAN,                 -- true if east of 0-meridian (sign flag)
  degree  INTEGER (0..1800000000) -- multiples of 0.1 microdegree
}

Occupancy ::= INTEGER (0..255) 

PosConfidenceEllipse ::= SEQUENCE {
  semiMajorConfidence   PositionConfidence,   -- confidence of the ellipse's major semi-axes
  semiMinorConfidence   PositionConfidence,   -- confidence of the ellipse's minor semi-axes
  semiMajorOrientation   Direction
} 

PositionConfidence ::= Confidence -- 2^PositionConfidence * 0.1m 

Priority ::= INTEGER(0..7) 

PTLineDescription ::= SEQUENCE {
  courseOfJourney  CourseOfJourney,
  lineRef          LineRef,
  routeRef         RouteRef
} 

PublicVehicleType ::= INTEGER(0..255) 

ReferencePosition ::= SEQUENCE {
  longitude Longitude,
  latitude Latitude,
  elevation Elevation,
  heading [1] Direction OPTIONAL, -- if relevant for position reference
  streetName [2] StreetName OPTIONAL,
  positionConfidence [3] PositionConfidence OPTIONAL, -- ommitted for fixed position, e.g. infrastructure location
  elevationConfidence [4] Confidence OPTIONAL, -- ommitted for fixed position, e.g. infrastructure location
  roadSegmentID [5] RoadSegmentID OPTIONAL
}

RoadSegmentID ::= INTEGER (0..99999999) 

RouteRef ::= IA5String(SIZE(0..32)) 

ScheduleDeviation ::= INTEGER (-900..3600)  -- seconds, positiv delay; negative ahead of schedule 

SimpleSystemState ::= ENUMERATED {
  unavailable  (0), -- not equipped or out of order
  disabled  (1), -- switched off by user or due to driving situation, e.g. ACC below minimum speed
  enabled   (2), -- switched on but no action, e.g. ESP in normal operation, limiter below limit speed
  engaged   (3)  -- switched on and in action, e.g. light bar flashing, limiter limiting speed 
} 

SireneInUse ::= SimpleSystemState 

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

StationLength ::= Dimension 

StationWidth ::= Dimension 

StreetName ::= IA5String(SIZE(1..32)) 

Temperature ::= INTEGER (-40..215) 

TrafficLightPriority ::= Priority 

TurnAdvice ::= SEQUENCE {
  direction    TurnDirection,
  distance     Distance
} 

TurnDirection ::= BIT STRING {
  uTurn       (0),
  sharpRight  (1),
  right       (2),
  slightRight (3),
  straight    (4),
  slightLeft  (5),
  left        (6),
  sharpLeft   (7)
} 

VehicleSpeed ::= Speed 

VehicleType ::= INTEGER (0..255) 

WiperSystemFront ::= ENUMERATED {
  idle         (0),
  interval     (1),
  normal       (2),
  fast         (3),
  washerActive (4)
}

YawRate ::= INTEGER (-32765..32765) 

END

DENM/DENM.asn

0 → 100644
+250 −0
Original line number Diff line number Diff line
DENM-PDU-Descriptions {
 itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) denm (3) version2 (2) 
}

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

--STF405: doubled defined, renamed
--DecentralizedSituation ::= SEQUENCE {
DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {
	management	DecentralizedSituationManagement,	--  container with DEN management and version control
	situation	DecentralizedSituation,  			-- container with event description, incl. type, severity
	location	DecentralizedSituationLocation		-- container with event location, location referencing with more detailed location description and the relevance area
 }

DecentralizedSituationManagement::= SEQUENCE {
	-- protocol version number of the DENM
	protocolVersionDENM	INTEGER (0..255),
	-- unique message type identifier assigned to the DENM		
	messageID	MessageID,	-- 1 byte 
	-- time at which an originator  ITS  station generates the DENM
	generationtime	TimeStamp,		--  6 byte
	-- unique identifier about an event from one originator ITS station, combination of node ID and a sequence number
	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
	dataVersion	INTEGER(0..255),  	-- 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	
	expiryTime	TimeStamp  	OPTIONAL, 	-- 6 byte
	frequency	INTEGER (0..255)	OPTIONAL, 	--1 byte
	-- probability of the detected event to  be true, varies  from 0 to 100, with maximum value as full reliability
	reliability	INTEGER(0..100), 	-- 7 bits
	-- negates the existence of an event at the event position by a third part ITS station that have received DENMs previously.		 
	isNegation	BOOLEAN    		-- 1 bit	
}

-- event description derived from [3]
DecentralizedSituation::= SEQUENCE {
	-- traffic status near the event position, defined based on [3], TPEG table tec001 
	trafficFlowEffect 	TrafficFlowEffect	OPTIONAL,	 -- 1 byte. 
	-- event direct cause and sub cause description as defined in tab6.1 and in [3]
	situation	SEQUENCE {
		cause 	CauseCode, 	-- 1 byte
		subCause	SubCauseCode	-- 1 byte
	},
	-- linked cause if information is available.
	linkedCause	Situation		OPTIONAL,	-- 2 Byte, 
	-- severity value of the event, defined in [3], TPEG table tec003			
	severity	Severity,	-- 1 byte
	-- characteristics of the event 
	eventCharact	SEQUENCE -- EventCharact	OPTIONAL 	 1 byte 
	{
		-- event mobility description, set to TRUE if the event is in mobility 
		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
		causeType	BOOLEAN,
		-- whether the event is physicalling relevant to the  receiving ITS station.. Set to TRUE if it is the case
		relevant	BOOLEAN,
		-- whether the event is time critical road safety event, set to TRUE if it is the case.
		timeCritacality	BOOLEAN,
		-- more characteristics may be added. 	
		...
	} OPTIONAL,
	-- 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
}

DecentralizedSituationLocation::= SEQUENCE {
	-- description of the event position
	eventPosition	CHOICE	{
		-- the geographical position of the reference position 
		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
	--STF405:  type definition of RelevanceArea missing!
	--relevanceArea	RelevanceArea,
	-- location referencing of the event position
	locationRef	CHOICE {
		-- consequence position of the trace location referencing mechanism
		trace	[0]	TraceLocData,
		-- more location referencing mechanism to be added
		...
	}
}

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

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

--STF405: renamed to TimeStamp as this is actually referenced, LongTimeStamp never
--LongTimeStamp ::=	INTEGER (0.. 281474976710655)		
TimeStamp ::=	INTEGER (0.. 281474976710655)		-- units of milliseconds, 6 byte

ActionID ::= SEQUENCE {
	stationID 	StationID,	-- a 4 byte value
	sequenceNo 	SequenceNo	-- a 2 byte value
}

--STF405: STRING not a valid ASN.1 type
--StationID ::=	STRING 		
StationID ::=	CHARACTER STRING 		
-- 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.

DataVersion ::= ENUMERATED {
	firstVersion	(0),
	secondVersion	(1),
	cancellation	(255),
	...
}

--STF405: removed as is expressed already in TimeStamp which is referenced only, furthermore OPTIONAL is syntactically incorrect
--LongTimeStamp ::=	INTEGER (0.. 281474976710655) 	OPTIONAL
-- 6byte, units of milliseconds.

Frenquency ::=	INTEGER (0.. 255)

Reliability ::=	INTEGER (0.. 100)	--7 bit

IsNegation ::=	BOOLEAN	--1 bit

--STF405: removed OPTIONAL, as it is syntactically incorrect
--TrafficFlowEffect ::= 	INTEGER(0..7)	OPTIONAL
TrafficFlowEffect ::= 	INTEGER(0..7)

Situation ::= SEQUENCE {
	cause 		CauseCode, 	-- 1 byte
	subCause	SubCauseCode	-- 1 byte
}

CauseCode ::= ENUMERATED  

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

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

SubCauseCode ::= ENUMERATED
{
	unknown		(0),
	subCauseCode1	(1),
	subCauseCode2	(2),
	...
}													

--STF405: removed OPTIONAL, as it is syntactically incorrect
--LinkedCause ::= 	Situation		OPTIONAL
LinkedCause ::= 	Situation

--STF405: renamed to Severity
--LongTimeStamp ::= ENUMERATED...
Severity ::= ENUMERATED 		-- 1 byte
{
	informative		(1), 
	-- Text example: <Attention, there is a dangerous obstruction due to fog>
	obstacles		(2),	--danger level 1
	-- Text example: <Attention, there a danger due to fog>
	danger	(3),			--danger level 2: 
	-- Text example: <Attention, highest danger due to fog>
	highestDanger	(4)		--danger level 3: 
}

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

--STF405: removed OPTIONAL, as it is syntactically incorrect
TaggedList ::= SEQUENCE
{
	...
}

RefPosition ::= SEQUENCE {
	situationLat	Latitude,  	-- 4 bytes
	situationLong	Longitude,  	-- 4 bytes
	situationAlt	Altitude,	-- 2 bytes
	-- accuracy of the reference position
	accuracy	PositionAccuracy,	-- 4 bytes	
	-- speed of the detected event if it is in mobility, i.e. vehicle station
	speed	Speed	OPTIONAL,		-- 2 bytes
	-- direction of the event if it is in mobility, i.e. vehicle station
	direction	Direction	OPTIONAL	-- 2 bytes
}

Latitude ::= SEQUENCE {
	isSouth 	BOOLEAN,              	-- true if on southern hemisphere (sign flag)
	degree  	INTEGER (0..900000000) 	-- multiples of 0.1 microdegree
} 

Longitude ::= SEQUENCE {
	isEast 	BOOLEAN,                 -- true if east of 0-meridian (sign flag)
  	degree 	 INTEGER (0..1800000000) -- multiples of 0.1 microdegree
}

Altitude ::= INTEGER (-10000..16767215) 	-- multiples of 0.1 m

PositionAccuracy ::= OCTET STRING (SIZE(4))	

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

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

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

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

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

END
 No newline at end of file