DENM.asn 9.95 KB
Newer Older
tepelmann's avatar
tepelmann committed
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

kovacsa's avatar
kovacsa committed
    Latitude, Longitude, Elevation, BasicVehicle, ProfileParameters, StationID, TimeStamp, ReferencePositionVehicle 
FROM CAM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102637) cam (2) version1 (1) };

kovacsa's avatar
kovacsa committed
--STF405: all unnecessary tags have been removed

kovacsa's avatar
kovacsa committed

ItsPduHeader ::= SEQUENCE {
	-- protocolVersion fixed to 0
	protocolVersion		INTEGER(0..255),

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

	-- milliseconds elapsed since midnight January 1st, 1970 UTC
	generationTime	TimeStamp,
	
	denm	DecentralizedEnvironmentalNotificationMessage

}


tepelmann's avatar
tepelmann committed
--STF405: doubled defined, renamed
--DecentralizedSituation ::= SEQUENCE {
DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {
kovacsa's avatar
kovacsa committed
	
	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 {
tepelmann's avatar
tepelmann committed
	-- unique identifier about an event from one originator ITS station, combination of node ID and a sequence number
	actionID	ActionID,	-- 6 byte
kovacsa's avatar
kovacsa committed
	
tepelmann's avatar
tepelmann committed
	-- 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
	
	-- STF405: changed inline definition to explicit
	-- dataVersion	INTEGER(0..255),
	dataVersion	DataVersion,  	-- 1 byte
tepelmann's avatar
tepelmann committed
	-- time when the DENM is deleted from the DEN management and the information 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	
tepelmann's avatar
tepelmann committed
	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	Situation,
tepelmann's avatar
tepelmann committed
	-- 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
-- STF405: changed type to be more self explaining
--		causeType	BOOLEAN,
		causeType   ENUMERATED { itsStation, geographicalRegion },
tepelmann's avatar
tepelmann committed
		-- whether the event is physicalling relevant to the  receiving ITS station.. Set to TRUE if it is the case
-- STF405: changed type to be more self explaining
--		relevant	BOOLEAN,
        relevant ENUMERATED {physicallyRelevant, difficultDrivingConditions },
tepelmann's avatar
tepelmann committed
		-- 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]		
	-- 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
kovacsa's avatar
kovacsa committed
	commonParameters	BasicVehicle OPTIONAL,
	profile ProfileParameters    OPTIONAL
tepelmann's avatar
tepelmann committed
}

DecentralizedSituationLocation::= SEQUENCE {
	-- description of the event position
kovacsa's avatar
kovacsa committed
	-- STF405: as the eventPosition CHOICe is extensible the EventArea type can be added when needed
tepelmann's avatar
tepelmann committed
	eventPosition	CHOICE	{
		-- the geographical position of the reference position 
kovacsa's avatar
kovacsa committed
--		refPosition	RefPosition,	
		refPosition	ReferencePositionVehicle,	
tepelmann's avatar
tepelmann committed
		...
	},
	-- description of  the relevance area for the  DENM dissemination
kovacsa's avatar
kovacsa committed
	--STF405:  changed DecentralizedSituationLocation to extensible SEQUENCE, so that definition of RelevanceArea can be added when needed!
tepelmann's avatar
tepelmann committed
	--relevanceArea	RelevanceArea,
	-- location referencing of the event position
	locationRef	CHOICE {
		-- consequence position of the trace location referencing mechanism
kovacsa's avatar
kovacsa committed
		trace	TraceLocData,
tepelmann's avatar
tepelmann committed
		-- more location referencing mechanism to be added
		...
kovacsa's avatar
kovacsa committed
	},
	...
kovacsa's avatar
kovacsa committed
--STF405: changed MessageID to inline definition, as in CAM
kovacsa's avatar
kovacsa committed
--MessageID ::=  	INTEGER (0..255) 
kovacsa's avatar
kovacsa committed

--STF405: uses imported TimeStamp type instead as this is actually referenced, LongTimeStamp never
tepelmann's avatar
tepelmann committed
--LongTimeStamp ::=	INTEGER (0.. 281474976710655)		

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

--STF405: STRING not a valid ASN.1 type, using the CAM definition
tepelmann's avatar
tepelmann committed
--StationID ::=	STRING 		
-- station ID of the DENM originator ITS station	
tepelmann's avatar
tepelmann committed
SequenceNo ::=	INTEGER (0..65535)		-- increased by 1 each time a new event is detected by the same ITS  station.

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

--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)
tepelmann's avatar
tepelmann committed

-- STF405: no need for explicit type
--Reliability ::=	INTEGER (0..100)	
--7 bit
tepelmann's avatar
tepelmann committed

-- STF405: no need for explicit type
-- IsNegation ::=	BOOLEAN	
--1 bit
tepelmann's avatar
tepelmann committed

--STF405: removed OPTIONAL, as it is syntactically incorrect
--TrafficFlowEffect ::= 	INTEGER(0..7)	OPTIONAL
tepelmann's avatar
tepelmann committed
TrafficFlowEffect ::= 	INTEGER {
    trafficFlowUnknown(1), 
    freeTrafficFlow(2),
    slowTraffic(3),
    heavyTraffic(4),
    queuingTraffic(5),
    stationaryTraffic(6),
    noTrafficFlow(7)
} (0..7)
tepelmann's avatar
tepelmann committed

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

-- STF405: Changed to INTEGER as it allows to use cause codes in [3]
-- CauseCode ::= ENUMERATED  
tepelmann's avatar
tepelmann committed

-- 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),
--	...
--}
CauseCode ::= INTEGER {reserved(0),dangerousDriving(101),intersectionViolation(102),vehicleProblem(103),intersectionCollision(104),hazardousLocation(105) } (0..255)

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

--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: no need for explicit type
--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: The CAM definition is used instead, removed OPTIONAL, as it is syntactically incorrect
-- TaggedList ::= SEQUENCE
-- {
-- 	...
-- }
tepelmann's avatar
tepelmann committed

kovacsa's avatar
kovacsa committed
--STF405: replaced by imported type from CAM
--RefPosition ::= SEQUENCE {
kovacsa's avatar
kovacsa committed
--	situationLat	Latitude,  
--	situationLong	Longitude,  
--	situationAlt	Altitude,
--	accuracy	PositionAccuracy,	
--	speed	Speed	OPTIONAL,	
--	direction	Direction	OPTIONAL
kovacsa's avatar
kovacsa committed
--}
tepelmann's avatar
tepelmann committed

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

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

kovacsa's avatar
kovacsa committed
--STF405: removed Direction, as it is imported from CAM
--Direction ::= INTEGER{north(0), east(7200), south(14400), west(21600)} (0..28799)
tepelmann's avatar
tepelmann committed

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

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

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

Waypoint  ::=		SEQUENCE{
	--  waypoint positions included in the trace.	
tepelmann's avatar
tepelmann committed
	ptLat 	Latitude,							--a 4 bytes value 
	ptLong 	Longitude,						--a 4 bytes value
kovacsa's avatar
kovacsa committed
--STF405: type name is made consistent with CAM definitions
kovacsa's avatar
kovacsa committed
--	ptAlt 	Altitude,
kovacsa's avatar
kovacsa committed
	ptAlt 	Elevation,
tepelmann's avatar
tepelmann committed
	...
	--STF405: removed repetition
}

END