/** * @author ETSI / STF405 * @version $URL$ * $Id$ * @desc Module containing base template definitions for CAM * */ module LibItsCam_Templates { 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; group Primitives { template CamInd mw_camInd (in template (present) CamPdu p_camMsg) := { msgIn := p_camMsg }; template 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 * @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 template CamPdu mw_camMsg_any := { header := { protocolVersion := 0, messageID := 0, generationTime := ? }, cam := { stationID := ?, stationCharacteristics := ?, referencePosition := ?, camParameters := * } } template CamPdu mw_camMsg_anyVehicle modifies mw_camMsg_any := { 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 := * } } } 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 := * } } } template 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 } }; template CamPdu mw_camMsg_basicVehicle modifies mw_camMsg_anyVehicle := { cam := { stationCharacteristics := {true, false, true}, camParameters := { profileDependent := {basicVehicle := ?} } } } template CamPdu mw_camMsg_emergencyVehicle modifies mw_camMsg_anyVehicle := { cam := { stationCharacteristics := {true, false, true}, camParameters := { profileDependent := { emergencyVehicle := { lightBarInUse := *, sireneInUse := *, emergencyResponseType := ? } } } } }; template CamPdu mw_camMsg_publicTransportVehicle modifies mw_camMsg_basicVehicle := { cam := { stationCharacteristics := {true, false, true}, camParameters := { profileDependent := { publicTransportVehicle := { publicVehicleType := ?, pTLineDescription := *, scheduleDeviation := *, trafficLightPriority := * } } } } }; group exteriorLights { template ExteriorLights m_lowBeamLightsOff := '0???????'B ; template ExteriorLights m_lowBeamLightsOn := '1???????'B ; template ExteriorLights m_highBeamLightsOff := '?0??????'B ; template ExteriorLights m_highBeamLightsOn := '?1??????'B ; template ExteriorLights m_leftTurnSignalOff := '??0?????'B ; template ExteriorLights m_leftTurnSignalOn := '??1?????'B ; template ExteriorLights m_rightTurnSignalOff := '???0????'B ; template ExteriorLights m_rightTurnSignalOn := '???1????'B ; template ExteriorLights m_automaticLightControlOff := '????0???'B ; template ExteriorLights m_automaticLightControlOn := '????1???'B ; template ExteriorLights m_daytimeRunningLightOff := '?????0??'B ; template ExteriorLights m_daytimeRunningLightOn := '?????1??'B ; template ExteriorLights m_fogLightOff := '??????0?'B ; template ExteriorLights m_fogLightOn := '??????1?'B ; template ExteriorLights m_parkingLightsOff := '???????0'B ; template ExteriorLights m_parkingLightsOn := '???????1'B ; template ExteriorLights m_hazardConditionOn := '??11????'B ; } // end group exteriorLights } // end LibItsCam_Templates