Newer
Older
* @author ETSI / STF405
* @version $URL$
* $Id$
* @desc Module containing base template definitions for CAM
import from LibItsCam_TypesAndValues all;
import from LibIts_Interface all;
import from LibItsCam_Pixits all;
import from CAM_PDU_Descriptions language "ASN.1:1997" all;
import from DENM_PDU_Descriptions language "ASN.1:1997" all;
/**
* @desc Send template for CAM Message (CamPort Primitive)
* @param p_camMsg CAM Message to be sent
*/
template CamInd mw_camInd (
in template (present) CamPdu p_camMsg
) := {
msgIn := p_camMsg
};
/**
* @desc Send template for CAM Message (CamPort Primitive)
*/
template (value) CamReq m_camReq (
in template (value) CamPdu p_camMsg
) := {
msgOut := p_camMsg
};
group utPrimitives {
/**
* @desc Change the heading
* @param p_offset Offset to the current heading
*/
template (value) UtCamEvent m_changeHeading(Direction p_offset) := {
changeHeading := p_offset
}
/**
* @desc Change the position in the direction of the current heading
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
* @param p_offset Offset to the current position
*/
template (value) UtCamEvent m_changePosition(integer p_offset) := {
changePosition := p_offset
}
/**
* @desc Change the speed
* @param p_offset Offset to the current position
*/
template (value) UtCamEvent m_changeSpeed(Speed p_offset) := {
changeSpeed := p_offset
}
/**
* @desc Set the crash status
* @param p_status The status to set
*/
template (value) UtCamEvent m_setCrashSignal(CrashStatus p_status) := {
setCrashSignal := p_status
}
/**
* @desc Set the dangerous goods status
* @param p_status The status to set
*/
template (value) UtCamEvent m_setDangerousGoodsStatus(DangerousGoods p_status) := {
setDangerousGoodsStatus := p_status
}
//TODO not clear which parameter type to use
/**
* @desc Set the length and width precision
* @param p_precision The precision to set
*/
template (value) UtCamEvent m_setLengthWidthPrecision(boolean p_precision) := {
setLengthWidthPrecision := p_precision
}
/**
* @desc Set the distance to the stop line
* @param p_distance The distance to set
*/
template (value) UtCamEvent m_setDistanceToStopLine(Distance p_distance) := {
setDistanceToStopLine := p_distance
}
/**
* @desc Set the turn advice
* @param p_turnAdvice The turn advice to set
*/
template (value) UtCamEvent m_setTurnAdvice(TurnAdvice p_turnAdvice) := {
setTurnAdvice := p_turnAdvice
}
/**
* @desc Change the curvature
* @param p_offset Offset to the current curvature
*/
template (value) UtCamEvent m_changeCurvature(Curvature p_offset) := {
changeCurvature := p_offset
}
/**
* @desc Set the occupancy
* @param p_occupancy The occupancy to set
*/
template (value) UtCamEvent m_setOccupancy(Occupancy p_occupancy) := {
setOccupancy := p_occupancy
}
/**
* @desc Set the door status
* @param p_status The status to set
*/
template (value) UtCamEvent m_setDoorStatus(DoorOpen p_status) := {
setDoorStatus := p_status
}
/**
* @desc Set the light bar status
* @param p_status The status to set
*/
template (value) UtCamEvent m_setLightBarStatus(SimpleSystemState p_status) := {
setLightBarStatus := p_status
}
/**
* @desc Set the sirene status
* @param p_status The status to set
*/
template (value) UtCamEvent m_setSireneStatus(SimpleSystemState p_status) := {
setSireneStatus := p_status
}
/**
* @desc Set the traffic light priority
* @param p_priority The priority to set
*/
template (value) UtCamEvent m_setTrafficLightPriority(Priority p_priority) := {
setTrafficLightPriority := p_priority
}
/**
* @desc Set the schedule deviation
* @param p_scheduleDeviation The schedule deviation to set
*/
template (value) UtCamEvent m_setScheduleDeviation(ScheduleDeviation p_scheduleDeviation) := {
setScheduleDeviation := p_scheduleDeviation
}
/**
* @desc Set the PT line description
* @param p_ptLineDescription The PT line description to set
*/
template (value) UtCamEvent m_setPtLineDescription(PTLineDescription p_ptLineDescription) := {
setPtLineDescription := p_ptLineDescription
}
/**
* @desc Set the exterior lights status
* @param p_status The status to set
*/
template (value) UtCamEvent m_setExteriorLightsStatus(ExteriorLights p_status) := {
setExteriorLightsStatus := p_status
}
} // end utPrimitives
} // end group Primitives
/**
* @desc Default Receive template for CAM PDU
*/
template CamPdu mw_camMsg_any := {
header := {
protocolVersion := 0,
messageID := 0,
generationTime := ?
},
cam := {
stationID := ?,
stationCharacteristics := ?,
referencePosition := ?,
camParameters := *
}
}
/**
* @desc Receive template for CAM PDU for vehicle
* @see mw_camMsg_any
*/
template CamPdu mw_camMsg_anyVehicle
modifies mw_camMsg_any := {
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
cam := {
stationCharacteristics := {?, ?, ?},
camParameters := {
vehicleCommonParameters := {
vehicleType := ?,
stationLength := ?,
stationLengthConfidence := *,
stationWidth := ?,
stationWidthConfidence := *,
vehicleSpeed := ?,
vehicleSpeedConfidence := ?,
longAcceleration := ?,
longAccelerationConfidence := ?,
accelerationControl := ?,
yawRate := ?,
yawRateConfidence := ?,
exteriorLights := ?,
turnAdvice := *,
distanceToStopLine := *,
occupancy := *,
doorOpen := *,
posConfidenceEllipse := ?,
curvature := ?,
curvatureChange := *,
curvatureConfidence := ?,
crashStatus := *,
headingConfidence := ?,
dangerousGoods := *
},
profileDependent := *
}
}
}
/**
* @desc Receive template for CAM PDU for road-side unit
* @see mw_camMsg_any
*/
template CamPdu mw_camMsg_basicIRS
modifies mw_camMsg_any := {
cam := {
stationCharacteristics := {false, false, false},
referencePosition := {
longitude := ?,
latitude := ?,
elevation := ?,
heading := omit,
streetName := *,
positionConfidence := omit,
elevationConfidence := omit,
roadSegmentID := *
}
}
}
/**
* @desc Send template for CAM PDU
* @param p_generationTime Timestamp of the generated message
* @param p_stationID Station ID of the source
* @param p_stationCharacteristics Characteristics of the sending station
* @param p_referencePosition Position of the sending station
*/
template (value) CamPdu m_camMsg_valid(
TimeStamp p_generationTime,
StationID p_stationID,
CoopAwareness.stationCharacteristics p_stationCharacteristics,
template (value) ReferencePosition p_referencePosition
) := {
header := {
protocolVersion := 0,
messageID := 0,
generationTime := p_generationTime
},
cam := {
stationID := p_stationID,
stationCharacteristics := p_stationCharacteristics,
referencePosition := p_referencePosition,
camParameters := omit
}
};
/**
* @desc Receive template for CAM PDU for vehicle
* @see mw_camMsg_anyVehicle
*/
template CamPdu mw_camMsg_basicVehicle
modifies mw_camMsg_anyVehicle := {
cam := {
stationCharacteristics := {true, false, true},
camParameters := {
profileDependent := {basicVehicle := ?}
}
}
}
/**
* @desc Receive template for CAM PDU for emergency vehicle
* @see mw_camMsg_anyVehicle
*/
template CamPdu mw_camMsg_emergencyVehicle
modifies mw_camMsg_anyVehicle := {
cam := {
stationCharacteristics := {true, false, true},
camParameters := {
profileDependent := {
emergencyVehicle := {
lightBarInUse := *,
sireneInUse := *,
emergencyResponseType := ?
}
}
}
}
};
/**
* @desc Receive template for CAM PDU for public transport vehicle
* @see mw_camMsg_anyVehicle
*/
template CamPdu mw_camMsg_publicTransportVehicle
modifies mw_camMsg_basicVehicle := {
cam := {
stationCharacteristics := {true, false, true},
camParameters := {
profileDependent := {
publicTransportVehicle := {
publicVehicleType := ?,
pTLineDescription := *,
scheduleDeviation := *,
trafficLightPriority := *
}
}
}
}
};
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
/**
* @desc Receive template for exterior lights with low beam lights off
*/
template ExteriorLights mw_lowBeamLightsOff := '0???????'B ;
/**
* @desc Receive template for exterior lights with low beam lights on
*/
template ExteriorLights mw_lowBeamLightsOn := '1???????'B ;
/**
* @desc Receive template for exterior lights with high beam lights off
*/
template ExteriorLights mw_highBeamLightsOff := '?0??????'B ;
/**
* @desc Receive template for exterior lights with high beam lights on
*/
template ExteriorLights mw_highBeamLightsOn := '?1??????'B ;
/**
* @desc Receive template for exterior lights with left turn signal off
*/
template ExteriorLights mw_leftTurnSignalOff := '??0?????'B ;
/**
* @desc Receive template for exterior lights with left turn signal on
*/
template ExteriorLights mw_leftTurnSignalOn := '??1?????'B ;
/**
* @desc Receive template for exterior lights with right turn signal off
*/
template ExteriorLights mw_rightTurnSignalOff := '???0????'B ;
/**
* @desc Receive template for exterior lights with right turn signal on
*/
template ExteriorLights mw_rightTurnSignalOn := '???1????'B ;
/**
* @desc Receive template for exterior lights with automatic light control off
*/
template ExteriorLights mw_automaticLightControlOff := '????0???'B ;
/**
* @desc Receive template for exterior lights with automatic light control on
*/
template ExteriorLights mw_automaticLightControlOn := '????1???'B ;
/**
* @desc Receive template for exterior lights with day time running lights off
*/
template ExteriorLights mw_daytimeRunningLightOff := '?????0??'B ;
/**
* @desc Receive template for exterior lights with day time running lights on
*/
template ExteriorLights mw_daytimeRunningLightOn := '?????1??'B ;
/**
* @desc Receive template for exterior lights with fog lights off
*/
template ExteriorLights mw_fogLightOff := '??????0?'B ;
/**
* @desc Receive template for exterior lights with fog lights on
*/
template ExteriorLights mw_fogLightOn := '??????1?'B ;
/**
* @desc Receive template for exterior lights with parking lights off
*/
template ExteriorLights mw_parkingLightsOff := '???????0'B ;
/**
* @desc Receive template for exterior lights with parking lights on
*/
template ExteriorLights mw_parkingLightsOn := '???????1'B ;
/**
* @desc Receive template for exterior lights with hazard lights on
*/
template ExteriorLights mw_hazardConditionOn := '??11????'B ;
} // end group exteriorLights