CAM.asn 13.4 KB
Newer Older
tepelmann's avatar
tepelmann committed
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 {

	-- protocolVersion fixed to 0
	protocolVersion		INTEGER(0..255),
tepelmann's avatar
tepelmann committed

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

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

    -- STF405: introduced type StationID
	stationId	StationID,
tepelmann's avatar
tepelmann committed

	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
	-- STF405: replace taggedList with profile as described in chapter 7.2
	-- taggedList	SET SIZE(0..32) OF TaggedValue,
	profile ProfileParameters,
tepelmann's avatar
tepelmann committed

   ...
}

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,
     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,
     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,
     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,
     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
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,
     ...
}
tepelmann's avatar
tepelmann committed

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

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 {
-- STF405: changed type from PositionConfidence to Confidence
--  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
tepelmann's avatar
tepelmann committed
  semiMajorOrientation   Direction
} 

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

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,
-- STF405: changed optionallity due to introduction of new PositionConfidence type
--  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
tepelmann's avatar
tepelmann committed
  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
}

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

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

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

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

END