Newer
Older
* @author ETSI / STF405 / STF449
* @version $URL$
* $Id$
* @desc Module containing base template definitions for CAM
// LibIts
import from LibItsCommon_Functions all;
import from LibItsCam_TypesAndValues all;
import from LibItsCam_Pixits all;
import from ITS_Container language "ASN.1:1997" all;
import from CAM_PDU_Descriptions language "ASN.1:1997" all;
import from DENM_PDU_Descriptions language "ASN.1:1997" all;
* @desc Receive template for CAM Message (CamPort Primitive)
* @param p_camMsg CAM Message to be sent
*/
template CamInd mw_camInd (
in template (present) CAM p_camMsg
) := {
msgIn := p_camMsg
};
/**
* @desc Send template for CAM Message (CamPort Primitive)
in template (value) CAM p_camMsg
/**
* @desc Initializes the CAM IUT.
*/
template (value) UtInitialize m_camInitialize := {
utCamInitialize := {
}
}
/**
* @desc Change the curvature
* @param p_offset The curvature value offset
template (value) UtEvent m_changeCurvature(CurvatureValue p_offset) := {
utCamEvent := {
changeCurvature := p_offset
}
* @desc Change the speed
* @param p_offset The speed value offset
template (value) UtEvent m_changeSpeed(SpeedValue p_offset) := {
changeSpeed := p_offset
* @desc Set the acceleration control status
* @param p_status The status to set
*/
template (value) UtEvent m_setAccelerationControlStatus(AccelerationControl p_status) := {
setAccelerationControlStatus := p_status
* @desc Set the exterior lights status
* @param p_status The status to set
*/
template (value) UtEvent m_setExteriorLightsStatus(ExteriorLights p_status) := {
setExteriorLightsStatus := p_status
* @desc Change the heading
* @param p_offset The heading value offset
template (value) UtEvent m_changeHeading(HeadingValue p_offset) := {
changeHeading := p_offset
* @desc Set the drive direction
* @param p_driveDirection The drive direction
template (value) UtEvent m_setDriveDirection(DriveDirection p_driveDirection) := {
setDriveDirection := p_driveDirection
* @desc Change the yaw rate
* @param p_offset The yaw rate value offset
template (value) UtEvent m_changeYawRate(YawRateValue p_offset) := {
changeYawRate := p_offset
* @desc Change the position in the direction of the current heading
* @param p_offset Offset to the current position in meter
template (value) UtEvent m_changePosition(integer p_offset) := {
changePosition := p_offset
}
}
/**
* @desc Checks the receive of a message at LDM
* @param p_message The CAM message to check
*/
template (value) UtEvent m_checkLdm(CAM p_message) := {
utCamEvent := {
checkLdm := p_message
}
}
} // end utPrimitives
} // end group Primitives
group positionTemplates {
/**
* @desc The test system reference position.
*/
template (value) ReferencePosition m_tsPosition := {
latitude := f_integer2Latitude(f_getTsLatitude()),
longitude := f_integer2Longitude(f_getTsLongitude()),
positionConfidenceEllipse := {
semiMajorConfidence := SemiAxisLength_oneCentimeter_,
semiMinorConfidence := SemiAxisLength_oneCentimeter_,
semiMajorOrientation := {
headingValue := HeadingValue_wgs84North_,
headingConfidence := 10
}
},
elevation := {
elevationValue := ElevationValue_seaLevel_,
elevationConfidence := ElevationConfidence_unavailable_
}
}
} // end positionTemplates
/**
* @desc Default Receive template for CAM PDU
template (present) CAM mw_camMsg_any := {
protocolVersion := 1,
messageID := 2,
stationID := ?
generationDeltaTime := ?,
camParameters := ?
group camBasicContainer {
* @desc
* Receive template for CAM PDU including basic container with
* given reference position
* @param p_referencePosition The reference position
*/
template (present) CAM mw_camMsg_BC_refPos(
in template(present) ReferencePosition p_referencePosition
) modifies mw_camMsg_any := {
cam := {
camParameters := {
basicContainer := {
stationType := ?,
referencePosition := p_referencePosition
highFrequencyContainer := ?,
lowFrequencyContainer := *,
specialVehicleContainer := *
}
} // end group camBasicContainer
group camHighFrequencyContainer {
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_basicVehicleContainer The including basic vehicle container
template (present) CAM mw_camMsg_HF_BV(
in template(present) BasicVehicleContainerHighFrequency p_basicVehicleContainer
) modifies mw_camMsg_any := {
basicContainer := ?,
highFrequencyContainer := {
basicVehicleContainerHighFrequency := ?
lowFrequencyContainer := *,
specialVehicleContainer := *
/**
* @desc Default Receive template for basic vehicle container in
* the high frequency container
*/
template (present) BasicVehicleContainerHighFrequency mw_HF_BV_any := {
heading := ?,
speed := ?,
driveDirection := ?,
vehicleLength := ?,
vehicleWidth := ?,
longitudinalAcceleration := ?,
curvature := ?,
curvatureCalculationMode := ?,
yawRate := ?,
accelerationControl := *,
laneNumber := *,
steeringWheelAngle := *,
lateralAcceleration := *,
verticalAcceleration := *,
performanceClass := *
}
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_curvatureValue The curvature
*/
template(present) BasicVehicleContainerHighFrequency mw_HF_BV_curvature(
in template(present) CurvatureValue p_curvatureValue
) modifies mw_HF_BV_any :=
{
curvature := {
curvatureValue := p_curvatureValue,
curvatureConfidence := ?
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_accCtrl The acceleration control
*/
template(present) BasicVehicleContainerHighFrequency mw_HF_BV_accCtrl(
in template(present) AccelerationControl p_accCtrl
) modifies mw_HF_BV_any :=
{
accelerationControl := p_accCtrl
}
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_headingValue The heading
*/
template(present) BasicVehicleContainerHighFrequency mw_HF_BV_heading(
in template(present) HeadingValue p_headingValue
) modifies mw_HF_BV_any :=
{
heading := {
headingValue := p_headingValue,
headingConfidence := ?
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_speedValue The speed
*/
template(present) BasicVehicleContainerHighFrequency mw_HF_BV_speed(
in template(present) SpeedValue p_speedValue
) modifies mw_HF_BV_any :=
{
speed := {
speedValue := p_speedValue,
speedConfidence := ?
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_driveDirection The drive direction
*/
template(present) BasicVehicleContainerHighFrequency mw_HF_BV_driveDirection(
in template(present) DriveDirection p_driveDirection
) modifies mw_HF_BV_any :=
{
driveDirection := p_driveDirection
}
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_yawRateValue The yaw rate
*/
template(present) BasicVehicleContainerHighFrequency mw_HF_BV_yawRate(
in template(present) YawRateValue p_yawRateValue
) modifies mw_HF_BV_any :=
{
yawRate := {
yawRateValue := p_yawRateValue,
yawRateConfidence := ?
} // end group camHighFrequencyContainer
group camLowFrequencyContainer {
/**
* @desc Default Receive template for CAM PDU including
* optional lowFrequencyContainer
*/
template (present) CAM mw_camMsg_LF_any modifies mw_camMsg_any := {
basicContainer := ?,
highFrequencyContainer := ?,
lowFrequencyContainer := ?,
specialVehicleContainer := *
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_basicVehicleContainer The including basic vehicle container
*/
template (present) CAM mw_camMsg_LF_BV(
in template(present) BasicVehicleContainerLowFrequency p_basicVehicleContainer
) modifies mw_camMsg_any := {
basicContainer := ?,
highFrequencyContainer := ?,
lowFrequencyContainer := {
basicVehicleContainerLowFrequency := ?
},
specialVehicleContainer := *
* @desc Default Receive template for basic vehicle container in
* the low frequency container
template (present) BasicVehicleContainerLowFrequency mw_LF_BV_any := {
vehicleRole := ?,
exteriorLights := ?,
pathHistory := ?
/**
* @desc
* Receive template for CAM PDU including specific basic vehicle container
* @param p_extLights The exterior lights
*/
template(present) BasicVehicleContainerLowFrequency mw_LF_BV_extLights(
in template(present) ExteriorLights p_extLights
) modifies mw_LF_BV_any :=
{
exteriorLights := p_extLights
} // end group camLowFrequencyContainer
group camSpecialVehicleContainer {
* @desc Default Receive template for CAM PDU including
* optional specialVehicleContainer
template (present) CAM mw_camMsg_SVC_any modifies mw_camMsg_any := {
basicContainer := ?,
highFrequencyContainer := ?,
lowFrequencyContainer := *,
specialVehicleContainer := ?
/**
* @desc Receive template for CAM PDU including optional specialVehicleContainer
* @param p_specialVehicleContainer The expected specialVehicleContainer
*/
template (present) CAM mw_camMsg_SVC(
in template (present) SpecialVehicleContainer p_specialVehicleContainer
) modifies mw_camMsg_SVC_any := {
specialVehicleContainer := p_specialVehicleContainer
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
/**
* @desc Receive template for specialVehicleContainer public transport
*/
template (present) SpecialVehicleContainer mw_publicTransport_any := {
publicTransportContainer := ?
}
/**
* @desc Receive template for specialVehicleContainer special transport
*/
template (present) SpecialVehicleContainer mw_specialTransport_any := {
specialTransportContainer := ?
}
/**
* @desc Receive template for specialVehicleContainer dangerous goods
*/
template (present) SpecialVehicleContainer mw_dangerousGoods_any := {
dangerousGoodsContainer := ?
}
/**
* @desc Receive template for specialVehicleContainer road works
*/
template (present) SpecialVehicleContainer mw_roadWorks_any := {
roadWorksContainerBasic := ?
}
/**
* @desc Receive template for specialVehicleContainer rescue
*/
template (present) SpecialVehicleContainer mw_rescue_any := {
rescueContainer := ?
}
/**
* @desc Receive template for specialVehicleContainer emergency
*/
template (present) SpecialVehicleContainer mw_emergency_any := {
emergencyContainer := ?
}
/**
* @desc Receive template for specialVehicleContainer safety car
*/
template (present) SpecialVehicleContainer mw_safetyCar_any := {
safetyCarContainer := ?
}
} //end group camSpecialVehicleContainer
group camAnyVehicle {
* @desc Send template for Vehicle CAM PDU
* @param p_stationId Station ID of the source
* @param p_generationTime Timestamp of the generated message
* @param p_referencePosition Position of the sending station
template (value) CAM m_camMsg_vehicle(
StationID p_stationId,
GenerationDeltaTime p_generationTime,
template (value) ReferencePosition p_referencePosition
) := {
header := {
protocolVersion := 1,
messageID := 2,
stationID := p_stationId
},
generationDeltaTime := p_generationTime,
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
basicContainer := {
stationType := StationType_passengerCar_,
referencePosition := p_referencePosition
},
highFrequencyContainer := {
basicVehicleContainerHighFrequency := {
heading := {
headingValue := HeadingValue_wgs84North_, //0
headingConfidence := 10
},
speed := {
speedValue := 45,
speedConfidence := 5
},
driveDirection := forward,
vehicleLength := {
vehicleLengthValue := 50,
vehicleLengthConfidenceIndication := noTrailerPresent
},
vehicleWidth := 21,
longitudinalAcceleration := {
longitudinalAccelerationValue := LongitudinalAccelerationValue_unavailable_,
longitudinalAccelerationConfidence := AccelerationConfidence_unavailable_
},
curvature := {
curvatureValue := CurvatureValue_straight_,
curvatureConfidence := unavailable
},
curvatureCalculationMode := yawRateUsed,
yawRate := {
yawRateValue := YawRateValue_straight_,
yawRateConfidence := unavailable
},
accelerationControl := omit,
laneNumber := omit,
steeringWheelAngle := omit,
lateralAcceleration := omit,
verticalAcceleration := omit,
performanceClass := omit
},
lowFrequencyContainer := {
basicVehicleContainerLowFrequency := {
vehicleRole := default_,
exteriorLights := ExteriorLights_daytimeRunningLightsOn_,
pathHistory := {}
},
specialVehicleContainer := omit
} // end camAnyVehicle
group camAccelerationControlTemplates {
/**
* @desc Receive template for acceleration control with brake padel active on
*/
template AccelerationControl mw_brakePedalActive_On := '1*'B length(7);
/**
* @desc Receive template for acceleration control with brake padel active off
*/
template AccelerationControl mw_brakePedalActive_Off := '0*'B length(7);
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
/**
* @desc Receive template for acceleration control with gas padel active on
*/
template AccelerationControl mw_gasPedalActive_On := '?1*'B length(7);
/**
* @desc Receive template for acceleration control with gas padel active off
*/
template AccelerationControl mw_gasPedalActive_Off := '?0*'B length(7);
/**
* @desc Receive template for acceleration control with emergency brake active on
*/
template AccelerationControl mw_emergencyBrakeActive_On := '??1*'B length(7);
/**
* @desc Receive template for acceleration control with emergency brake active off
*/
template AccelerationControl mw_emergencyBrakeActive_Off := '??0*'B length(7);
/**
* @desc Receive template for acceleration control with collision warning active on
*/
template AccelerationControl mw_collisionWarningActive_On := '???1*'B length(7);
/**
* @desc Receive template for acceleration control with collision warning active off
*/
template AccelerationControl mw_collisionWarningActive_Off := '???1*'B length(7);
/**
* @desc Receive template for acceleration control with adaptive cruise control active on
*/
template AccelerationControl mw_accActive_On := '????1*'B length(7);
/**
* @desc Receive template for acceleration control with adaptive cruise control active off
*/
template AccelerationControl mw_accActive_Off := '????1*'B length(7);
/**
* @desc Receive template for acceleration control with cruise control active on
*/
template AccelerationControl mw_cruiseControl_On := '?????1*'B length(7);
/**
* @desc Receive template for acceleration control with cruise control active off
*/
template AccelerationControl mw_cruiseControl_Off := '?????1*'B length(7);
/**
* @desc Receive template for acceleration control with speed limiter active on
*/
template AccelerationControl mw_speedLimiterActive_On := '*1'B length(7);
/**
* @desc Receive template for acceleration control with speed limiter active off
*/
template AccelerationControl mw_speedLimiterActive_Off := '*0'B length(7);
} // end group camAccelerationControlTemplates
/**
* @desc Receive template for exterior lights with low beam lights off
template ExteriorLights mw_lowBeamLightsOff := '0*'B length (8);
/**
* @desc Receive template for exterior lights with low beam lights on
template ExteriorLights mw_lowBeamLightsOn := '1*'B length(8);
/**
* @desc Receive template for exterior lights with high beam lights off
template ExteriorLights mw_highBeamLightsOff := '?0*'B length(8);
/**
* @desc Receive template for exterior lights with high beam lights on
template ExteriorLights mw_highBeamLightsOn := '?1*'B length(8);
/**
* @desc Receive template for exterior lights with left turn signal off
template ExteriorLights mw_leftTurnSignalOff := '??0*'B length(8);
/**
* @desc Receive template for exterior lights with left turn signal on
template ExteriorLights mw_leftTurnSignalOn := '??1*'B length(8);
/**
* @desc Receive template for exterior lights with right turn signal off
template ExteriorLights mw_rightTurnSignalOff := '???0*'B length(8);
/**
* @desc Receive template for exterior lights with right turn signal on
template ExteriorLights mw_rightTurnSignalOn := '???1*'B length(8);
* @desc Receive template for exterior lights with day time running lights off
template ExteriorLights mw_daytimeRunningLightsOff := '????0*'B length(8);
* @desc Receive template for exterior lights with day time running lights on
template ExteriorLights mw_daytimeRunningLightsOn := '????1*'B length(8);
* @desc Receive template for exterior lights with reverse light off
template ExteriorLights mw_reverseLightOff := '?????0*'B length(8);
* @desc Receive template for exterior lights with reverse light on
template ExteriorLights mw_reverseLightOn := '?????1*'B length(8);
* @desc Receive template for exterior lights with fog light off
template ExteriorLights mw_fogLightOff := '??????0*'B length(8);
* @desc Receive template for exterior lights with fog light on
template ExteriorLights mw_fogLightOn := '??????1*'B length(8);
/**
* @desc Receive template for exterior lights with parking lights off
template ExteriorLights mw_parkingLightsOff := '*0'B length(8);
/**
* @desc Receive template for exterior lights with parking lights on
template ExteriorLights mw_parkingLightsOn := '*1'B length(8);
/**
* @desc Receive template for exterior lights with hazard lights on
template ExteriorLights mw_hazardConditionOn := '??11*'B length(8);
group camTemplateFunctions {
/**
* @desc Converts an integer to Longitude
* @param p_longitude The integer value
* @return The longitude value
*/
function f_integer2Longitude(in integer p_longitude) return Longitude {
var Longitude v_longitude := f_abs(p_longitude);
/**
* @desc Converts an integer to Latitude
* @param p_latitude The integer value
* @return The latitude value
*/
function f_integer2Latitude(in integer p_latitude) return Latitude {
var Latitude v_latitude := f_abs(p_latitude);
} // end camTemplateFunctions