LibItsCam_Templates.ttcn 28.1 KB
Newer Older
1
/**
2
3
4
5
 *    @author   ETSI / STF405 / STF449
 *    @version  $URL$
 *              $Id$
 *    @desc     Module containing base template definitions for CAM
6
7
 *
 */
berge's avatar
berge committed
8
module LibItsCam_Templates {
9
    
10
    // LibIts
11
12
13
14
15
    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;
    
    // LibItsCommon
16
    import from LibItsCommon_Functions all;
17
    import from LibItsCommon_TypesAndValues all;
18
19
    
    // LibItsCam
reinaortega's avatar
reinaortega committed
20
    import from LibItsCam_TestSystem all;
21
    import from LibItsCam_TypesAndValues all;
fischer's avatar
fischer committed
22
    
23
    group camPrimitives {
berge's avatar
berge committed
24
25
        
        /**
berge's avatar
berge committed
26
         * @desc    Receive template for CAM Message (CamPort Primitive)
berge's avatar
berge committed
27
28
29
         * @param   p_camMsg CAM Message to be sent
         */
        template CamInd mw_camInd (
30
            in template (present) CAM p_camMsg
berge's avatar
berge committed
31
32
33
34
35
36
        ) := { 
            msgIn := p_camMsg 
        };

        /**
         * @desc    Send template for CAM Message (CamPort Primitive)
berge's avatar
berge committed
37
         * @param   p_camMsg CAM Message to be received
berge's avatar
berge committed
38
39
         */    
        template (value) CamReq m_camReq (
40
            in template (value) CAM p_camMsg
berge's avatar
berge committed
41
42
43
        ) := { 
            msgOut := p_camMsg 
        };
44
        
45
        group camUtPrimitives {
46
            
47
48
49
50
51
52
            /**
             * @desc Initializes the CAM IUT. 
             */
            template (value) UtInitialize m_camInitialize := {
            }
            
53
54
            /**
             * @desc Change the curvature
55
             * @param p_offset The curvature value offset
56
             */
garciay's avatar
garciay committed
57
58
            template (value) UtCamTrigger m_changeCurvature(CurvatureValue p_changeCurvature) := {
                changeCurvature := p_changeCurvature
59
60
61
            }
            
            /**
62
63
             * @desc Change the speed
             * @param p_offset The speed value offset
64
             */
garciay's avatar
garciay committed
65
66
            template (value) UtCamTrigger m_changeSpeed(SpeedValue p_changeSpeed) := {
                changeSpeed := p_changeSpeed
67
68
69
            }
            
            /**
70
             * @desc Set the acceleration control status
71
72
             * @param p_status The status to set
             */
73
74
            template (value) UtCamTrigger m_setAccelerationControlStatus(AccelerationControl p_status) := {
                setAccelerationControlStatus := p_status
75
76
77
            }
            
            /**
78
             * @desc Set the exterior lights status
79
80
             * @param p_status The status to set
             */
81
82
            template (value) UtCamTrigger m_setExteriorLightsStatus(ExteriorLights p_status) := {
                setExteriorLightsStatus := p_status
83
84
85
            }
            
            /**
86
87
             * @desc Change the heading
             * @param p_offset The heading value offset
88
             */
garciay's avatar
garciay committed
89
90
            template (value) UtCamTrigger m_changeHeading(HeadingValue p_changeHeading) := {
                changeHeading := p_changeHeading
91
92
93
            }
            
            /**
94
95
             * @desc Set the drive direction
             * @param p_driveDirection The drive direction
96
             */
97
98
            template (value) UtCamTrigger m_setDriveDirection(DriveDirection p_driveDirection) := {
                setDriveDirection := p_driveDirection
99
100
101
            }
            
            /**
102
103
             * @desc Change the yaw rate
             * @param p_offset The yaw rate value offset
104
             */
garciay's avatar
garciay committed
105
106
            template (value) UtCamTrigger m_changeYawRate(YawRateValue p_changeYawRate) := {
                changeYawRate := p_changeYawRate
107
108
            }
            
garciay's avatar
garciay committed
109
110
111
112
113
114
115
116
            /**
             * @desc Set the vehicle role
             * @param p_vehicleRole The vehicle role
             */
            template (value) UtCamTrigger m_setVehicleRole(VehicleRole p_vehicleRole) := {
                setVehicleRole := p_vehicleRole
            }
            
garciay's avatar
garciay committed
117
118
119
120
121
122
123
124
            /**
             * @desc Set the dangerous good description
             * @param p_dangerousGoods The dangerous good description
             */
            template (value) UtCamTrigger m_setDangerousGoods(DangerousGoodsBasic p_dangerousGoods) := {
                setDangerousGoods := p_dangerousGoods
            }
            
125
            /**
126
127
             * @desc Change the position in the direction of the current heading
             * @param p_offset Offset to the current position in meter
128
             */
129
130
            template (value) UtCamTrigger m_changePosition(UtChangePosition p_offset) := {
                changePosition := p_offset
131
132
133
134
135
136
            }
            
            /**
             * @desc Checks the receive of a message at LDM
             * @param p_message The CAM message to check
             */
137
138
            template (value) UtCamTrigger m_checkLdm(CAM p_message) := {
                checkLdm := p_message
139
140
141
142
143
            }
            
        } // end utPrimitives
        
    } // end group Primitives
144
145
146

    group positionTemplates {
        
garciay's avatar
garciay committed
147
148
        /**
         * @desc The test system reference position.
149
         */
150
        template (value) ReferencePosition m_tsPosition := {
berge's avatar
berge committed
151
            latitude := f_integer2Latitude(f_getTsLatitude()),
152
153
            longitude := f_integer2Longitude(f_getTsLongitude()),
            positionConfidenceEllipse := {
garciay's avatar
garciay committed
154
155
                semiMajorConfidence   := c_semiAxisLengthOneCentimeter,
                semiMinorConfidence   := c_semiAxisLengthOneCentimeter,
156
                semiMajorOrientation  := c_headingValue_wgs84North
157
            },
berge's avatar
berge committed
158
            altitude := {
garciay's avatar
garciay committed
159
                altitudeValue := c_altitudeValue_seaLevel,
berge's avatar
berge committed
160
                altitudeConfidence := unavailable
161
            }
162
163
164
        }
        
    } // end positionTemplates
165
    
berge's avatar
berge committed
166
167
    /**
     * @desc    Default Receive template for CAM PDU
berge's avatar
berge committed
168
     */
169
    template (present) CAM mw_camMsg_any := {
170
        header := {
171
172
173
            protocolVersion := 1, 
            messageID := 2, 
            stationID := ?
174
175
        },
        cam := {
176
177
            generationDeltaTime := ?,
            camParameters := ?
178
        }
179
    }
berge's avatar
berge committed
180
    
181
182
    group camBasicContainer {
        
berge's avatar
berge committed
183
        /**
184
185
186
187
188
189
190
191
192
193
194
195
196
         * @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
berge's avatar
berge committed
197
                    },
198
199
200
201
                    highFrequencyContainer := ?,
                    lowFrequencyContainer := *,
                    specialVehicleContainer := *
                }
berge's avatar
berge committed
202
203
            }
        }
204
205
        
    } // end group camBasicContainer
berge's avatar
berge committed
206
    
207
    group camHighFrequencyContainer {
berge's avatar
berge committed
208
        
berge's avatar
berge committed
209
        /**
210
211
         * @desc
         *     Receive template for CAM PDU including specific basic vehicle container
garciay's avatar
garciay committed
212
         * @param p_basicVehicleContainer The including basic vehicle container
berge's avatar
berge committed
213
         */
214
215
216
        template (present) CAM mw_camMsg_HF_BV(
            in template(present) BasicVehicleContainerHighFrequency p_basicVehicleContainer
        ) modifies mw_camMsg_any := {
berge's avatar
berge committed
217
218
            cam := {
                camParameters := {
219
220
                    basicContainer := ?,
                    highFrequencyContainer := {
221
                        basicVehicleContainerHighFrequency := p_basicVehicleContainer
berge's avatar
berge committed
222
                    },
223
224
                    lowFrequencyContainer := *,
                    specialVehicleContainer := *
berge's avatar
berge committed
225
226
227
228
                }
            }
        }
        
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
        /**
         * @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 := *,
244
            lanePosition := *,
245
246
247
            steeringWheelAngle := *,
            lateralAcceleration := *,
            verticalAcceleration := *,
248
249
            performanceClass := *,
            cenDsrcTollingZone := *
250
        }
berge's avatar
berge committed
251
        
252
253
254
255
256
257
258
259
260
261
262
263
        /**
         * @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 := ?
berge's avatar
berge committed
264
            }
265
        }
berge's avatar
berge committed
266
        
267
268
269
270
271
272
273
274
275
276
277
        /**
         * @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
        }
berge's avatar
berge committed
278
        
279
280
281
282
283
284
285
286
287
288
289
290
        /**
         * @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 := ?
berge's avatar
berge committed
291
            }
292
        }
berge's avatar
berge committed
293
        
294
295
296
297
298
299
300
301
302
303
304
305
        /**
         * @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 := ?
berge's avatar
berge committed
306
            }
307
        }
berge's avatar
berge committed
308
        
309
310
311
312
313
314
315
316
317
318
319
        /**
         * @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
        }
berge's avatar
berge committed
320
        
321
322
323
324
325
326
327
328
329
330
331
332
        /**
         * @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 := ?
berge's avatar
berge committed
333
            }
334
        }
berge's avatar
berge committed
335
        
336
337
338
    } // end group camHighFrequencyContainer
    
    group camLowFrequencyContainer {
berge's avatar
berge committed
339
        
340
341
342
343
344
        /**
         * @desc Default Receive template for CAM PDU including 
         *       optional lowFrequencyContainer
         */
        template (present) CAM mw_camMsg_LF_any modifies mw_camMsg_any := {
berge's avatar
berge committed
345
346
            cam := {
                camParameters := {
347
348
349
350
                    basicContainer := ?,
                    highFrequencyContainer := ?,
                    lowFrequencyContainer := ?,
                    specialVehicleContainer := *
berge's avatar
berge committed
351
352
                }
            }
353
        }
berge's avatar
berge committed
354
        
355
356
357
358
359
360
361
362
        /**
         * @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 := {
berge's avatar
berge committed
363
364
            cam := {
                camParameters := {
365
366
367
368
369
370
                    basicContainer := ?,
                    highFrequencyContainer := ?,
                    lowFrequencyContainer := {
                        basicVehicleContainerLowFrequency := ?
                    },
                    specialVehicleContainer := *
berge's avatar
berge committed
371
372
                }
            }
373
        }
berge's avatar
berge committed
374
        
berge's avatar
berge committed
375
        /**
376
377
         * @desc    Default Receive template for basic vehicle container in 
         *          the low frequency container
berge's avatar
berge committed
378
         */
379
380
381
382
        template (present) BasicVehicleContainerLowFrequency mw_LF_BV_any := {
            vehicleRole := ?,
            exteriorLights := ?,
            pathHistory := ?
berge's avatar
berge committed
383
        }
384
        
385
386
387
388
389
390
391
392
393
394
        /**
         * @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
395
        }
396
397
        
    } // end group camLowFrequencyContainer
berge's avatar
berge committed
398
    
399
    group camSpecialVehicleContainer {
berge's avatar
berge committed
400
        
berge's avatar
berge committed
401
        /**
402
403
         * @desc Default Receive template for CAM PDU including 
         *       optional specialVehicleContainer
berge's avatar
berge committed
404
         */
405
        template (present) CAM mw_camMsg_SVC_any modifies mw_camMsg_any := {
berge's avatar
berge committed
406
407
            cam := {
                camParameters := {
408
409
410
411
                    basicContainer := ?,
                    highFrequencyContainer := ?,
                    lowFrequencyContainer := *,
                    specialVehicleContainer := ?
412
413
414
                }
            }
        }
415
416
417
418
419
420
421
422
        
        /**
         * @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 := {
berge's avatar
berge committed
423
424
            cam := {
                camParameters := {
425
                    specialVehicleContainer := p_specialVehicleContainer
426
427
428
                }
            }
        }
berge's avatar
berge committed
429
        
430
431
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
        /**
         * @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
berge's avatar
berge committed
480
    
481
482
    group camAnyVehicle {
        
berge's avatar
berge committed
483
        /**
484
485
486
487
         * @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
berge's avatar
berge committed
488
         */
489
        template (value) CAM m_camMsg_vehicle_HF_BV(
490
491
492
493
494
495
496
497
498
            StationID p_stationId,
            GenerationDeltaTime p_generationTime,
            template (value) ReferencePosition p_referencePosition
        ) := {
            header := {
                protocolVersion := 1,
                messageID := 2,
                stationID := p_stationId
            },
berge's avatar
berge committed
499
            cam := {
500
                generationDeltaTime := p_generationTime,
berge's avatar
berge committed
501
                camParameters := {
502
                    basicContainer := {
garciay's avatar
garciay committed
503
                        stationType := c_stationType_passengerCar,
504
505
506
507
508
                        referencePosition := p_referencePosition
                    },
                    highFrequencyContainer := {
                        basicVehicleContainerHighFrequency := {
                            heading := {
garciay's avatar
garciay committed
509
                                headingValue := c_headingValue_wgs84North, //0
510
511
512
513
514
515
516
517
518
519
520
521
522
                                headingConfidence := 10
                            },
                            speed := {
                                speedValue := 45,
                                speedConfidence := 5
                            },
                            driveDirection := forward,
                            vehicleLength := {
                                vehicleLengthValue := 50,
                                vehicleLengthConfidenceIndication := noTrailerPresent
                            },
                            vehicleWidth := 21,
                            longitudinalAcceleration := {
garciay's avatar
garciay committed
523
524
                                longitudinalAccelerationValue := c_longitudinalAccelerationValue_unavailable,
                                longitudinalAccelerationConfidence := c_accelerationConfidence_unavailable
525
526
                            },
                            curvature := {
garciay's avatar
garciay committed
527
                                curvatureValue := c_curvatureValue_straight,
528
529
530
531
                                curvatureConfidence := unavailable
                            },
                            curvatureCalculationMode := yawRateUsed,
                            yawRate := {
garciay's avatar
garciay committed
532
                                yawRateValue := c_yawRateValue_straight,
533
534
535
                                yawRateConfidence := unavailable
                            },
                            accelerationControl := omit,
536
                            lanePosition := omit,
537
538
539
                            steeringWheelAngle := omit,
                            lateralAcceleration := omit,
                            verticalAcceleration := omit, 
540
541
                            performanceClass := omit,
                            cenDsrcTollingZone := omit
berge's avatar
berge committed
542
                        }
543
                    },
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
                    lowFrequencyContainer := omit,
                    specialVehicleContainer := omit
                }
            }
        }; // End of template m_camMsg_vehicle_HF_BV
        
        /**
         * @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
        ) modifies m_camMsg_vehicle_HF_BV := {
            cam := {
                camParameters := {
563
564
565
                    lowFrequencyContainer := {
                        basicVehicleContainerLowFrequency := {
                            vehicleRole := default_,
garciay's avatar
garciay committed
566
                            exteriorLights := c_exteriorLights_daytimeRunningLightsOn,
567
                            pathHistory := {}
berge's avatar
berge committed
568
                        }
569
                    }
berge's avatar
berge committed
570
571
572
573
                }
            }
        };
        
574
575
576
    } // end camAnyVehicle
    
    group camAccelerationControlTemplates {
berge's avatar
berge committed
577
        
578
579
580
581
        /**
         * @desc  Receive template for acceleration control with brake padel active on
         */
        template AccelerationControl mw_brakePedalActive_On         := '1*'B length(7);
berge's avatar
berge committed
582
        
583
584
585
586
        /**
         * @desc  Receive template for acceleration control with brake padel active off
         */
        template AccelerationControl mw_brakePedalActive_Off        := '0*'B length(7);
berge's avatar
berge committed
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
        /**
         * @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
         */
616
        template AccelerationControl mw_collisionWarningActive_Off  := '???0*'B length(7);
617
618
619
620
621
622
623
624
625
        
        /**
         * @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
         */
626
        template AccelerationControl mw_accActive_Off               := '????0*'B length(7);
627
628
629
630
631
632
633
634
635
        
        /**
         * @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
         */
636
        template AccelerationControl mw_cruiseControl_Off           := '?????0*'B length(7);
637
638
639
640
641
642
643
644
645
646
647
648
649
        
        /**
         * @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
    
berge's avatar
berge committed
650
    group camExteriorLightsTemplates {
651
        
berge's avatar
berge committed
652
653
        /**
         * @desc  Receive template for exterior lights with low beam lights off  
berge's avatar
berge committed
654
         */
655
        template ExteriorLights mw_lowBeamLightsOff := '0*'B length (8);
656
      
berge's avatar
berge committed
657
658
        /**
         * @desc  Receive template for exterior lights with low beam lights on 
berge's avatar
berge committed
659
         */
660
        template ExteriorLights mw_lowBeamLightsOn          := '1*'B length(8);
661
      
berge's avatar
berge committed
662
663
        /**
         * @desc  Receive template for exterior lights with high beam lights off 
berge's avatar
berge committed
664
         */
665
        template ExteriorLights mw_highBeamLightsOff        := '?0*'B length(8);
666
      
berge's avatar
berge committed
667
668
        /**
         * @desc  Receive template for exterior lights with high beam lights on 
berge's avatar
berge committed
669
         */
670
        template ExteriorLights mw_highBeamLightsOn         := '?1*'B length(8);
berge's avatar
berge committed
671
        
berge's avatar
berge committed
672
673
        /**
         * @desc  Receive template for exterior lights with left turn signal off 
berge's avatar
berge committed
674
         */
675
        template ExteriorLights mw_leftTurnSignalOff        := '??0*'B length(8);
676
      
berge's avatar
berge committed
677
678
        /**
         * @desc  Receive template for exterior lights with left turn signal on 
berge's avatar
berge committed
679
         */
680
        template ExteriorLights mw_leftTurnSignalOn         := '??1*'B length(8);
berge's avatar
berge committed
681
        
berge's avatar
berge committed
682
683
        /**
         * @desc  Receive template for exterior lights with right turn signal off 
berge's avatar
berge committed
684
         */
685
        template ExteriorLights mw_rightTurnSignalOff       := '???0*'B length(8);
berge's avatar
berge committed
686
687
        /**
         * @desc  Receive template for exterior lights with right turn signal on 
berge's avatar
berge committed
688
         */
689
        template ExteriorLights mw_rightTurnSignalOn        := '???1*'B length(8); 
berge's avatar
berge committed
690
        
berge's avatar
berge committed
691
        /**
692
         * @desc  Receive template for exterior lights with day time running lights off 
berge's avatar
berge committed
693
         */
694
        template ExteriorLights mw_daytimeRunningLightsOff  := '????0*'B length(8);
berge's avatar
berge committed
695
        /**
696
         * @desc  Receive template for exterior lights with day time running lights on 
berge's avatar
berge committed
697
         */
698
        template ExteriorLights mw_daytimeRunningLightsOn   := '????1*'B length(8);
berge's avatar
berge committed
699
        
berge's avatar
berge committed
700
        /**
701
         * @desc  Receive template for exterior lights with reverse light off 
berge's avatar
berge committed
702
         */
703
        template ExteriorLights mw_reverseLightOff          := '?????0*'B length(8);
berge's avatar
berge committed
704
        
berge's avatar
berge committed
705
        /**
706
         * @desc  Receive template for exterior lights with reverse light on 
berge's avatar
berge committed
707
         */
708
        template ExteriorLights mw_reverseLightOn           := '?????1*'B length(8);
berge's avatar
berge committed
709
        
berge's avatar
berge committed
710
        /**
711
         * @desc  Receive template for exterior lights with fog light off 
berge's avatar
berge committed
712
         */
713
        template ExteriorLights mw_fogLightOff              := '??????0*'B length(8);
berge's avatar
berge committed
714
        
berge's avatar
berge committed
715
        /**
716
         * @desc  Receive template for exterior lights with fog light on 
berge's avatar
berge committed
717
         */
718
        template ExteriorLights mw_fogLightOn               := '??????1*'B length(8);
berge's avatar
berge committed
719
        
berge's avatar
berge committed
720
721
        /**
         * @desc  Receive template for exterior lights with parking lights off 
berge's avatar
berge committed
722
         */
723
        template ExteriorLights mw_parkingLightsOff         := '*0'B length(8);
berge's avatar
berge committed
724
         
berge's avatar
berge committed
725
726
        /**
         * @desc  Receive template for exterior lights with parking lights on 
berge's avatar
berge committed
727
         */
728
        template ExteriorLights mw_parkingLightsOn          := '*1'B length(8);
berge's avatar
berge committed
729
        
berge's avatar
berge committed
730
731
        /**
         * @desc  Receive template for exterior lights with hazard lights on 
berge's avatar
berge committed
732
         */
733
        template ExteriorLights mw_hazardConditionOn        := '??11*'B length(8);
berge's avatar
berge committed
734
735
        
    } // end group exteriorLights
berge's avatar
berge committed
736
    
737
738
    group camTemplateFunctions {
        
garciay's avatar
garciay committed
739
740
741
742
        /**
         * @desc Converts an integer to Longitude
         * @param p_longitude The integer value
         * @return The longitude value
743
         */
berge's avatar
berge committed
744
745
        function f_integer2Longitude(in integer p_longitude) return Longitude {
            
746
            var Longitude v_longitude := f_abs(p_longitude);
berge's avatar
berge committed
747
748
749
750
            
            return v_longitude;
        }
        
751
752
753
754
755
        /**
         * @desc Converts an integer to Latitude
         * @param p_latitude The integer value
         * @return The latitude value
         */
berge's avatar
berge committed
756
757
        function f_integer2Latitude(in integer p_latitude) return Latitude {
            
758
            var Latitude v_latitude := f_abs(p_latitude);
berge's avatar
berge committed
759
760
761
762
            
            return v_latitude;
        }
        
763
    } // end camTemplateFunctions
764

berge's avatar
berge committed
765
} // end LibItsCam_Templates