Rev

Rev 2230 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | Bug Tracker

Rev 2230 Rev 2398
Line 2... Line 2...
2
 *    @author   ETSI STF484
2
 *    @author   ETSI STF484
3
 *    @version  $URL: file:///D:/RepositoriesNew/ITS/trunk/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn $
3
 *    @version  $URL: file:///D:/RepositoriesNew/ITS/trunk/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn $
4
 *              $Id: ItsCam_TpFunctions.ttcn 2230 2015-06-03 09:11:02Z mullers $
4
 *              $Id: ItsCam_TpFunctions.ttcn 2398 2016-07-01 09:24:55Z filatov $
5
 *    @desc     CAM TP functions
5
 *    @desc     CAM TP functions
6
 *
6
 *
7
 */
7
 */
8
8
9
module ItsCam_TpFunctions {
9
module ItsCam_TpFunctions {
Line 12... Line 12...
12
    import from LibCommon_Sync all;
12
    import from LibCommon_Sync all;
13
    import from LibCommon_VerdictControl all;
13
    import from LibCommon_VerdictControl all;
14
    import from LibCommon_Time all;
14
    import from LibCommon_Time all;
15
    import from LibCommon_BasicTypesAndValues all;
15
    import from LibCommon_BasicTypesAndValues all;
16
   
16
   
-
 
17
    // LibItsCommon
-
 
18
    import from LibItsCommon_Pixits all;
17
    // LibIts
19
    // LibIts
18
    import from LibItsCommon_Functions all;
20
    import from LibItsCommon_Functions all;
19
    import from LibItsCommon_TypesAndValues {
21
    import from LibItsCommon_TypesAndValues all;
20
        type UtChangePosition
-
 
21
    };
-
 
22
    import from LibItsCam_TestSystem all;
22
    import from LibItsCam_TestSystem all;
23
    import from LibItsCam_Functions all;
23
    import from LibItsCam_Functions all;
24
    import from LibItsCam_Templates all;
24
    import from LibItsCam_Templates all;
25
    import from LibItsCam_TypesAndValues all;
25
    import from LibItsCam_TypesAndValues all;
26
    import from LibItsCam_Pics {modulepar all};
26
    import from LibItsCam_Pics {modulepar all};
Line 166... Line 166...
166
                    }
166
                    }
167
                }
167
                }
168
               
168
               
169
                // Test Body
169
                // Test Body
170
                for (v_cntSpeed:=0; v_cntSpeed<lengthof(v_speedValues); v_cntSpeed:=v_cntSpeed + 1) {
170
                for (v_cntSpeed:=0; v_cntSpeed<lengthof(v_speedValues); v_cntSpeed:=v_cntSpeed + 1) {
171
                    f_utTriggerEvent(m_changeSpeed(v_speedValues[v_cntSpeed]));
171
                    f_changeSpeed(v_speedValues[v_cntSpeed]);
172
                    v_cntTime := 0;
172
                    v_cntTime := 0;
173
                    tc_ac.start;
173
                    tc_ac.start;
174
                    alt {
174
                    alt {
175
                        [] camPort.receive(mw_camInd ( mw_camMsg_LF_any )) {
175
                        [] camPort.receive(mw_camInd ( mw_camMsg_LF_any )) {
176
                            tc_ac.stop;
176
                            tc_ac.stop;
Line 318... Line 318...
318
                    }
318
                    }
319
                }
319
                }
320
               
320
               
321
                // Test Body
321
                // Test Body
322
                for (v_cntSpeed:=0; v_cntSpeed<lengthof(v_speedValues); v_cntSpeed:=v_cntSpeed + 1) {
322
                for (v_cntSpeed:=0; v_cntSpeed<lengthof(v_speedValues); v_cntSpeed:=v_cntSpeed + 1) {
323
                    f_utTriggerEvent(m_changeSpeed(v_speedValues[v_cntSpeed]));
323
                    f_changeSpeed(v_speedValues[v_cntSpeed]);
324
                    v_cntTime := 0;
324
                    v_cntTime := 0;
325
                    tc_ac.start;
325
                    tc_ac.start;
326
                    alt {
326
                    alt {
327
                        [] camPort.receive(mw_camInd ( mw_camMsg_SVC_any )) {
327
                        [] camPort.receive(mw_camInd ( mw_camMsg_SVC_any )) {
328
                            tc_ac.stop;
328
                            tc_ac.stop;
Line 417... Line 417...
417
                }
417
                }
418
               
418
               
419
                /**
419
                /**
420
                 * @desc    TP Function for TC_CAM_MSD_INA_BV_01_01
420
                 * @desc    TP Function for TC_CAM_MSD_INA_BV_01_01
421
                 */
421
                 */
-
 
422
                 // TODO yann/ifsttar: why 3601? 0 and 3600 indicates the north!!!!
422
                function f_CAM_MSD_INA_BV_01_01() runs on ItsCam {
423
                function f_CAM_MSD_INA_BV_01_01() runs on ItsCam {
423
                   
424
                   
424
                    // Local variables
425
                    // Local variables
425
                    var CamInd v_camInd;
426
                    var CamInd v_camInd;
426
                    var template (present) CurvatureValue v_curVal := ?;
427
                    var template (present) CurvatureValue v_curVal := ?;
Line 464... Line 465...
464
                                if (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue >= 0) {
465
                                if (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue >= 0) {
465
                                    v_curVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue + c_curValOffset) mod 30001;
466
                                    v_curVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue + c_curValOffset) mod 30001;
466
                                } else { // TODO Add negative value case
467
                                } else { // TODO Add negative value case
467
                                    v_curVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue - c_curValOffset;
468
                                    v_curVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue - c_curValOffset;
468
                                    if (valueof(v_curVal) < -30000) {
469
                                    if (valueof(v_curVal) < -30000) {
469
                                        v_curVal := 0;
470
                                        v_curVal := 0; // yann/ifsttar TODO It's not a true negative modulus operation
470
                                    }
471
                                    }
471
                                }
472
                                }
472
                                f_utTriggerEvent(m_changeCurvature(c_curValOffset));
473
                                f_utTriggerEvent(m_changeCurvature(c_curValOffset));
473
                                tc_ac.start;
474
                                tc_ac.start;
474
                                repeat;
475
                                repeat;
Line 1595... Line 1596...
1595
                   
1596
                   
1596
                    // Test Body
1597
                    // Test Body
1597
                    log("*** " & testcasename() & ": Checking INFO==Heading value ***");
1598
                    log("*** " & testcasename() & ": Checking INFO==Heading value ***");
1598
                   
1599
                   
1599
                    // change the heading value to retrieve the current value
1600
                    // change the heading value to retrieve the current value
1600
                    f_utTriggerEvent(m_changeHeading(c_headingValOffset));
1601
                    f_changeHeading(c_headingValOffset);
1601
                   
1602
                   
1602
                    tc_ac.start;
1603
                    tc_ac.start;
1603
                    alt {
1604
                    alt {
1604
                        [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_heading(v_headingVal)) )) -> value v_camInd {
1605
                        [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_heading(v_headingVal)) )) -> value v_camInd {
1605
                            tc_ac.stop;
1606
                            tc_ac.stop;
Line 1610... Line 1611...
1610
                            else {
1611
                            else {
1611
                                log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
1612
                                log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
1612
                                v_initialReceived := true;
1613
                                v_initialReceived := true;
1613
                                //change again the heading value and set the expectation to the measured value
1614
                                //change again the heading value and set the expectation to the measured value
1614
                                v_headingVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.heading.headingValue+c_headingValOffset) mod 3601;
1615
                                v_headingVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.heading.headingValue+c_headingValOffset) mod 3601;
1615
                                f_utTriggerEvent(m_changeHeading(c_headingValOffset));
1616
                                f_changeHeading(c_headingValOffset);
1616
                                tc_ac.start;
1617
                                tc_ac.start;
1617
                                repeat;
1618
                                repeat;
1618
                            }
1619
                            }
1619
                        }
1620
                        }
1620
                        [] tc_ac.timeout {
1621
                        [] tc_ac.timeout {
Line 1658... Line 1659...
1658
                   
1659
                   
1659
                    // Test Body
1660
                    // Test Body
1660
                    log("*** " & testcasename() & ": Checking INFO==Speed value ***");
1661
                    log("*** " & testcasename() & ": Checking INFO==Speed value ***");
1661
                   
1662
                   
1662
                    // change the speed value to retrieve the current value
1663
                    // change the speed value to retrieve the current value
1663
                    f_utTriggerEvent(m_changeSpeed(c_speedValOffset));
1664
                    f_changeSpeed(c_speedValOffset);
1664
                   
1665
                   
1665
                    tc_ac.start;
1666
                    tc_ac.start;
1666
                    alt {
1667
                    alt {
1667
                        [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_speed(v_speedVal)) )) -> value v_camInd {
1668
                        [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_speed(v_speedVal)) )) -> value v_camInd {
1668
                            tc_ac.stop;
1669
                            tc_ac.stop;
Line 1673... Line 1674...
1673
                            else {
1674
                            else {
1674
                                log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
1675
                                log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
1675
                                v_initialReceived := true;
1676
                                v_initialReceived := true;
1676
                                //change again the speed value and set the expectation to the measured value
1677
                                //change again the speed value and set the expectation to the measured value
1677
                                v_speedVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue+c_speedValOffset) mod 16384;
1678
                                v_speedVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue+c_speedValOffset) mod 16384;
1678
                                f_utTriggerEvent(m_changeSpeed(c_speedValOffset));
1679
                                f_changeSpeed(c_speedValOffset);
1679
                                tc_ac.start;
1680
                                tc_ac.start;
1680
                                repeat;
1681
                                repeat;
1681
                            }
1682
                            }
1682
                        }
1683
                        }
1683
                        [] tc_ac.timeout {
1684
                        [] tc_ac.timeout {
Line 1796... Line 1797...
1796
                            else {
1797
                            else {
1797
                                log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
1798
                                log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
1798
                                v_initialReceived := true;
1799
                                v_initialReceived := true;
1799
                                //change again the yaw rate value and set the expectation to the measured value
1800
                                //change again the yaw rate value and set the expectation to the measured value
1800
                               v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue;
1801
                               v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue;
1801
                                if (valueof(v_yawRateVal)>=32767) {
1802
                                if (valueof(v_yawRateVal)>=32767) { // FIXME Yann/ifsttar: quid if we receive -32768
-
 
1803
                                                                    // FIXME if current value is 32760 and offset applied, we shall not expect posiive value
1802
                                    v_yawRateVal := -32766;
1804
                                    v_yawRateVal := -32766;
1803
                                }
1805
                                }
1804
                                else {
1806
                                else {
1805
                                    v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue+c_yawRateValOffset;
1807
                                    v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue+c_yawRateValOffset;
1806
                                }
1808
                                }
Line 2234... Line 2236...
2234
                                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
2236
                                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
2235
                                }
2237
                                }
2236
                            }
2238
                            }
2237
                            t_minTransInterval.start;
2239
                            t_minTransInterval.start;
2238
                        }
2240
                        }
2239
                        f_utTriggerEvent(m_changeSpeed(v_speedValues[v_cntSpeed]));
2241
                        f_changeSpeed(v_speedValues[v_cntSpeed]);
2240
                    }
2242
                    }
2241
                    t_minTransInterval.stop;
2243
                    t_minTransInterval.stop;
2242
                    log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***");
2244
                    log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***");
2243
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);  
2245
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);  
2244
                   
2246
                   
Line 2401... Line 2403...
2401
                    [] tc_ac.timeout {
2403
                    [] tc_ac.timeout {
2402
                        log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
2404
                        log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
2403
                        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
2405
                        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
2404
                    }
2406
                    }
2405
                }
2407
                }
2406
                f_utTriggerEvent(m_changeSpeed(1000));
2408
                f_changeSpeed(1000);
2407
                tc_ac.start;
2409
                tc_ac.start;
2408
                alt {
2410
                alt {
2409
                    [] camPort.receive(mw_camInd ( mw_camMsg_any )){
2411
                    [] camPort.receive(mw_camInd ( mw_camMsg_any )){
2410
                        var float v_measured := t_interval_1_measure.read;
2412
                        var float v_measured := t_interval_1_measure.read;
2411
                        log("Elapsed time since last CAM: ", v_measured);
2413
                        log("Elapsed time since last CAM: ", v_measured);
Line 2511... Line 2513...
2511
                    }
2513
                    }
2512
                }
2514
                }
2513
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2515
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2514
               
2516
               
2515
                // Test Body
2517
                // Test Body
2516
                f_utTriggerEvent(m_changeHeading(v_changeHeadingValue));
2518
                f_changeHeading(v_changeHeadingValue);
2517
                t_genCam_dcc.timeout;
2519
                t_genCam_dcc.timeout;
2518
                t_genCam_min.start;
2520
                t_genCam_min.start;
2519
                alt {
2521
                alt {
2520
                    [] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_heading( (v_headingValue + v_changeHeadingValue) mod 3600) ) )){
2522
                    [] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_heading( (v_headingValue + v_changeHeadingValue) mod 3600) ) )){
2521
                        tc_ac.stop;
2523
                        tc_ac.stop;
Line 2541... Line 2543...
2541
               
2543
               
2542
                // Local variables
2544
                // Local variables
2543
                timer t_genCam_dcc := PICS_T_GENCAMDCC * 0.90;
2545
                timer t_genCam_dcc := PICS_T_GENCAMDCC * 0.90;
2544
                var CamInd v_camPdu;
2546
                var CamInd v_camPdu;
2545
                var ReferencePosition v_referencePosition, v_expectedReferencePosition;
2547
                var ReferencePosition v_referencePosition, v_expectedReferencePosition;
2546
                var integer v_changePosValue := 8; // 8 >> 4m
2548
                var float v_changePosValue := 8.0; // 8 >> 4m
2547
               
2549
               
2548
                // Test control
2550
                // Test control
2549
                if (not PICS_CAM_GENERATION) {
2551
                if (not PICS_CAM_GENERATION) {
2550
                    log("*** " & testcasename() & ": PICS_CAM_GENERATION required for executing the TC ***");
2552
                    log("*** " & testcasename() & ": PICS_CAM_GENERATION required for executing the TC ***");
2551
                    setverdict(inconc);
2553
                    setverdict(inconc);
Line 2575... Line 2577...
2575
                }
2577
                }
2576
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2578
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2577
               
2579
               
2578
                // Test Body
2580
                // Test Body
2579
                v_expectedReferencePosition := f_computePositionUsingDistance(v_referencePosition, v_changePosValue);
2581
                v_expectedReferencePosition := f_computePositionUsingDistance(v_referencePosition, v_changePosValue);
-
 
2582
                if (PICS_GNSS_SCENARIO_SUPPORT == false) {
-
 
2583
                    f_utChangePosition(
-
 
2584
                        valueof(
2580
                f_utChangePosition ( valueof ( UtChangePosition: {
2585
                            UtChangePosition: {
2581
                            latitude := v_expectedReferencePosition.latitude - v_referencePosition.latitude,
2586
                                latitude := v_expectedReferencePosition.latitude - v_referencePosition.latitude,
2582
                            longitude := v_expectedReferencePosition.longitude - v_referencePosition.longitude,
2587
                                longitude := v_expectedReferencePosition.longitude - v_referencePosition.longitude,
2583
                            elevation := 0 } ) );
2588
                                elevation := 0
-
 
2589
                            }
-
 
2590
                    ));
-
 
2591
                }
2584
                t_genCam_dcc.timeout;
2592
                t_genCam_dcc.timeout;
2585
                t_genCam_dcc.start;
2593
                t_genCam_dcc.start;
2586
                alt {
2594
                alt {
2587
                    [] camPort.receive(mw_camInd ( mw_camMsg_BC_refPos ( v_expectedReferencePosition ) )){
2595
                    [] camPort.receive(mw_camInd ( mw_camMsg_BC_refPos ( v_expectedReferencePosition ) )){
2588
                        tc_ac.stop;
2596
                        tc_ac.stop;
Line 2642... Line 2650...
2642
                    }
2650
                    }
2643
                }
2651
                }
2644
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2652
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2645
               
2653
               
2646
                // Test Body
2654
                // Test Body
2647
                f_utTriggerEvent(m_changeSpeed(v_changeSpeedValue));
2655
                f_changeSpeed(v_changeSpeedValue);
2648
                t_genCam_dcc.timeout;
2656
                t_genCam_dcc.timeout;
2649
                t_genCam_min.start;
2657
                t_genCam_min.start;
2650
                alt {
2658
                alt {
2651
                    [] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_speed( (v_speedValue + v_changeSpeedValue) mod 16384 ) ) )){
2659
                    [] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_speed( (v_speedValue + v_changeSpeedValue) mod 16384 ) ) )){
2652
                        tc_ac.stop;
2660
                        tc_ac.stop;
Line 2704... Line 2712...
2704
                    [] tc_ac.timeout {
2712
                    [] tc_ac.timeout {
2705
                        log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
2713
                        log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
2706
                        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
2714
                        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
2707
                    }
2715
                    }
2708
                }
2716
                }
2709
                f_utTriggerEvent(m_changeSpeed(1000));
2717
                f_changeSpeed(1000);
2710
                tc_ac.start;
2718
                tc_ac.start;
2711
                alt {
2719
                alt {
2712
                    [] camPort.receive(mw_camInd ( mw_camMsg_any )){
2720
                    [] camPort.receive(mw_camInd ( mw_camMsg_any )){
2713
                        var float v_measured := t_genCam_measure.read;
2721
                        var float v_measured := t_genCam_measure.read;
2714
                        tc_ac.stop;
2722
                        tc_ac.stop;