LibItsCam_Templates.ttcn 11.4 KB
Newer Older
 *    @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;
fischer's avatar
fischer committed
    
    group Primitives {
        template CamInd mw_camInd (in template (present) CamPdu p_camMsg) := { msgIn := p_camMsg };
fischer's avatar
fischer committed
    
        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