diff --git a/.gitmodules b/.gitmodules old mode 100755 new mode 100644 index 0133f9eabf7b914335c59d446b9dbd13db04911f..f14c1f7360a87ea3f25faa5c3034e9b15b82daa4 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,3 @@ [submodule "lib/asn1"] path = lib/asn1 - url = https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2.git - branch = testing + url = https://forge.etsi.org/rep/ITS/asn1/cam_ts103900.git diff --git a/ItsCam_TestCases.ttcn b/ItsCam_TestCases.ttcn index f3c4371b01f22a5878e9cb4a57258f20d73f9787..6772116a1cf2b2e3f4990b6ea5887e992e30ec49 100644 --- a/ItsCam_TestCases.ttcn +++ b/ItsCam_TestCases.ttcn @@ -1,2434 +1,2844 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsCAM/ItsCam_TestCases.ttcn $ - * $Id: ItsCam_TestCases.ttcn 2655 2017-01-26 10:46:08Z filatov $ - * @desc Testcases for CA Protocol - * @reference ETSI EN 302 637-2 v1.4.1 - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - */ - -module ItsCam_TestCases { - - // LibItsCam - import from LibItsCam_TestSystem all; - - // Ats Its - import from ItsCam_TpFunctions all; - - // 5.2.1 - group camMessageDissemination { - - group camMessageFormat { - - /** - * @desc Check that protocolVersion is set to 2 and messageID is - * set to 2. - *
-             * Pics Selection: PICS_CAM_GENERATION
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated 
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing ITS PDU header
-             *                     containing protocolVersion
-             *                         indicating value 2
-             *                     and containing messageID
-             *                         indicating value 2
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/FMT/BV-01 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.1 - */ - testcase TC_CAM_MSD_FMT_BV_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_FMT_BV_01(); - - } // end TC_CAM_MSD_FMT_BV_01 - - /** - * @desc Check that LF container is included in 1st CAM since CA - * basic service activation. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         and the IUT has not sent any CAM yet
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated 
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing lowFrequencyContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/FMT/BV-02 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_FMT_BV_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_FMT_BV_02(); - - } // end TC_CAM_MSD_FMT_BV_02 - - /** - * @desc Check that LF container is included if time elapsed since - * the generation of the last CAM with the low frequency - * container generation is equal or larger than 500 ms. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         and the IUT has sent a CAM
-             *             containing cam
-             *                 containing camParameters
-             *                     containing lowFrequencyContainer at time TIME_1
-             *         and the IUT has not sent CAM
-             *             containing cam
-             *                 containing camParameters
-             *                     containing lowFrequencyContainer after TIME_1
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated at time TIME_2 >= (TIME_1 + 500ms)
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing lowFrequencyContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/FMT/BV-03 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_FMT_BV_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_FMT_BV_03(); - - } // end TC_CAM_MSD_FMT_BV_03 - - /** - * @desc Check that specialVehicle container is included in 1st CAM - * since CA basic service activation. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND (PICS_PUBLICTRANS OR PICS_SPECIALTRANS OR PICS_DANGEROUSGOODS OR PICS_ROADWORKS OR PICS_RESCUE OR PICS_EMERGENCY OR PICS_SAFETYCAR)
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         and the IUT is configured to advertise itself as a special vehicle
-             *         and the IUT has not sent any CAM yet
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/FMT/BV-04 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_FMT_BV_04() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_FMT_BV_04(); - - } // end TC_CAM_MSD_FMT_BV_04 - - /** - * @desc Check that specialVehicle container is included if time - * elapsed since the generation of the last CAM with the - * special vehicle container generation is equal or larger - * than 500 ms. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND (PICS_PUBLICTRANS OR PICS_SPECIALTRANS OR PICS_DANGEROUSGOODS OR PICS_ROADWORKS OR PICS_RESCUE OR PICS_EMERGENCY OR PICS_SAFETYCAR)
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         and the IUT has sent a CAM
-             *             containing cam
-             *                 containing camParameters
-             *                     containing specialVehicleContainer at time TIME_1
-             *         and the IUT has not sent CAM
-             *             containing cam
-             *                 containing camParameters
-             *                     containing specialVehicleContainer after TIME_1
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated at time TIME_2 >= (TIME_1 + 500ms)
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/FMT/BV-05 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_FMT_BV_05() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_FMT_BV_05(); - - } // end TC_CAM_MSD_FMT_BV_05 - - } // end group camMessageFormat - - group camInformationAdaptation { - - group camInVehicleData { - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO:  Curvature value
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .curvature
-                 *     VALUE: measured value
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_01(); - - } // end TC_CAM_MSD_INA_BV_01_01 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO:  Brake pedal being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .brakePedalActive
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-02 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_02(); - - } // end TC_CAM_MSD_INA_BV_01_02 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO:  Brake pedal being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .brakePedalActive
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-03 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_03(); - - } // end TC_CAM_MSD_INA_BV_01_03 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Gas pedal being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .gasPedalActive
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-04 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_04() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_04(); - - } // end TC_CAM_MSD_INA_BV_01_04 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Gas pedal being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .gasPedalActive
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-05 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_05() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_05(); - - } // end TC_CAM_MSD_INA_BV_01_05 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Emergency brake being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .emergencyBrakeActive
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-06 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_06() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_06(); - - } // end TC_CAM_MSD_INA_BV_01_06 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Emergency brake being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .emergencyBrakeActive
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-07 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_07() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_07(); - - } // end TC_CAM_MSD_INA_BV_01_07 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Collision warning being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .collisionWarningActive
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-08 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_08() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_08(); - - } // end TC_CAM_MSD_INA_BV_01_08 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Collision warning being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .collisionWarningActive
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-09 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_09() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_09(); - - } // end TC_CAM_MSD_INA_BV_01_09 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: ACC being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .accActive
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-10 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_10() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_10(); - - } // end TC_CAM_MSD_INA_BV_01_10 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: ACC being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .accActive
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-11 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_11() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_11(); - - } // end TC_CAM_MSD_INA_BV_01_11 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Cruise control being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .cruiseControl
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-12 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_12() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_12(); - - } // end TC_CAM_MSD_INA_BV_01_12 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Cruise control being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .cruiseControl
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-13 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_13() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_13(); - - } // end TC_CAM_MSD_INA_BV_01_13 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Speed limiter being activated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .speedLimiterActive
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-14 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_14() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_14(); - - } // end TC_CAM_MSD_INA_BV_01_14 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Speed limiter control being deactivated
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .accelerationControl
-                 *                .speedLimiterActive
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-15 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_15() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_15(); - - } // end TC_CAM_MSD_INA_BV_01_15 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Low beam headlights being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .lowBeamHeadlightsOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-16 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_16() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_16(); - - } // end TC_CAM_MSD_INA_BV_01_16 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Low beam headlights being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .lowBeamHeadlightsOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-17 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_17() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_17(); - - } // end TC_CAM_MSD_INA_BV_01_17 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: High beam headlights being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .highBeamHeadlightsOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-18 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_18() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_18(); - - } // end TC_CAM_MSD_INA_BV_01_18 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: High beam headlights being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .highBeamHeadlightsOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-19 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_19() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_19(); - - } // end TC_CAM_MSD_INA_BV_01_19 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Left turn signal being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .leftTurnSignalOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-20 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_20() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_20(); - - } // end TC_CAM_MSD_INA_BV_01_20 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Left turn signal being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .leftTurnSignalOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-21 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_21() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_21(); - - } // end TC_CAM_MSD_INA_BV_01_21 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Right turn signal being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .rightTurnSignalOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-22 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_22() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_22(); - - } // end TC_CAM_MSD_INA_BV_01_22 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Right turn signal being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .rightTurnSignalOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-23 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_23() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_23(); - - } // end TC_CAM_MSD_INA_BV_01_23 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Daytime running lights being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .daytimeRunningLightsOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-24 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_24() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_24(); - - } // end TC_CAM_MSD_INA_BV_01_24 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Daytime running lights being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .daytimeRunningLightsOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-25 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_25() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_25(); - - } // end TC_CAM_MSD_INA_BV_01_25 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Reverse light being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .reverseLightOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-26 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_26() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_26(); - - } // end TC_CAM_MSD_INA_BV_01_26 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Reverse light being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .reverseLightOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-27 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_27() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_27(); - - } // end TC_CAM_MSD_INA_BV_01_27 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Fog lights being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .fogLightOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-28 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_28() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_28(); - - } // end TC_CAM_MSD_INA_BV_01_28 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Fog lights being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .fogLightOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-29 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_29() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_29(); - - } // end TC_CAM_MSD_INA_BV_01_29 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Parking lights being activated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .parkingLightsOn
-                 *     VALUE: 1
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-30 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_30() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_30(); - - } // end TC_CAM_MSD_INA_BV_01_30 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Parking lights being deactivated
-                 *     FIELD: lowFrequencyContainer
-                 *                .basicVehicleContainerLowFrequency
-                 *                .exteriorLights
-                 *                .parkingLightsOn
-                 *     VALUE: 0
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-31 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_31() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_31(); - - } // end TC_CAM_MSD_INA_BV_01_31 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Heading value
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .heading
-                 *     VALUE: measured value
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-32 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_32() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_32(); - - } // end TC_CAM_MSD_INA_BV_01_32 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Speed value
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .speed
-                 *     VALUE: measured value
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-33 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_33() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_33(); - - } // end TC_CAM_MSD_INA_BV_01_33 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Drive direction value
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .driveDirection
-                 *     VALUE: measured value
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-34 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_34() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_34(); - - } // end TC_CAM_MSD_INA_BV_01_34 - - /** - * @desc Check that latest value of in-vehicle data is included - * in CAM. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state
-                 *     }
-                 *     INFO: Yaw rate value
-                 *     FIELD: highFrequencyContainer
-                 *                .basicVehicleContainerHighFrequency
-                 *                .yawRate
-                 *     VALUE: measured value
-                 * 
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             the IUT is alerted about INFO
-                 *         }
-                 *         then {
-                 *             the IUT sends a valid CAM
-                 *                 containing cam
-                 *                     containing camParameters
-                 *                         containing FIELD set to VALUE
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-01-35 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.2 - */ - testcase TC_CAM_MSD_INA_BV_01_35() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_01_35(); - - } // end TC_CAM_MSD_INA_BV_01_35 - - } // end group camInVehicleData - - /** - * @desc Check that publicTransportContainer is included if - * vehicleRole is set to publicTransport(1). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_PUBLICTRANS
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to publicTransport(1)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing publicTransportContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-02 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.11 - */ - testcase TC_CAM_MSD_INA_BV_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_02(); - - } // end TC_CAM_MSD_INA_BV_02 - - /** - * @desc Check that specialTransportContainer is included if - * vehicleRole is set to specialTransport(2). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_SPECIALTRANS
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to specialTransport(2)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing specialTransportContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-03 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.12 - */ - testcase TC_CAM_MSD_INA_BV_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_03(); - - } // end TC_CAM_MSD_INA_BV_03 - - /** - * @desc Check that dangerousGoodsContainer is included if - * vehicleRole is set to dangerousGoods(3). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_DANGEROUSGOODS
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to dangerousGoods(3)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing dangerousGoodsContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-04 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.13 - */ - testcase TC_CAM_MSD_INA_BV_04() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_04(); - - } // end TC_CAM_MSD_INA_BV_04 - - /** - * @desc Check that roadWorksContainerBasic is included if - * vehicleRole is set to roadWork(4). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_ROADWORKS
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to roadWork(4)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing roadWorksContainerBasic
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-05 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.14 - */ - testcase TC_CAM_MSD_INA_BV_05() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_05(); - - } // end TC_CAM_MSD_INA_BV_05 - - /** - * @desc Check that rescueContainer is included if vehicleRole is - * set to rescue(5). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_RESCUE
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to rescue(5)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing rescueContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-06 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.15 - */ - testcase TC_CAM_MSD_INA_BV_06() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_06(); - - } // end TC_CAM_MSD_INA_BV_06 - - /** - * @desc Check that emergencyContainer is included if vehicleRole - * is set to emergency(6). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_EMERGENCY
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to emergency(6)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing emergencyContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-07 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.16 - */ - testcase TC_CAM_MSD_INA_BV_07() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_07(); - - } // end TC_CAM_MSD_INA_BV_07 - - /** - * @desc Check that safetyCarContainer is included if vehicleRole - * is set to safetyCar(7). - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_SAFETY_CAR
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT’s vehicle role being set to safetyCar(7)
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             a CAM is generated
-             *         }
-             *         then {
-             *             the IUT sends a valid CAM
-             *                 containing cam
-             *                     containing camParameters
-             *                         containing specialVehicleContainer
-             *                             containing safetyCarContainer
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/INA/BV-08 - * @reference ETSI EN 302 637-2 v1.4.1, Annex B.17 - */ - testcase TC_CAM_MSD_INA_BV_08() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_INA_BV_08(); - - } // end TC_CAM_MSD_INA_BV_08 - - } // end group camInformationAdaptation - - group camGenerationFrequency { - - /** - * @desc Check that CAMs are not generated more frequently than - * T_GenCamMin. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state"
-                 *     }
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             IUT sends a CAM
-                 *         }
-                 *         then {
-                 *             the IUT does not send any CAM before expiry of T_GenCamMin
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/TI-01 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_TI_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_TI_01(); - - } // end TC_CAM_MSD_GFQ_TI_01 - - /** - * @desc Check that CAMs are not generated less frequently than - * T_GenCamMax. - *
-                 * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-                 * Initial conditions: 
-                 *     with {
-                 *         the IUT being in the "initial state"
-                 *     }
-                 * Expected behaviour:
-                 *     ensure that {
-                 *         when {
-                 *             IUT sends a CAM
-                 *         }
-                 *         then {
-                 *             the IUT sends another CAM before expiry of T_GenCamMax
-                 *         }
-                 *     }
-                 * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/TI-02 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_TI_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_TI_02(); - - } // end TC_CAM_MSD_GFQ_TI_02 - - /** - * @desc Check that TGenCam is set to T_GenCamMax after generating - * N_GenCam due to condition 2. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT having sent a CAM at time TIME_1
-             *         the IUT having sent an anticipated CAM due to condition 2 at time (TIME_1 + INTERVAL_1)
-             *         the IUT having sent (N_GenCam - 1) subsequent CAMs every INTERVAL_1
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             the IUT sends CAM
-             *         }
-             *         then {
-             *             the IUT sends another CAM after expiry of T_GenCamMax
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/TI-03 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_TI_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_TI_03(); - - } // end TC_CAM_MSD_GFQ_TI_03 - - /** - * @desc Check that CAM is generated immediately when the time - * elapsed since the last CAM generation is equal or larger - * than T_GenCam_Dcc and the absolute difference between - * current direction of the originating ITS-S (towards North) - * and direction included in previous CAM exceeds 4°. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT having sent a CAM at time TIME_1
-             *             containing cam
-             *                 containing camParameters
-             *                     containing highFrequencyContainer
-             *                         containing basicVehicleContainerHighFrequency
-             *                             containing heading set to HEADING_1
-             *         the IUT not having sent any CAM since T_GenCam_Dcc
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             T_GenCam_Dcc expires
-             *             and the IUT is alerted that abs(CurrentHeading – HEADING_1) > 4°
-             *         }
-             *         then {
-             *             the IUT sends a CAM immediately
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/BV-04 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_BV_04() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_BV_04(); - - } // end TC_CAM_MSD_GFQ_BV_04 - - /** - * @desc Check that CAM is generated immediately when the time - * elapsed since the last CAM generation is equal or larger - * than T_GenCam_Dcc and the current position and position - * included in previous CAM exceeds 4 m. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT having sent a CAM at time TIME_1
-             *             containing cam
-             *                 containing camParameters
-             *                     containing basicContainer 
-             *                         containing referencePosition set to POSITION_1
-             *         the IUT not having sent any CAM since T_GenCam_Dcc
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             T_GenCam_Dcc expires
-             *             and the IUT is alerted that distance(CurrentPosition – POSITION_1) > 4 m
-             *         }
-             *         then {
-             *             the IUT sends a CAM immediately
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/BV-05 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_BV_05() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_BV_05(); - - } // end TC_CAM_MSD_GFQ_BV_05 - - /** - * @desc Check that CAM is generated immediately when the time - * elapsed since the last CAM generation is equal or larger - * than T_GenCam_Dcc and the absolute difference between - * current speed and speed included in previous CAM - * exceeds 0,5 m/s. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT having sent a CAM at time TIME_1
-             *             containing cam
-             *                 containing camParameters
-             *                     containing highFrequencyContainer
-             *                         containing basicVehicleContainerHighFrequency
-             *                             containing speed set to SPEED_1
-             *         the IUT not having sent any CAM since T_GenCam_Dcc
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *            T_GenCam_Dcc expires
-             *            and the IUT is alerted that abs(CurrentSpeed – SPEED_1) > 0,5 m/s
-             *         }
-             *         then {
-             *             the IUT sends a CAM immediately
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/BV-06 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_BV_06() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_BV_06(); - - } // end TC_CAM_MSD_GFQ_BV_06 - - /** - * @desc Check that CAM is generated immediately when the time - * elapsed since the last CAM generation is equal or larger - * than T_GenCam and equal or larger than T_GenCam_Dcc. - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *         the IUT having sent a CAM
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             T_GenCam expires
-             *             and T_GenCam_Dcc expires
-             *         }
-             *         then {
-             *             the IUT sends another CAM
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/TI-07 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.3 - */ - testcase TC_CAM_MSD_GFQ_TI_07() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_TI_07(); - - } // end TC_CAM_MSD_GFQ_TI_07 - - /** - * @desc Check that maximum CAM generation frequency for RSU ITS-S is 1Hz - * - *
-             * Pics Selection: PICS_CAM_GENERATION AND PICS_RSU
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *         when {
-             *             IUT sends a CAM
-             *         }
-             *         then {
-             *             the IUT does not send another CAM afterbefore 1s
-             *         }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/GFQ/TI-08 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.1.4 - */ - testcase TC_CAM_MSD_GFQ_TI_08() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_GFQ_TI_08(); - - } // end TC_CAM_MSD_GFQ_TI_08 - - } // end group camGenerationFrequency - - group camLowerLayerParameters { - - /** - * @desc Check that CAM is encapsulated in BTP type B packet - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_IS_IUT_SECURED
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *     }
-             * Expected behaviour:
-             *  ensure that {
-             *      when {
-             *          a CAM is generated
-             *      }
-             *      then {
-             *          the IUT sends a CAM
-             *              encapsulated in a BTP-B packet
-             *      }
-             *  } 
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/PAR/BV-01 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.3.4.1 - */ - testcase TC_CAM_MSD_PAR_BV_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_PAR_BV_01(); - - } // end TC_CAM_MSD_PAR_BV_01 - - /** - * @desc Check that CAM is encapsulated in SHB packet - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_IS_IUT_SECURED
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *     }
-             * Expected behaviour:
-             *  ensure that {
-             *      when {
-             *          a CAM is generated
-             *      }
-             *      then {
-             *          the IUT sends a CAM
-             *              encapsulated in a SHB packet
-             *      }
-             *  } 
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/PAR/BV-02 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.3.4.1 - */ - testcase TC_CAM_MSD_PAR_BV_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_PAR_BV_02(); - - } // end TC_CAM_MSD_PAR_BV_02 - - /** - * @desc Check that CAM is encapsulated in GN packet with lifetime lower than 1s - *
-             * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_IS_IUT_SECURED
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *     }
-             * Expected behaviour:
-             *  ensure that {
-             *      when {
-             *          a CAM is generated
-             *      }
-             *      then {
-             *          the IUT sends a CAM
-             *              encapsulated in a GN packet
-             *                  containing Basic Header
-             *                      containing Lifetime field 
-             *                          indicating value lower than 1s
-             *      }
-             *  } 
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/PAR/BV-03 - * @reference ETSI EN 302 637-2 v1.4.1, clause 5.3.4.1 - */ - testcase TC_CAM_MSD_PAR_BV_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_PAR_BV_03(); - - } // end TC_CAM_MSD_PAR_BV_03 - - } // end group camLowerLayerParameters - - group camGenerationSSP { - - /** - * @desc Check that the IUT does not send a CAM - * when its content is not permitted by signing certificate - *
-             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
-             * Initial conditions: 
-             *        with {
-             *            the IUT being in the "initial state"
-             *          the IUT is authorized to sign CAMs with the certificate
-             *              containing CAM SSP
-             *                  indicating bit at position '1' set to 0
-             *      }
-             * Expected behaviour:
-             *  ensure that {
-             *      when {
-             *          the IUT generates a CAM
-             *              containing CenDsrcTollingZone
-             *      }
-             *      then {
-             *          the IUT does not send this CAM
-             *      }
-             *  } 
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/SSP/BO-01 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.2.2.1 - */ - testcase TC_CAM_MSD_SSP_BO_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_SSP_BO_01(); - - } // end TC_CAM_MSD_SSP_BO_01 - - /** - * @desc Check that the IUT does not send a CAM - * when its content is not permitted by signing certificate - *
-             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
-             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_PUBLICTRANS
-             * Initial conditions: 
-             *        with {
-             *            the IUT being in the "initial state"
-             *          the IUT is authorized to sign CAMs with the certificate
-             *              containing CAM SSP
-             *                  indicating bit at position '2' set to 0
-             *      }
-             * Expected behaviour:
-             *  ensure that {
-             *      when {
-             *          the IUT generates a CAM
-             *              containing publicTransportContainer
-             *      }
-             *      then {
-             *          the IUT does not send this CAM
-             *      }
-             *  } 
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/SSP/BO-02 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.2.2.1 - */ - testcase TC_CAM_MSD_SSP_BO_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_SSP_BO_02(); - - } // end TC_CAM_MSD_SSP_BO_02 - - /** - * @desc Check that the IUT does not send a CAM - * when its content is not permitted by signing certificate - *
-             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
-             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_SPECIALTRANS
-             * Initial conditions: 
-             *        with { 
-             *            the IUT being in the "initial state"
-             *          the IUT is authorized to sign CAMs with the certificate
-             *              containing CAM SSP
-             *                  indicating bit at position '3' set to 0
-             *      }
-             * Expected behaviour:
-             *  ensure that {
-             *      when {
-             *          the IUT generates a CAM
-             *              containing specialTransportContainer
-             *      }
-             *      then {
-             *          the IUT does not send this CAM
-             *      }
-             *  } 
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSD/SSP/BO-03 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.2.2.1 - */ - testcase TC_CAM_MSD_SSP_BO_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSD_SSP_BO_03(); - - } // end TC_CAM_MSD_SSP_BO_03 - - } // end group camGenerationSSP - - } // end group camMessageDissemination - - group camMessageProcessing { - - /** - * @desc Check that content of received CAM is transmitted to - * applications and other facilities. - *
-         * Pics Selection: PICS_CAM_RECEPTION
-         * Initial conditions: 
-         *     with {
-         *         the IUT being in the "initial state"
-         *     }
-         * Expected behaviour:
-         *     ensure that {
-         *         when {
-         *             the IUT receives a valid CAM
-         *         }
-         *         then {
-         *             the IUT forwards the CAM content to upper layers
-         *             and the IUT forwards the CAM content to other facilities
-         *         }
-         *     }
-         * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSP/BV-01 - * @reference ETSI EN 302 637-2 v1.4.1, clause 4.2.2 - */ - testcase TC_CAM_MSP_BV_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSP_BV_01(); - - } // end TC_CAM_MSP_BV_01 - - group camProcessingSSP { - /** - * @desc Check that IUT discards CAM if SSP value of the signing certificate - * is not consistent with the provided containers. - *
-             * Pics Selection: PICS_CAM_RECEPTION AND PICS_IS_IUT_SECURED
-             * Initial conditions: 
-             *     with {
-             *         the IUT being in the "initial state"
-             *     }
-             * Expected behaviour:
-             *     ensure that {
-             *            when {
-             *                the IUT receives a secured CAM
-             *                    containing CenDsrcTollingZone/ProtectedCommunicationZonesRSU
-             *                    signed with certificate
-             *                        containing CAM SSP bit at position 0
-             *                            indicating 0
-             *            }
-             *            then {
-             *                the IUT discards the CAM
-             *                and the IUT does not forward the CAM content to upper layers
-             *                and the IUT does not forward the CAM content to other facilities
-             *            }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSP/SSP/BV-01-01 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.2.2.1 - */ - testcase TC_CAM_MSP_SSP_BV_01() runs on ItsCam system ItsCamSystem { - - f_CAM_MSP_SSP_BV_01(); - - } // end TC_CAM_MSP_BV_01 - - /** - * @desc Check that IUT discards CAM if SSP value of the signing certificate - * is not consistent with the provided containers. - *
-             * Pics Selection: PICS_CAM_RECEPTION AND PICS_IS_IUT_SECURED 
-             * Initial conditions: 
-             *         with {
-             *            the IUT being in the "initial state"
-             *        }
-             * Expected behaviour:
-             *        ensure that {
-             *            when {
-             *                the IUT receives a secured CAM
-             *                    containing publicTransportContainer
-             *                    and signed with certificate
-             *                        containing CAM SSP bit at position 1
-             *                            indicating 0
-             *            }
-             *            then {
-             *                the IUT discards the CAM
-             *                and the IUT does not forward the CAM content to upper layers
-             *                and the IUT does not forward the CAM content to other facilities
-             *            }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSP/SSP/BV-01-02 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.2.2.1 - */ - testcase TC_CAM_MSP_SSP_BV_02() runs on ItsCam system ItsCamSystem { - - f_CAM_MSP_SSP_BV_02(); - - } // end TC_CAM_MSP_BV_02 - - /** - * @desc Check that IUT discards CAM if SSP value of the signing certificate - * is not consistent with the provided containers. - *
-             * Pics Selection: PICS_CAM_RECEPTION AND PICS_IS_IUT_SECURED 
-             * Initial conditions: 
-             *         with {
-             *            the IUT being in the "initial state"
-             *        }
-             * Expected behaviour:
-             *        ensure that {
-             *            when {
-             *                the IUT receives a secured CAM
-             *                    containing specialTransportContainer
-             *                    and signed with certificate
-             *                        containing CAM SSP bit at position 2
-             *                            indicating 0
-             *            }
-             *            then {
-             *                the IUT discards the CAM
-             *                and the IUT does not forward the CAM content to upper layers
-             *                and the IUT does not forward the CAM content to other facilities
-             *            }
-             *     }
-             * 
- * - * @see ETSI TS 102 868-2 v1.5.1 TP/CAM/MSP/SSP/BV-01-03 - * @reference ETSI EN 302 637-2 v1.4.1, clause 6.2.2.1 - */ - testcase TC_CAM_MSP_SSP_BV_03() runs on ItsCam system ItsCamSystem { - - f_CAM_MSP_SSP_BV_03(); - - } // end TC_CAM_MSP_BV_03 - - }// end group camProcessingSSP - - } // end group camMessageProcessing - -} // end ItsCam_TestCases +/** + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 + * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsCAM/ItsCam_TestCases.ttcn $ + * $Id: ItsCam_TestCases.ttcn 2655 2017-01-26 10:46:08Z filatov $ + * @desc Testcases for CA Protocol + * @reference ETSI TS 103 900 v2.2.1 + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ + +module ItsCam_TestCases { + + // LibItsCam + import from LibItsCam_TestSystem all; + + // Ats Its + import from ItsCam_TpFunctions all; + + // 5.2.1 + group camMessageDissemination { + + group camMessageFormat { + + /** + * @desc Check that protocolVersion is set to 2 and messageID is + * set to 2. + *
+             * Pics Selection: PICS_CAM_GENERATION
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing ITS PDU header
+             *                     containing protocolVersion
+             *                         indicating value 2
+             *                     and containing messageID
+             *                         indicating value 2
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-01 + * @reference ETSI TS 103 900 v2.2.1, Annex B + */ + testcase TC_CAM_MSD_FMT_BV_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_01(); + + } // End of TC_CAM_MSD_FMT_BV_01 + + /** + * @desc Check that LF container is included in 1st CAM since CA + * basic service activation. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         and the IUT has not sent any CAM yet
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing lowFrequencyContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-02 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_02(); + + } // End of TC_CAM_MSD_FMT_BV_02 + + /** + * @desc Check that LF container is included if time elapsed since + * the generation of the last CAM with the low frequency + * container generation is equal or larger than 500 ms. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         and the IUT has sent a CAM
+             *             containing cam
+             *                 containing camParameters
+             *                     containing lowFrequencyContainer at time TIME_1
+             *         and the IUT has not sent CAM
+             *             containing cam
+             *                 containing camParameters
+             *                     containing lowFrequencyContainer after TIME_1
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated at time TIME_2 >= (TIME_1 + 500ms)
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing lowFrequencyContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-03 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_03(); + + } // End of TC_CAM_MSD_FMT_BV_03 + + /** + * @desc Check that specialVehicle container is included in 1st CAM + * since CA basic service activation. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND (PICS_PUBLICTRANS OR PICS_SPECIALTRANS OR PICS_DANGEROUSGOODS OR PICS_ROADWORKS OR PICS_RESCUE OR PICS_EMERGENCY OR PICS_SAFETYCAR)
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         and the IUT is configured to advertise itself as a special vehicle
+             *         and the IUT has not sent any CAM yet
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-04 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_04() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_04(); + + } // End of TC_CAM_MSD_FMT_BV_04 + + /** + * @desc Check that specialVehicle container is included if time + * elapsed since the generation of the last CAM with the + * special vehicle container generation is equal or larger + * than 500 ms. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND (PICS_PUBLICTRANS OR PICS_SPECIALTRANS OR PICS_DANGEROUSGOODS OR PICS_ROADWORKS OR PICS_RESCUE OR PICS_EMERGENCY OR PICS_SAFETYCAR)
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         and the IUT has sent a CAM
+             *             containing cam
+             *                 containing camParameters
+             *                     containing specialVehicleContainer at time TIME_1
+             *         and the IUT has not sent CAM
+             *             containing cam
+             *                 containing camParameters
+             *                     containing specialVehicleContainer after TIME_1
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated at time TIME_2 >= (TIME_1 + 500ms)
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-05 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_05() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_05(); + + } // End of TC_CAM_MSD_FMT_BV_05 + + /** + * @desc Check that VeryLowFrequency container is included in the second CAM since CA basic service activation. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PIC_RELEASE2 AND PICS_EXTENSIONSCONTAINER
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         and the IUT has not sent yet
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing extendedContainer
+             *                             containing containerId
+             *                                 indicating value 3
+             *                             and containing veryLowFrequencyContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-06 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_06() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_06(); + + } // End of TC_CAM_MSD_FMT_BV_06 + + /** + * @desc Check that veryLowFrequency container is included if time + * elapsed since the generation of the last CAM with the + * veryLowFrequency container generation is equal to or greater than 10 seconds + * and if the low frequency and the special vehicle container are not included. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PIC_RELEASE2 AND PICS_EXTENSIONSCONTAINER
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         and the IUT has sent a CAM
+             *             containing cam
+             *                 containing camParameters
+             *                     containing veryLowFrequencyContainer at time TIME_1
+             *         and the IUT prepares a CAM at time TIME_2 >= (TIME_1 + 10s)
+             *             containing cam
+             *                 not containing the lowFrequencyContainer
+             *                 and not containing the specialVehicleContainer
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated at time TIME_2 >= (TIME_1 + 10s)
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         not containing specialVehicleContainer
+             *                         and not containing lowFrequencyContainer
+             *                         and containing extendedContainer
+             *                             containing containerId
+             *                                 indicating value 3
+             *                             and containing veryLowFrequencyContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-07 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_07() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_07(); + + } // End of TC_CAM_MSD_FMT_BV_07 + + /** + * @desc Check that TwoWheeler container is included in the first CAM since CA basic service activation + * if the IUT Station type is one of cyclist, moped or motorcycles. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PIC_RELEASE2 AND PICS_EXTENSIONSCONTAINER
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT StationType is IUT_STATION_TYPE
+             *         and the IUT has not sent yet
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing extendedContainer
+             *                             containing containerId
+             *                                 indicating value 1
+             *                             and containing twoWheelerContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-08 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_08() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_08(); + + } // End of TC_CAM_MSD_FMT_BV_08 + + /** + * @desc Check that TwoWheeler container is included in a CA Message + * if the IUT Station type is one of cyclist, moped or motorcycles. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PIC_RELEASE2 AND PICS_EXTENSIONSCONTAINER
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT StationType is IUT_STATION_TYPE
+             *         and a CAM is generated
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing extendedContainer
+             *                             containing containerId
+             *                                 indicating value 1
+             *                             and containing twoWheelerContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/FMT/BV-09 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_FMT_BV_09() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_FMT_BV_09(); + + } // End of TC_CAM_MSD_FMT_BV_09 + + } // End of group camMessageFormat + + group camInformationAdaptation { + + group camInVehicleData { + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO:  Curvature value
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .curvature
+                 *     VALUE: measured value
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_01(); + + } // End of TC_CAM_MSD_INA_BV_01_01 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO:  Brake pedal being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .brakePedalActive
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-02 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_02(); + + } // End of TC_CAM_MSD_INA_BV_01_02 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO:  Brake pedal being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .brakePedalActive
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-03 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_03(); + + } // End of TC_CAM_MSD_INA_BV_01_03 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Gas pedal being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .gasPedalActive
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-04 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_04() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_04(); + + } // End of TC_CAM_MSD_INA_BV_01_04 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Gas pedal being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .gasPedalActive
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-05 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_05() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_05(); + + } // End of TC_CAM_MSD_INA_BV_01_05 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Emergency brake being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .emergencyBrakeActive
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-06 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_06() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_06(); + + } // End of TC_CAM_MSD_INA_BV_01_06 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Emergency brake being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .emergencyBrakeActive
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-07 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_07() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_07(); + + } // End of TC_CAM_MSD_INA_BV_01_07 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Collision warning being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .collisionWarningActive
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-08 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_08() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_08(); + + } // End of TC_CAM_MSD_INA_BV_01_08 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Collision warning being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .collisionWarningActive
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-09 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_09() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_09(); + + } // End of TC_CAM_MSD_INA_BV_01_09 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: ACC being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .accActive
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-10 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_10() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_10(); + + } // End of TC_CAM_MSD_INA_BV_01_10 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: ACC being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .accActive
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-11 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_11() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_11(); + + } // End of TC_CAM_MSD_INA_BV_01_11 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Cruise control being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .cruiseControl
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-12 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_12() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_12(); + + } // End of TC_CAM_MSD_INA_BV_01_12 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Cruise control being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .cruiseControl
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-13 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_13() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_13(); + + } // End of TC_CAM_MSD_INA_BV_01_13 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Speed limiter being activated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .speedLimiterActive
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-14 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_14() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_14(); + + } // End of TC_CAM_MSD_INA_BV_01_14 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Speed limiter control being deactivated
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .accelerationControl
+                 *                .speedLimiterActive
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-15 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_15() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_15(); + + } // End of TC_CAM_MSD_INA_BV_01_15 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Low beam headlights being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .lowBeamHeadlightsOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-16 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_16() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_16(); + + } // End of TC_CAM_MSD_INA_BV_01_16 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Low beam headlights being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .lowBeamHeadlightsOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-17 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_17() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_17(); + + } // End of TC_CAM_MSD_INA_BV_01_17 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: High beam headlights being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .highBeamHeadlightsOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-18 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_18() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_18(); + + } // End of TC_CAM_MSD_INA_BV_01_18 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: High beam headlights being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .highBeamHeadlightsOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-19 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_19() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_19(); + + } // End of TC_CAM_MSD_INA_BV_01_19 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Left turn signal being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .leftTurnSignalOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-20 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_20() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_20(); + + } // End of TC_CAM_MSD_INA_BV_01_20 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Left turn signal being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .leftTurnSignalOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-21 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_21() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_21(); + + } // End of TC_CAM_MSD_INA_BV_01_21 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Right turn signal being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .rightTurnSignalOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-22 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_22() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_22(); + + } // End of TC_CAM_MSD_INA_BV_01_22 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Right turn signal being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .rightTurnSignalOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-23 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_23() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_23(); + + } // End of TC_CAM_MSD_INA_BV_01_23 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Daytime running lights being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .daytimeRunningLightsOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-24 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_24() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_24(); + + } // End of TC_CAM_MSD_INA_BV_01_24 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Daytime running lights being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .daytimeRunningLightsOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-25 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_25() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_25(); + + } // End of TC_CAM_MSD_INA_BV_01_25 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Reverse light being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .reverseLightOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-26 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_26() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_26(); + + } // End of TC_CAM_MSD_INA_BV_01_26 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Reverse light being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .reverseLightOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-27 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_27() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_27(); + + } // End of TC_CAM_MSD_INA_BV_01_27 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Fog lights being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .fogLightOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-28 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_28() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_28(); + + } // End of TC_CAM_MSD_INA_BV_01_28 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Fog lights being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .fogLightOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-29 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_29() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_29(); + + } // End of TC_CAM_MSD_INA_BV_01_29 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Parking lights being activated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .parkingLightsOn
+                 *     VALUE: 1
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-30 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_30() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_30(); + + } // End of TC_CAM_MSD_INA_BV_01_30 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Parking lights being deactivated
+                 *     FIELD: lowFrequencyContainer
+                 *                .basicVehicleContainerLowFrequency
+                 *                .exteriorLights
+                 *                .parkingLightsOn
+                 *     VALUE: 0
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-31 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_31() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_31(); + + } // End of TC_CAM_MSD_INA_BV_01_31 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Heading value
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .heading
+                 *     VALUE: measured value
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-32 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_32() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_32(); + + } // End of TC_CAM_MSD_INA_BV_01_32 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Speed value
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .speed
+                 *     VALUE: measured value
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-33 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_33() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_33(); + + } // End of TC_CAM_MSD_INA_BV_01_33 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Drive direction value
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .driveDirection
+                 *     VALUE: measured value
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-34 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_34() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_34(); + + } // End of TC_CAM_MSD_INA_BV_01_34 + + /** + * @desc Check that latest value of in-vehicle data is included + * in CAM. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state
+                 *     }
+                 *     INFO: Yaw rate value
+                 *     FIELD: highFrequencyContainer
+                 *                .basicVehicleContainerHighFrequency
+                 *                .yawRate
+                 *     VALUE: measured value
+                 *
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             the IUT is alerted about INFO
+                 *         }
+                 *         then {
+                 *             the IUT sends a valid CAM
+                 *                 containing cam
+                 *                     containing camParameters
+                 *                         containing FIELD set to VALUE
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-01-35 + * @reference ETSI TS 103 900 v2.2.1, clause 5.2 and clause 7.1 + */ + testcase TC_CAM_MSD_INA_BV_01_35() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_01_35(); + + } // End of TC_CAM_MSD_INA_BV_01_35 + + } // End of group camInVehicleData + + /** + * @desc Check that publicTransportContainer is included if + * vehicleRole is set to publicTransport(1). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_PUBLICTRANS
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to publicTransport(1)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing publicTransportContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-02 + * @reference ETSI TS 103 900 v2.2.1, Annex B + */ + testcase TC_CAM_MSD_INA_BV_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_02(); + + } // End of TC_CAM_MSD_INA_BV_02 + + /** + * @desc Check that specialTransportContainer is included if + * vehicleRole is set to specialTransport(2). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_SPECIALTRANS
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to specialTransport(2)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing specialTransportContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-03 + * @reference ETSI TS 103 900 v2.2.1, Annex B.12 + */ + testcase TC_CAM_MSD_INA_BV_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_03(); + + } // End of TC_CAM_MSD_INA_BV_03 + + /** + * @desc Check that dangerousGoodsContainer is included if + * vehicleRole is set to dangerousGoods(3). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_DANGEROUSGOODS
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to dangerousGoods(3)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing dangerousGoodsContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-04 + * @reference ETSI TS 103 900 v2.2.1, Annex B.13 + */ + testcase TC_CAM_MSD_INA_BV_04() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_04(); + + } // End of TC_CAM_MSD_INA_BV_04 + + /** + * @desc Check that roadWorksContainerBasic is included if + * vehicleRole is set to roadWork(4). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_ROADWORKS
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to roadWork(4)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing roadWorksContainerBasic
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-05 + * @reference ETSI TS 103 900 v2.2.1, Annex B.14 + */ + testcase TC_CAM_MSD_INA_BV_05() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_05(); + + } // End of TC_CAM_MSD_INA_BV_05 + + /** + * @desc Check that rescueContainer is included if vehicleRole is + * set to rescue(5). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_RESCUE
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to rescue(5)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing rescueContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-06 + * @reference ETSI TS 103 900 v2.2.1, Annex B.15 + */ + testcase TC_CAM_MSD_INA_BV_06() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_06(); + + } // End of TC_CAM_MSD_INA_BV_06 + + /** + * @desc Check that emergencyContainer is included if vehicleRole + * is set to emergency(6). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_EMERGENCY
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to emergency(6)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing emergencyContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-07 + * @reference ETSI TS 103 900 v2.2.1, Annex B.16 + */ + testcase TC_CAM_MSD_INA_BV_07() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_07(); + + } // End of TC_CAM_MSD_INA_BV_07 + + /** + * @desc Check that safetyCarContainer is included if vehicleRole + * is set to safetyCar(7). + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU AND PICS_SAFETY_CAR
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT’s vehicle role being set to safetyCar(7)
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             a CAM is generated
+             *         }
+             *         then {
+             *             the IUT sends a valid CAM
+             *                 containing cam
+             *                     containing camParameters
+             *                         containing specialVehicleContainer
+             *                             containing safetyCarContainer
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/INA/BV-08 + * @reference ETSI TS 103 900 v2.2.1, Annex B.17 + */ + testcase TC_CAM_MSD_INA_BV_08() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_INA_BV_08(); + + } // End of TC_CAM_MSD_INA_BV_08 + + } // End of group camInformationAdaptation + + group camGenerationFrequency { + + /** + * @desc Check that CAMs are not generated more frequently than + * T_GenCamMin. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state"
+                 *     }
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             IUT sends a CAM
+                 *         }
+                 *         then {
+                 *             the IUT does not send any CAM before expiry of T_GenCamMin
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/TI-01 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_TI_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_TI_01(); + + } // End of TC_CAM_MSD_GFQ_TI_01 + + /** + * @desc Check that CAMs are not generated less frequently than + * T_GenCamMax. + *
+                 * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+                 * Initial conditions:
+                 *     with {
+                 *         the IUT being in the "initial state"
+                 *     }
+                 * Expected behaviour:
+                 *     ensure that {
+                 *         when {
+                 *             IUT sends a CAM
+                 *         }
+                 *         then {
+                 *             the IUT sends another CAM before expiry of T_GenCamMax
+                 *         }
+                 *     }
+                 * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/TI-02 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_TI_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_TI_02(); + + } // End of TC_CAM_MSD_GFQ_TI_02 + + /** + * @desc Check that TGenCam is set to T_GenCamMax after generating + * N_GenCam due to condition 2. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT having sent a CAM at time TIME_1
+             *         the IUT having sent an anticipated CAM due to condition 2 at time (TIME_1 + INTERVAL_1)
+             *         the IUT having sent (N_GenCam - 1) subsequent CAMs every INTERVAL_1
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             the IUT sends CAM
+             *         }
+             *         then {
+             *             the IUT sends another CAM after expiry of T_GenCamMax
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/TI-03 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_TI_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_TI_03(); + + } // End of TC_CAM_MSD_GFQ_TI_03 + + /** + * @desc Check that CAM is generated immediately when the time + * elapsed since the last CAM generation is equal or larger + * than T_GenCam_Dcc and the absolute difference between + * current direction of the originating ITS-S (towards North) + * and direction included in previous CAM exceeds 4°. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT having sent a CAM at time TIME_1
+             *             containing cam
+             *                 containing camParameters
+             *                     containing highFrequencyContainer
+             *                         containing basicVehicleContainerHighFrequency
+             *                             containing heading set to HEADING_1
+             *         the IUT not having sent any CAM since T_GenCam_Dcc
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             T_GenCam_Dcc expires
+             *             and the IUT is alerted that abs(CurrentHeading – HEADING_1) > 4°
+             *         }
+             *         then {
+             *             the IUT sends a CAM immediately
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/BV-04 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_BV_04() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_BV_04(); + + } // End of TC_CAM_MSD_GFQ_BV_04 + + /** + * @desc Check that CAM is generated immediately when the time + * elapsed since the last CAM generation is equal or larger + * than T_GenCam_Dcc and the current position and position + * included in previous CAM exceeds 4 m. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT having sent a CAM at time TIME_1
+             *             containing cam
+             *                 containing camParameters
+             *                     containing basicContainer
+             *                         containing referencePosition set to POSITION_1
+             *         the IUT not having sent any CAM since T_GenCam_Dcc
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             T_GenCam_Dcc expires
+             *             and the IUT is alerted that distance(CurrentPosition – POSITION_1) > 4 m
+             *         }
+             *         then {
+             *             the IUT sends a CAM immediately
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/BV-05 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_BV_05() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_BV_05(); + + } // End of TC_CAM_MSD_GFQ_BV_05 + + /** + * @desc Check that CAM is generated immediately when the time + * elapsed since the last CAM generation is equal or larger + * than T_GenCam_Dcc and the absolute difference between + * current speed and speed included in previous CAM + * exceeds 0,5 m/s. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT having sent a CAM at time TIME_1
+             *             containing cam
+             *                 containing camParameters
+             *                     containing highFrequencyContainer
+             *                         containing basicVehicleContainerHighFrequency
+             *                             containing speed set to SPEED_1
+             *         the IUT not having sent any CAM since T_GenCam_Dcc
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *            T_GenCam_Dcc expires
+             *            and the IUT is alerted that abs(CurrentSpeed – SPEED_1) > 0,5 m/s
+             *         }
+             *         then {
+             *             the IUT sends a CAM immediately
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/BV-06 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_BV_06() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_BV_06(); + + } // End of TC_CAM_MSD_GFQ_BV_06 + + /** + * @desc Check that CAM is generated immediately when the time + * elapsed since the last CAM generation is equal or larger + * than T_GenCam and equal or larger than T_GenCam_Dcc. + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PIC_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *         the IUT having sent a CAM
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             T_GenCam expires
+             *             and T_GenCam_Dcc expires
+             *         }
+             *         then {
+             *             the IUT sends another CAM
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/TI-07 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.3 + */ + testcase TC_CAM_MSD_GFQ_TI_07() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_TI_07(); + + } // End of TC_CAM_MSD_GFQ_TI_07 + + /** + * @desc Check that maximum CAM generation frequency for RSU ITS-S is 1Hz + * + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_RSU
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *         when {
+             *             IUT sends a CAM
+             *         }
+             *         then {
+             *             the IUT does not send another CAM afterbefore 1s
+             *         }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/GFQ/TI-08 + * @reference ETSI TS 103 900 v2.2.1, clause 6.1.4 + */ + testcase TC_CAM_MSD_GFQ_TI_08() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_GFQ_TI_08(); + + } // End of TC_CAM_MSD_GFQ_TI_08 + + } // End of group camGenerationFrequency + + group camLowerLayerParameters { + + /** + * @desc Check that CAM is encapsulated in BTP type B packet + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *     }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          a CAM is generated
+             *      }
+             *      then {
+             *          the IUT sends a CAM
+             *              encapsulated in a BTP-B packet
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/PAR/BV-01 + * @reference ETSI TS 103 900 v2.2.1, clause 5.3.4.1 + */ + testcase TC_CAM_MSD_PAR_BV_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_PAR_BV_01(); + + } // End of TC_CAM_MSD_PAR_BV_01 + + /** + * @desc Check that CAM is encapsulated in SHB packet + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *     }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          a CAM is generated
+             *      }
+             *      then {
+             *          the IUT sends a CAM
+             *              encapsulated in a SHB packet
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/PAR/BV-02 + * @reference ETSI TS 103 900 v2.2.1, clause 5.3.4.1 + */ + testcase TC_CAM_MSD_PAR_BV_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_PAR_BV_02(); + + } // End of TC_CAM_MSD_PAR_BV_02 + + /** + * @desc Check that CAM is encapsulated in GN packet with lifetime lower than 1s + *
+             * Pics Selection: PICS_CAM_GENERATION AND NOT PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *     }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          a CAM is generated
+             *      }
+             *      then {
+             *          the IUT sends a CAM
+             *              encapsulated in a GN packet
+             *                  containing Basic Header
+             *                      containing Lifetime field
+             *                          indicating value lower than 1s
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/PAR/BV-03 + * @reference ETSI TS 103 900 v2.2.1, clause 5.3.4.1 + */ + testcase TC_CAM_MSD_PAR_BV_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_PAR_BV_03(); + + } // End of TC_CAM_MSD_PAR_BV_03 + + } // End of group camLowerLayerParameters + + group camGenerationSSP { + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *          the IUT is authorized to sign CAMs with the certificate
+             *              containing CAM SSP
+			 *                  indicating SSP version 1
+             *                  indicating bit at position '1' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing CenDsrcTollingZone
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-01 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_01(); + + } // End of TC_CAM_MSD_SSP_BO_01 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_PUBLICTRANS
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *              containing CAM SSP
+			 *                  indicating SSP version 1
+             *                  indicating bit at position '2' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing publicTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-02 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_02(); + + } // End of TC_CAM_MSD_SSP_BO_02 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_SPECIALTRANS
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 1
+             *                    indicating bit at position '3' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing specialTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-03 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_03(); + + } // End of TC_CAM_MSD_SSP_BO_03 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_DANGEROUSGOODS
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 1
+             *                    indicating bit at position '4' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing specialTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-04 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_04() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_04(); + + } // End of TC_CAM_MSD_SSP_BO_04 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_ROADWORKS
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 1
+             *                    indicating bit at position '5' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing specialTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-05 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_05() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_05(); + + } // End of TC_CAM_MSD_SSP_BO_05 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_RESCUE
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 1
+             *                    indicating bit at position '6' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing specialTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-06 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_06() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_06(); + + } // End of TC_CAM_MSD_SSP_BO_06 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_EMERGENCY
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 1
+             *                    indicating bit at position '7' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing specialTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-07 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_07() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_07(); + + } // End of TC_CAM_MSD_SSP_BO_07 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_SPECIALVEHICLECONTAINER AND PICS_SAFETY_CAR
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 1
+             *                    indicating bit at position '8' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing specialTransportContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-08 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_08() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_08(); + + } // End of TC_CAM_MSD_SSP_BO_08 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_EXTENSIONSCONTAINER AND PIC_RELEASE2
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 2
+             *                    indicating bit at position '2' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing extensionsContainer
+             *                  containing twoWheelersContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-15 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_15() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_15(); + + } // End of TC_CAM_MSD_SSP_BO_15 + + /** + * @desc Check that the IUT does not send a CAM + * when its content is not permitted by signing certificate + *
+             * Pics Selection: PICS_CAM_GENERATION AND PICS_IS_IUT_SECURED
+             *                 AND PICS_EXTENSIONSCONTAINER AND PIC_RELEASE2
+             * Initial conditions:
+             *        with {
+             *            the IUT being in the "initial state"
+             *            the IUT is authorized to sign CAMs with the certificate
+             *                containing CAM SSP
+			 *                    indicating SSP version 2
+             *                    indicating bit at position '1' set to 0
+             *      }
+             * Expected behaviour:
+             *  ensure that {
+             *      when {
+             *          the IUT generates a CAM
+             *              containing extensionsContainer
+             *                  containing twoWheelersContainer
+             *      }
+             *      then {
+             *          the IUT does not send this CAM
+             *      }
+             *  }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSD/SSP/BO-16 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSD_SSP_BO_16() runs on ItsCam system ItsCamSystem { + + f_CAM_MSD_SSP_BO_16(); + + } // End of TC_CAM_MSD_SSP_BO_16 + + } // End of group camGenerationSSP + + } // End of group camMessageDissemination + + group camMessageProcessing { + + /** + * @desc Check that content of received CAM is transmitted to + * applications and other facilities. + *
+         * Pics Selection: PICS_CAM_RECEPTION
+         * Initial conditions:
+         *     with {
+         *         the IUT being in the "initial state"
+         *     }
+         * Expected behaviour:
+         *     ensure that {
+         *         when {
+         *             the IUT receives a valid CAM
+         *         }
+         *         then {
+         *             the IUT forwards the CAM content to upper layers
+         *             and the IUT forwards the CAM content to other facilities
+         *         }
+         *     }
+         * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSP/BV-01 + * @reference ETSI TS 103 900 v2.2.1, clause 4.2.2 + */ + testcase TC_CAM_MSP_BV_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSP_BV_01(); + + } // End of TC_CAM_MSP_BV_01 + + group camProcessingSSP { + + /** + * @desc Check that IUT discards CAM if SSP value of the signing certificate + * is not consistent with the provided containers. + *
+             * Pics Selection: PICS_CAM_RECEPTION AND PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *     with {
+             *         the IUT being in the "initial state"
+             *     }
+             * Expected behaviour:
+             *     ensure that {
+             *            when {
+             *                the IUT receives a secured CAM
+             *                    containing CenDsrcTollingZone/ProtectedCommunicationZonesRSU
+             *                    signed with certificate
+			 *                        indicating SSP version 1
+             *                        containing CAM SSP bit at position 0
+             *                            indicating 0
+             *            }
+             *            then {
+             *                the IUT discards the CAM
+             *                and the IUT does not forward the CAM content to upper layers
+             *                and the IUT does not forward the CAM content to other facilities
+             *            }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSP/SSP/BV-01-01 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSP_SSP_BV_01() runs on ItsCam system ItsCamSystem { + + f_CAM_MSP_SSP_BV_01(); + + } // End of TC_CAM_MSP_BV_01 + + /** + * @desc Check that IUT discards CAM if SSP value of the signing certificate + * is not consistent with the provided containers. + *
+             * Pics Selection: PICS_CAM_RECEPTION AND PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *         with {
+             *            the IUT being in the "initial state"
+             *        }
+             * Expected behaviour:
+             *        ensure that {
+             *            when {
+             *                the IUT receives a secured CAM
+             *                    containing publicTransportContainer
+             *                    and signed with certificate
+			 *                        indicating SSP version 1
+             *                        containing CAM SSP bit at position 1
+             *                            indicating 0
+             *            }
+             *            then {
+             *                the IUT discards the CAM
+             *                and the IUT does not forward the CAM content to upper layers
+             *                and the IUT does not forward the CAM content to other facilities
+             *            }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSP/SSP/BV-01-02 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSP_SSP_BV_02() runs on ItsCam system ItsCamSystem { + + f_CAM_MSP_SSP_BV_02(); + + } // End of TC_CAM_MSP_BV_02 + + /** + * @desc Check that IUT discards CAM if SSP value of the signing certificate + * is not consistent with the provided containers. + *
+             * Pics Selection: PICS_CAM_RECEPTION AND PICS_IS_IUT_SECURED
+             * Initial conditions:
+             *         with {
+             *            the IUT being in the "initial state"
+             *        }
+             * Expected behaviour:
+             *        ensure that {
+             *            when {
+             *                the IUT receives a secured CAM
+             *                    containing specialTransportContainer
+             *                    and signed with certificate
+			 *                        indicating SSP version 1
+             *                        containing CAM SSP bit at position 2
+             *                            indicating 0
+             *            }
+             *            then {
+             *                the IUT discards the CAM
+             *                and the IUT does not forward the CAM content to upper layers
+             *                and the IUT does not forward the CAM content to other facilities
+             *            }
+             *     }
+             * 
+ * + * @see ETSI TS 102 868-2 v2.2.1 TP/CAM/MSP/SSP/BV-01-03 + * @reference ETSI TS 103 900 v2.2.1, clause 6.2.2.1 + */ + testcase TC_CAM_MSP_SSP_BV_03() runs on ItsCam system ItsCamSystem { + + f_CAM_MSP_SSP_BV_03(); + + } // End of TC_CAM_MSP_BV_03 + + }// end group camProcessingSSP + + } // End of group camMessageProcessing + +} // End of module ItsCam_TestCases diff --git a/ItsCam_TestControl.ttcn b/ItsCam_TestControl.ttcn index 328f34551cf6b57ffac3628e6fb3ea0bfcf73177..60f980e7b6af89db0a09441287f3fe0ceb9652aa 100644 --- a/ItsCam_TestControl.ttcn +++ b/ItsCam_TestControl.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsCAM/ItsCam_TestControl.ttcn $ * $Id: ItsCam_TestControl.ttcn 2655 2017-01-26 10:46:08Z filatov $ * @desc Test Control file for CAM @@ -27,6 +27,12 @@ module ItsCam_TestControl { execute(TC_CAM_MSD_FMT_BV_03()); execute(TC_CAM_MSD_FMT_BV_04()); execute(TC_CAM_MSD_FMT_BV_05()); + if (PICS_RELEASE2 and PICS_EXTENSIONSCONTAINER) { + execute(TC_CAM_MSD_FMT_BV_06()); + execute(TC_CAM_MSD_FMT_BV_07()); + execute(TC_CAM_MSD_FMT_BV_08()); + execute(TC_CAM_MSD_FMT_BV_09()); + } execute(TC_CAM_MSD_INA_BV_01_01()); execute(TC_CAM_MSD_INA_BV_01_02()); execute(TC_CAM_MSD_INA_BV_01_03()); @@ -105,6 +111,25 @@ module ItsCam_TestControl { if (PICS_SPECIALTRANS and PICS_SPECIALVEHICLECONTAINER) { execute(TC_CAM_MSD_SSP_BO_03()); } + if (PICS_SPECIALTRANS and PICS_DANGEROUSGOODS) { + execute(TC_CAM_MSD_SSP_BO_04()); + } + if (PICS_SPECIALTRANS and PICS_ROADWORKS) { + execute(TC_CAM_MSD_SSP_BO_05()); + } + if (PICS_SPECIALTRANS and PICS_RESCUE) { + execute(TC_CAM_MSD_SSP_BO_06()); + } + if (PICS_SPECIALTRANS and PICS_EMERGENCY) { + execute(TC_CAM_MSD_SSP_BO_07()); + } + if (PICS_SPECIALTRANS and PICS_SAFETY_CAR) { + execute(TC_CAM_MSD_SSP_BO_08()); + } + if (PICS_RELEASE2 and PICS_EXTENSIONSCONTAINER) { + execute(TC_CAM_MSD_SSP_BO_15()); + execute(TC_CAM_MSD_SSP_BO_16()); + } } } diff --git a/ItsCam_TpFunctions.ttcn b/ItsCam_TpFunctions.ttcn index 0ef54d74324f0688f2c0be48d93a3fde054b882d..435aac00fd02401abcf1cf770cf2afd1f1f57173 100644 --- a/ItsCam_TpFunctions.ttcn +++ b/ItsCam_TpFunctions.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsCAM/ItsCam_TpFunctions.ttcn $ * $Id: ItsCam_TpFunctions.ttcn 2655 2017-01-26 10:46:08Z filatov $ * @desc CAM TP functions @@ -7,13 +7,11 @@ * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. -* + * */ module ItsCam_TpFunctions { - import from LibItsCommon_Pixits all; - // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; @@ -22,7 +20,7 @@ module ItsCam_TpFunctions { import from LibCommon_DataStrings all; // LibIts - import from ITS_Container language "ASN.1:1997" all; + import from ETSI_ITS_CDD language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCommon @@ -30,6 +28,7 @@ module ItsCam_TpFunctions { import from LibItsCommon_Functions all; import from LibItsCommon_Pixits all; import from LibItsCommon_ASN1_NamedNumbers all; + import from LibItsCommon_CddTemplates all; // LibItsCam import from LibItsCam_TestSystem all; @@ -37,6 +36,7 @@ module ItsCam_TpFunctions { import from LibItsCam_Templates all; import from LibItsCam_TypesAndValues all; import from LibItsCam_Pics all; + import from LibItsCam_Pixits all; import from LibItsSecurity_Functions all; @@ -72,11 +72,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -85,7 +85,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_FMT_BV_01 + } // End of function f_CAM_MSD_FMT_BV_01 /** * @desc TP Function for TC_CAM_MSD_FMT_BV_02 @@ -115,16 +115,16 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_LF_any )){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] camPort.receive(mw_camInd ( mw_camMsg_any )){ tc_ac.stop; - log("*** " & testcasename() & ": FAIL: Expected CAM message not received ***"); + log("*** " & testcasename() & ": FAIL: Expected CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -133,7 +133,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_FMT_BV_02 + } // End of function f_CAM_MSD_FMT_BV_02 /** * @desc TP Function for TC_CAM_MSD_FMT_BV_03 @@ -141,7 +141,7 @@ module ItsCam_TpFunctions { function f_CAM_MSD_FMT_BV_03() runs on ItsCam { // Local variables - timer t_minTransInterval := c_lowFrequencyGenerationTime * 1.10; + timer t_minTransInterval := c_lowFrequencyGenerationTime * PX_INC_TIMER_CONTROL_FACTOR; var SpeedValue v_speedValues[5] := { 1000, 2000, 3000, 4000, 5000 } //cm/s var integer v_cntSpeed, v_cntTime; var CamInd v_camInd; @@ -168,11 +168,11 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_LF_any )){ tc_ac.stop; t_minTransInterval.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -187,7 +187,7 @@ module ItsCam_TpFunctions { tc_ac.stop; v_cntTime := v_cntTime + 1; if (v_cntTime == c_cntTimeLimit) { // Exit message loop - log("*** " & testcasename() & ": INFO: The subset of CAM messages including lowFrequencyContainer was received ***"); + log("*** " & testcasename() & ": INFO: The subset of CA messages including lowFrequencyContainer was received ***"); t_minTransInterval.start; v_nextCamWithLF := false; } @@ -217,19 +217,19 @@ module ItsCam_TpFunctions { repeat; } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } } - log("*** " & testcasename() & ": PASS: Generation of CAM messages including lowFrequencyContainer was successful ***"); + log("*** " & testcasename() & ": PASS: Generation of CA messages including lowFrequencyContainer was successful ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // Postamble f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_FMT_BV_03 + } // End of function f_CAM_MSD_FMT_BV_03 /** * @desc TP Function for TC_CAM_MSD_FMT_BV_04 @@ -237,7 +237,7 @@ module ItsCam_TpFunctions { function f_CAM_MSD_FMT_BV_04() runs on ItsCam { // Local variables - var VehicleRole v_vehicleRole := c_vehicleRole_roadWork; + var VehicleRole v_vehicleRole := valueof(m_vehicle_role(roadWork)); // Test control if (not PICS_CAM_GENERATION or PICS_RSU) { @@ -266,11 +266,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC_any )){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -279,7 +279,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_FMT_BV_04 + } // End of function f_CAM_MSD_FMT_BV_04 /** * @desc TP Function for TC_CAM_MSD_FMT_BV_05 @@ -287,8 +287,8 @@ module ItsCam_TpFunctions { function f_CAM_MSD_FMT_BV_05() runs on ItsCam { // Local variables - timer t_minTransInterval := c_specialVehicleGenerationTime * 1.10; - var VehicleRole v_vehicleRole := roadWork; + timer t_minTransInterval := c_specialVehicleGenerationTime * PX_INC_TIMER_CONTROL_FACTOR; + var VehicleRole v_vehicleRole := valueof(m_vehicle_role(roadWork)); var SpeedValue v_speedValues[5] := { 1000, 2000, 3000, 4000, 5000 } //cm/s var integer v_cntSpeed, v_cntTime; var CamInd v_camInd; @@ -320,11 +320,11 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_SVC_any )){ tc_ac.stop; t_minTransInterval.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -339,7 +339,7 @@ module ItsCam_TpFunctions { tc_ac.stop; v_cntTime := v_cntTime + 1; if (v_cntTime == c_cntTimeLimit) { // Exit message loop - log("*** " & testcasename() & ": INFO: The subset of CAM messages including specialVehicleContainer was received ***"); + log("*** " & testcasename() & ": INFO: The subset of CA messages including specialVehicleContainer was received ***"); t_minTransInterval.start; v_nextCamWithSVC := false; } @@ -369,19 +369,270 @@ module ItsCam_TpFunctions { repeat; } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } } - log("*** " & testcasename() & ": PASS: Generation of CAM messages including SpecialVehicleContainer was successful ***"); + log("*** " & testcasename() & ": PASS: Generation of CA messages including SpecialVehicleContainer was successful ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // Postamble f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_FMT_BV_05 + } // End of function f_CAM_MSD_FMT_BV_05 + + /** + * @desc TP Function for TC_CAM_MSD_FMT_BV_06 + */ + function f_CAM_MSD_FMT_BV_06() runs on ItsCam { + + // Local variables + + // Test control + if (not PICS_CAM_GENERATION or not PICS_RELEASE2 or PICS_RSU) { + log("*** " & testcasename() & ": PICS_CAM_GENERATION AND PICS_RELEASE2 AND NOT PICS_RSU required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cfUp(); + + // Test adapter configuration + + // Preamble + f_prInitialState(); + camPort.clear; + tc_ac.start; + alt { // Fisrt CAM + [] camPort.receive(mw_camInd ( mw_camMsg_LF_any )){ + tc_ac.stop; + log("*** " & testcasename() & ": INFO: First CA message received ***"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + } + [] camPort.receive(mw_camInd ( mw_camMsg_any )){ + tc_ac.stop; + log("*** " & testcasename() & ": FAIL: Invalid first CA message ***"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: First CA message not received ***"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); + } + } + + // Test Body + tc_ac.start; + alt { // Second CAM + [] camPort.receive(mw_camInd ( mw_camMsg_ext_low_frequency_container_any )){ + tc_ac.stop; + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: CA message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } + + // Postamble + f_poDefault(); + f_cfDown(); + + } // End of function f_CAM_MSD_FMT_BV_06 + + /** + * @desc TP Function for TC_CAM_MSD_FMT_BV_07 + */ + function f_CAM_MSD_FMT_BV_07() runs on ItsCam { + + // Local variables + timer t_minTransInterval := c_veryLowFrequencyGenerationTime * PX_INC_TIMER_CONTROL_FACTOR; + var CamInd v_camInd; + var boolean v_nextCamWithVLF := false; + + // Test control + if (not PICS_CAM_GENERATION or not PICS_RELEASE2 or PICS_RSU) { + log("*** " & testcasename() & ": PICS_CAM_GENERATION AND PICS_RELEASE2 AND NOT PICS_RSU required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cfUp(); + + // Test adapter configuration + + // Preamble + f_prInitialState(); + camPort.clear; + tc_ac.start; + alt { // last CAM with veryLowFrequency container + [] camPort.receive(mw_camInd ( mw_camMsg_ext_low_frequency_container_any )){ + tc_ac.stop; + t_minTransInterval.start; + log("*** " & testcasename() & ": INFO: Initial conditions: Last CA message with veryLowFrequencyContainer received ***"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message with veryLowFrequencyContainer not received ***"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); + } + } + + // Test Body + tc_ac.start; + alt { + [] camPort.receive(mw_camInd ( mw_camMsg_ext_low_frequency_container_any )) { + tc_ac.stop; + + if (v_nextCamWithVLF) { + log("*** " & testcasename() & ": PASS: CA message with veryLowFrequencyContainer received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: CA message with veryLowFrequencyContainer received too early ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } + } + [] camPort.receive(mw_camInd ( mw_camMsg_any )) -> value v_camInd { + tc_ac.stop; + if (ispresent(v_camInd.msgIn.cam.camParameters.extensionContainers)) { + if (lengthof(v_camInd.msgIn.cam.camParameters.extensionContainers) != 0) { + var boolean v_found := false; + for (var integer v_idx := 0; v_idx < lengthof(v_camInd.msgIn.cam.camParameters.extensionContainers); v_idx := v_idx + 1) { + if (v_camInd.msgIn.cam.camParameters.extensionContainers[v_idx].containerId == veryLowFrequencyContainer) { + v_found := true; + break; + } + } // End of 'for' statement + if (v_found) { + log("*** " & testcasename() & ": FAIL: CA message with veryLowFrequencyContainer is unexpected here ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } else { + tc_ac.start; + repeat; + } + } else { + tc_ac.start; + repeat; + } + } else { + tc_ac.start; + repeat; + } + } + [] t_minTransInterval.timeout { + v_nextCamWithVLF := true; + log("*** " & testcasename() & ": INFO: Next CAM shall contain veryLowFrequency container ***"); + repeat; + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: CA message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } + + // Postamble + f_poDefault(); + f_cfDown(); + + } // End of function f_CAM_MSD_FMT_BV_07 + + /** + * @desc TP Function for TC_CAM_MSD_FMT_BV_08 + */ + function f_CAM_MSD_FMT_BV_08() runs on ItsCam { + + // Local variables + var StationType v_stationType := valueof(m_station_type(PX_IUT_STATION_TYPE)); + + // Test control + if (not PICS_CAM_GENERATION or not PICS_RELEASE2 or PICS_RSU) { + log("*** " & testcasename() & ": PICS_CAM_GENERATION AND PICS_RELEASE2 AND NOT PICS_RSU required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cfUp(); + + // Test adapter configuration + + // Preamble + f_prInitialState(); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Set vehicle role + f_utTriggerEvent(m_setStationType(v_stationType)); + + // Test Body + tc_ac.start; + alt { + [] camPort.receive(mw_camInd ( mw_camMsg_ext_two_wheelers_container_any )) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: CA message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } + + // Postamble + f_poDefault(); + f_cfDown(); + + } // End of function f_CAM_MSD_FMT_BV_08 + + /** + * @desc TP Function for TC_CAM_MSD_FMT_BV_09 + */ + function f_CAM_MSD_FMT_BV_09() runs on ItsCam { + + // Local variables + var StationType v_stationType := valueof(m_station_type(PX_IUT_STATION_TYPE)); + + // Test control + if (not PICS_CAM_GENERATION or not PICS_RELEASE2 or PICS_RSU) { + log("*** " & testcasename() & ": PICS_CAM_GENERATION AND PICS_RELEASE2 AND NOT PICS_RSU required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cfUp(); + + // Test adapter configuration + + // Preamble + f_prInitialState(); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Set vehicle role + f_utTriggerEvent(m_setStationType(v_stationType)); + + // Test Body + tc_ac.start; + alt { + [] camPort.receive(mw_camInd ( mw_camMsg_ext_two_wheelers_container_any )) { + tc_ac.stop; + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: CA message not received ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); + } + } + + // Postamble + f_poDefault(); + f_cfDown(); + + } // End of function f_CAM_MSD_FMT_BV_09 } // end group camMessageFormat @@ -400,7 +651,7 @@ module ItsCam_TpFunctions { log("*** " & testcasename() & ": Checking INFO==" & p_INFO & " ***"); if (lengthof(p_utTriggers) != lengthof(p_camPdus)) { - log("*** " & testcasename() & ": INCONC: Invalid testcase configuration: Number of event triggers and expected CAM messages differs ***"); + log("*** " & testcasename() & ": INCONC: Invalid testcase configuration: Number of event triggers and expected CA messages differs ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } @@ -412,15 +663,15 @@ module ItsCam_TpFunctions { [] camPort.receive( mw_camInd ( p_camPdus[v_cnt] )){ tc_ac.stop; if (v_cnt==lengthof(p_utTriggers)-1) { - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***"); + log("*** " & testcasename() & ": PRECONDITION: Expected CA message received ***"); } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -465,11 +716,11 @@ module ItsCam_TpFunctions { [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_curvature(v_curVal)) )) -> value v_camInd { tc_ac.stop; if (v_initialReceived) { - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***"); + log("*** " & testcasename() & ": PRECONDITION: Expected CA message received ***"); v_initialReceived := true; //change again the curvature value and set the expectation to the measured value if (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.curvature.curvatureValue >= 0) { @@ -486,7 +737,7 @@ module ItsCam_TpFunctions { } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -495,7 +746,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_01 + } // End of function f_CAM_MSD_INA_BV_01_01 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_02 @@ -531,7 +782,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_02 + } // End of function f_CAM_MSD_INA_BV_01_02 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_03 @@ -567,7 +818,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_03 + } // End of function f_CAM_MSD_INA_BV_01_03 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_04 @@ -603,7 +854,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_04 + } // End of function f_CAM_MSD_INA_BV_01_04 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_05 @@ -639,7 +890,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_05 + } // End of function f_CAM_MSD_INA_BV_01_05 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_06 @@ -675,7 +926,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_06 + } // End of function f_CAM_MSD_INA_BV_01_06 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_07 @@ -711,7 +962,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_07 + } // End of function f_CAM_MSD_INA_BV_01_07 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_08 @@ -747,7 +998,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_08 + } // End of function f_CAM_MSD_INA_BV_01_08 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_09 @@ -783,7 +1034,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_09 + } // End of function f_CAM_MSD_INA_BV_01_09 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_10 @@ -819,7 +1070,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_10 + } // End of function f_CAM_MSD_INA_BV_01_10 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_11 @@ -855,7 +1106,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_11 + } // End of function f_CAM_MSD_INA_BV_01_11 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_12 @@ -891,7 +1142,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_12 + } // End of function f_CAM_MSD_INA_BV_01_12 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_13 @@ -927,7 +1178,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_13 + } // End of function f_CAM_MSD_INA_BV_01_13 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_14 @@ -963,7 +1214,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_14 + } // End of function f_CAM_MSD_INA_BV_01_14 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_15 @@ -999,7 +1250,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_15 + } // End of function f_CAM_MSD_INA_BV_01_15 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_16 @@ -1035,7 +1286,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_16 + } // End of function f_CAM_MSD_INA_BV_01_16 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_17 @@ -1071,7 +1322,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_17 + } // End of function f_CAM_MSD_INA_BV_01_17 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_18 @@ -1107,7 +1358,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_18 + } // End of function f_CAM_MSD_INA_BV_01_18 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_19 @@ -1143,7 +1394,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_19 + } // End of function f_CAM_MSD_INA_BV_01_19 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_20 @@ -1179,7 +1430,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_20 + } // End of function f_CAM_MSD_INA_BV_01_20 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_21 @@ -1215,7 +1466,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_21 + } // End of function f_CAM_MSD_INA_BV_01_21 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_22 @@ -1251,7 +1502,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_22 + } // End of function f_CAM_MSD_INA_BV_01_22 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_23 @@ -1287,7 +1538,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_23 + } // End of function f_CAM_MSD_INA_BV_01_23 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_24 @@ -1323,7 +1574,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_24 + } // End of function f_CAM_MSD_INA_BV_01_24 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_25 @@ -1359,7 +1610,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_25 + } // End of function f_CAM_MSD_INA_BV_01_25 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_26 @@ -1395,7 +1646,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_26 + } // End of function f_CAM_MSD_INA_BV_01_26 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_27 @@ -1431,7 +1682,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_27 + } // End of function f_CAM_MSD_INA_BV_01_27 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_28 @@ -1467,7 +1718,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_28 + } // End of function f_CAM_MSD_INA_BV_01_28 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_29 @@ -1503,7 +1754,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_29 + } // End of function f_CAM_MSD_INA_BV_01_29 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_30 @@ -1539,7 +1790,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_30 + } // End of function f_CAM_MSD_INA_BV_01_30 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_31 @@ -1575,7 +1826,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_31 + } // End of function f_CAM_MSD_INA_BV_01_31 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_32 @@ -1615,11 +1866,11 @@ module ItsCam_TpFunctions { [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_heading(v_headingVal)) )) -> value v_camInd { tc_ac.stop; if (v_initialReceived) { - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***"); + log("*** " & testcasename() & ": PRECONDITION: Expected CA message received ***"); v_initialReceived := true; //change again the heading value and set the expectation to the measured value v_headingVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.heading.headingValue+c_headingValOffset) mod 3601; @@ -1629,7 +1880,7 @@ module ItsCam_TpFunctions { } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1638,7 +1889,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_32 + } // End of function f_CAM_MSD_INA_BV_01_32 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_33 @@ -1678,11 +1929,11 @@ module ItsCam_TpFunctions { [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_speed(v_speedVal)) )) -> value v_camInd { tc_ac.stop; if (v_initialReceived) { - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***"); + log("*** " & testcasename() & ": PRECONDITION: Expected CA message received ***"); v_initialReceived := true; //change again the speed value and set the expectation to the measured value v_speedVal := (v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue+c_speedValOffset) mod 16384; @@ -1692,7 +1943,7 @@ module ItsCam_TpFunctions { } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1701,7 +1952,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_33 + } // End of function f_CAM_MSD_INA_BV_01_33 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_34 @@ -1739,11 +1990,11 @@ module ItsCam_TpFunctions { [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_driveDirection(v_driveVal)) )) -> value v_camInd { tc_ac.stop; if (v_driveVal==forward) { - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***"); + log("*** " & testcasename() & ": PRECONDITION: Expected CA message received ***"); //change again the drive direction and set the expectation to the measured value v_driveVal := forward; f_utTriggerEvent(m_setDriveDirection(v_driveVal)); @@ -1752,7 +2003,7 @@ module ItsCam_TpFunctions { } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1761,7 +2012,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_34 + } // End of function f_CAM_MSD_INA_BV_01_34 /** * @desc TP Function for TC_CAM_MSD_INA_BV_01_35 @@ -1801,11 +2052,11 @@ module ItsCam_TpFunctions { [] camPort.receive( mw_camInd ( mw_camMsg_HF_BV(mw_HF_BV_yawRate(v_yawRateVal)) )) -> value v_camInd { tc_ac.stop; if (v_initialReceived) { - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***"); + log("*** " & testcasename() & ": PRECONDITION: Expected CA message received ***"); v_initialReceived := true; //change again the yaw rate value and set the expectation to the measured value v_yawRateVal := v_camInd.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.yawRate.yawRateValue; @@ -1822,7 +2073,7 @@ module ItsCam_TpFunctions { } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1831,7 +2082,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_01_35 + } // End of function f_CAM_MSD_INA_BV_01_35 } // end group camInVehicleData @@ -1849,6 +2100,7 @@ module ItsCam_TpFunctions { stop; } if (not PICS_PUBLICTRANS) { + setverdict(inconc); testcase.stop(testcasename() & ": PICS_PUBLICTRANS need to be set to true"); } @@ -1862,7 +2114,7 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_publicTransport)); + f_utTriggerEvent(m_setVehicleRole(publicTransport)); // Test Body log("*** " & testcasename() & ": Expected template: ", mw_camInd ( mw_camMsg_SVC( mw_publicTransport_any )), " ***"); @@ -1870,11 +2122,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_publicTransport_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1883,7 +2135,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_02 + } // End of function f_CAM_MSD_INA_BV_02 /** * @desc TP Function for TC_CAM_MSD_INA_BV_03 @@ -1912,18 +2164,18 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_specialTransport)); + f_utTriggerEvent(m_setVehicleRole(specialTransport)); // Test Body tc_ac.start; alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_specialTransport_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1932,7 +2184,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_03 + } // End of function f_CAM_MSD_INA_BV_03 /** * @desc TP Function for TC_CAM_MSD_INA_BV_04 @@ -1961,18 +2213,18 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_dangerousGoods)); + f_utTriggerEvent(m_setVehicleRole(dangerousGoods)); // Test Body tc_ac.start; alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_dangerousGoods_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -1981,7 +2233,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_04 + } // End of function f_CAM_MSD_INA_BV_04 /** * @desc TP Function for TC_CAM_MSD_INA_BV_05 @@ -2010,18 +2262,18 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_roadWork)); + f_utTriggerEvent(m_setVehicleRole(roadWork)); // Test Body tc_ac.start; alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_roadWorks_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2030,7 +2282,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_05 + } // End of function f_CAM_MSD_INA_BV_05 /** * @desc TP Function for TC_CAM_MSD_INA_BV_06 @@ -2059,18 +2311,18 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_rescue)); + f_utTriggerEvent(m_setVehicleRole(rescue)); // Test Body tc_ac.start; alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_rescue_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2079,7 +2331,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_06 + } // End of function f_CAM_MSD_INA_BV_06 /** * @desc TP Function for TC_CAM_MSD_INA_BV_07 @@ -2108,18 +2360,18 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_emergency)); + f_utTriggerEvent(m_setVehicleRole(emergency)); // Test Body tc_ac.start; alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_emergency_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2128,7 +2380,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_07 + } // End of function f_CAM_MSD_INA_BV_07 /** * @desc TP Function for TC_CAM_MSD_INA_BV_08 @@ -2157,18 +2409,18 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Set vehicle role - f_utTriggerEvent(m_setVehicleRole(c_vehicleRole_safetyCar)); + f_utTriggerEvent(m_setVehicleRole(safetyCar)); // Test Body tc_ac.start; alt { [] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_safetyCar_any ))){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2177,7 +2429,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_INA_BV_08 + } // End of function f_CAM_MSD_INA_BV_08 } // end group camInformationAdaptation @@ -2191,7 +2443,7 @@ module ItsCam_TpFunctions { function f_CAM_MSD_GFQ_TI_01() runs on ItsCam { // Local variables - timer t_minTransInterval := PICS_T_GENCAMMIN * 0.90; + timer t_minTransInterval := PICS_T_GENCAMMIN * PX_DEC_TIMER_CONTROL_FACTOR; var SpeedValue v_speedValues[5] := { 1000, 2000, 3000, 4000, 5000 } //cm/s var integer v_cntSpeed, v_cntTime; var FncRetCode v_ret; @@ -2216,11 +2468,11 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ tc_ac.stop; t_minTransInterval.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2231,11 +2483,11 @@ module ItsCam_TpFunctions { v_ret := f_CAM_MSD_GFQ_TI_01_helper(t_minTransInterval); select (v_ret) { case (e_error) { - log("*** " & testcasename() & ": FAIL: CAM message received BEFORE expiry of the minimum generation timer interval ***"); + log("*** " & testcasename() & ": FAIL: CA message received BEFORE expiry of the minimum generation timer interval ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } case (e_timeout) { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2244,14 +2496,14 @@ module ItsCam_TpFunctions { f_changeSpeed(v_speedValues[v_cntSpeed]); } t_minTransInterval.stop; - log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***"); + log("*** " & testcasename() & ": PASS: Generation of CA messages was successful ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // Postamble f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_TI_01 + } // End of function f_CAM_MSD_GFQ_TI_01 function f_CAM_MSD_GFQ_TI_01_helper(timer t_minTransInterval) runs on ItsCam return FncRetCode { @@ -2285,7 +2537,7 @@ module ItsCam_TpFunctions { function f_CAM_MSD_GFQ_TI_02() runs on ItsCam { // Local variables - timer t_maxTransInterval := PICS_T_GENCAMMAX * 1.10; + timer t_maxTransInterval := PICS_T_GENCAMMAX * PX_INC_TIMER_CONTROL_FACTOR; var integer v_cntSpeed, v_cntTime; var FncRetCode v_ret; @@ -2309,11 +2561,11 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ tc_ac.stop; t_maxTransInterval.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2323,24 +2575,24 @@ module ItsCam_TpFunctions { v_ret := f_CAM_MSD_GFQ_TI_02_helper(t_maxTransInterval); select (v_ret) { case (e_error) { - log("*** " & testcasename() & ": FAIL: No CAM message received BEFORE expiry of the maximum generation timer interval ***"); + log("*** " & testcasename() & ": FAIL: No CA message received BEFORE expiry of the maximum generation timer interval ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } case (e_timeout) { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } } t_maxTransInterval.stop; - log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***"); + log("*** " & testcasename() & ": PASS: Generation of CA messages was successful ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // Postamble f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_TI_02 + } // End of function f_CAM_MSD_GFQ_TI_02 function f_CAM_MSD_GFQ_TI_02_helper(timer t_maxTransInterval) runs on ItsCam return FncRetCode { @@ -2398,11 +2650,11 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_any )) -> value v_camInd { v_receiveTime := int2float(v_camInd.recvTime) / 1000.0; tc_ac.stop; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); log("*** " & testcasename() & ": DEBUG: v_receiveTime=" , v_receiveTime, " ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2416,10 +2668,10 @@ module ItsCam_TpFunctions { v_receiveTime := int2float(v_camInd.recvTime) / 1000.0; log("*** " & testcasename() & ": DEBUG: Elapsed time since last CAM: v_interval_1_measured=", v_interval_1_measured, " ***"); log("*** " & testcasename() & ": DEBUG: Elapsed time since last CAM: new v_receiveTime = ", v_receiveTime, " ***"); - log("*** " & testcasename() & ": INFO: Initial conditions: Condition 1 CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: Condition 1 CA message received ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 1 CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 1 CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2438,7 +2690,7 @@ module ItsCam_TpFunctions { log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 2 CAM#", v_i, " message received BEFORE INTERVAL_1 expired ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } - else if (v_measured>v_interval_1_measured * 1.10) { + else if (v_measured>v_interval_1_measured * PX_INC_TIMER_CONTROL_FACTOR) { log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 2 CAM#", v_i, " message not received in time ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } @@ -2460,21 +2712,21 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_any )) -> value v_camInd { var float v_measured := int2float(v_camInd.recvTime) / 1000.0 - v_receiveTime; log("*** " & testcasename() & ": DEBUG: v_measured=", v_measured, " ***"); - if (v_measuredPICS_T_GENCAMMAX * 1.10) { - log("*** " & testcasename() & ": FAIL: Next CAM message not received AFTER T_GenCamMax expired ***"); + else if (v_measured>PICS_T_GENCAMMAX * PX_INC_TIMER_CONTROL_FACTOR) { + log("*** " & testcasename() & ": FAIL: Next CA message not received AFTER T_GenCamMax expired ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { - log("*** " & testcasename() & ": PASS: Next CAM message received AFTER T_GenCamMax expired ***"); + log("*** " & testcasename() & ": PASS: Next CA message received AFTER T_GenCamMax expired ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } [] tc_ac.timeout { - log("*** " & testcasename() & ": FAIL: Next CAM message not received AFTER T_GenCamMax expired ***"); + log("*** " & testcasename() & ": FAIL: Next CA message not received AFTER T_GenCamMax expired ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } @@ -2483,7 +2735,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_TI_03 + } // End of function f_CAM_MSD_GFQ_TI_03 /** * @desc TP Function for TC_CAM_MSD_GFQ_BV_04 @@ -2491,8 +2743,8 @@ module ItsCam_TpFunctions { function f_CAM_MSD_GFQ_BV_04() runs on ItsCam { // Local variables - timer t_genCam_dcc := PICS_T_GENCAMDCC * 0.90; - timer t_genCam_min := PICS_T_GENCAMMIN * 1.10; + timer t_genCam_dcc := PICS_T_GENCAMDCC * PX_DEC_TIMER_CONTROL_FACTOR; + timer t_genCam_min := PICS_T_GENCAMMIN * PX_INC_TIMER_CONTROL_FACTOR; var CamInd v_camPdu; var HeadingValue v_headingValue; var HeadingValue v_changeHeadingValue := 50; // 4° == 40 @@ -2518,10 +2770,10 @@ module ItsCam_TpFunctions { tc_ac.stop; v_headingValue := v_camPdu.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.heading.headingValue; t_genCam_dcc.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2534,11 +2786,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_heading( (v_headingValue + v_changeHeadingValue) mod 3600) ) )){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: CAM message received ***"); + log("*** " & testcasename() & ": PASS: CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] t_genCam_min.timeout { - log("*** " & testcasename() & ": FAIL: CAM message not received ***"); + log("*** " & testcasename() & ": FAIL: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } @@ -2547,7 +2799,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_BV_04 + } // End of function f_CAM_MSD_GFQ_BV_04 /** * @desc TP Function for TC_CAM_MSD_GFQ_BV_05 @@ -2555,9 +2807,9 @@ module ItsCam_TpFunctions { function f_CAM_MSD_GFQ_BV_05() runs on ItsCam { // Local variables - timer t_genCam_dcc := PICS_T_GENCAMDCC * 0.90; + timer t_genCam_dcc := PICS_T_GENCAMDCC * PX_DEC_TIMER_CONTROL_FACTOR; var CamInd v_camPdu; - var ReferencePosition v_referencePosition, v_expectedReferencePosition; + var ReferencePositionWithConfidence v_referencePosition, v_expectedReferencePosition; var float v_changePosValue := 8.0; // 8 >> 4m // Test control @@ -2582,10 +2834,10 @@ module ItsCam_TpFunctions { tc_ac.stop; v_referencePosition := v_camPdu.msgIn.cam.camParameters.basicContainer.referencePosition; t_genCam_dcc.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2606,11 +2858,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_BC_refPos ( v_expectedReferencePosition ) )){ t_genCam_dcc.stop; - log("*** " & testcasename() & ": PASS: CAM message received ***"); + log("*** " & testcasename() & ": PASS: CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] t_genCam_dcc.timeout { - log("*** " & testcasename() & ": FAIL: CAM message not received ***"); + log("*** " & testcasename() & ": FAIL: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } @@ -2619,7 +2871,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_BV_05 + } // End of function f_CAM_MSD_GFQ_BV_05 /** * @desc TP Function for TC_CAM_MSD_GFQ_BV_06 @@ -2627,8 +2879,8 @@ module ItsCam_TpFunctions { function f_CAM_MSD_GFQ_BV_06() runs on ItsCam { // Local variables - timer t_genCam_dcc := PICS_T_GENCAMDCC * 0.90; - timer t_genCam_min := PICS_T_GENCAMMIN * 1.10; + timer t_genCam_dcc := PICS_T_GENCAMDCC * PX_DEC_TIMER_CONTROL_FACTOR; + timer t_genCam_min := PICS_T_GENCAMMIN * PX_INC_TIMER_CONTROL_FACTOR; var CamInd v_camPdu; var SpeedValue v_speedValue; var SpeedValue v_changeSpeedValue := 60; // 0,5 m/s << 0,6 m/s == 60 cm/s @@ -2654,10 +2906,10 @@ module ItsCam_TpFunctions { tc_ac.stop; v_speedValue := v_camPdu.msgIn.cam.camParameters.highFrequencyContainer.basicVehicleContainerHighFrequency.speed.speedValue; t_genCam_dcc.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2670,11 +2922,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_speed( (v_speedValue + v_changeSpeedValue) mod 16384 ) ) )){ tc_ac.stop; - log("*** " & testcasename() & ": PASS: CAM message received ***"); + log("*** " & testcasename() & ": PASS: CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] t_genCam_min.timeout { - log("*** " & testcasename() & ": FAIL: CAM message not received ***"); + log("*** " & testcasename() & ": FAIL: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } @@ -2683,7 +2935,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_BV_06 + } // End of function f_CAM_MSD_GFQ_BV_06 /** * @desc TP Function for TC_CAM_MSD_GFQ_TI_07 @@ -2691,8 +2943,8 @@ module ItsCam_TpFunctions { function f_CAM_MSD_GFQ_TI_07() runs on ItsCam { // Local variables - timer t_maxTransInterval_min := PICS_T_GENCAMMAX * 0.90; - timer t_maxTransInterval_max := PICS_T_GENCAMMAX * 1.10; + timer t_maxTransInterval_min := PICS_T_GENCAMMAX * PX_DEC_TIMER_CONTROL_FACTOR; + timer t_maxTransInterval_max := PICS_T_GENCAMMAX * PX_INC_TIMER_CONTROL_FACTOR; timer t_genCam_measure := PX_TWAIT; timer t_genCam_min; timer t_genCam_max; @@ -2719,10 +2971,10 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ tc_ac.stop; t_genCam_measure.start; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2734,10 +2986,10 @@ module ItsCam_TpFunctions { tc_ac.stop; v_genCam_min := v_measured * 0.9; v_genCam_max := v_measured * 1.1; - log("*** " & testcasename() & ": INFO: Initial conditions: Anticipated CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: Anticipated CA message received ***"); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: Anticipated CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: Anticipated CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2749,18 +3001,18 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ if (t_genCam_min.running) { - log("*** " & testcasename() & ": FAIL: Anticipated CAM message received BEFORE T_GenCam expired ***"); + log("*** " & testcasename() & ": FAIL: Anticipated CA message received BEFORE T_GenCam expired ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } t_genCam_max.stop; - log("*** " & testcasename() & ": PASS: Anticipated CAM message received ***"); + log("*** " & testcasename() & ": PASS: Anticipated CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] t_genCam_min.timeout { repeat; } [] t_genCam_max.timeout { - log("*** " & testcasename() & ": FAIL: Anticipated CAM message not received ***"); + log("*** " & testcasename() & ": FAIL: Anticipated CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } @@ -2769,7 +3021,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_TI_07 + } // End of function f_CAM_MSD_GFQ_TI_07 /** * @desc TP Function for TC_CAM_MSD_GFQ_TI_08 @@ -2797,11 +3049,11 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ tc_ac.stop; - log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***"); + log("*** " & testcasename() & ": INFO: Initial conditions: First CA message received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: Initial conditions: CA message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } @@ -2812,17 +3064,17 @@ module ItsCam_TpFunctions { [] camPort.receive(mw_camInd ( mw_camMsg_any )){ if ( ( tc_ac.read > c_minTime )) { tc_ac.stop; - log("*** " & testcasename() & ": PASS: CAM message received in time***"); + log("*** " & testcasename() & ": PASS: CA message received in time***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { tc_ac.stop; - log("*** " & testcasename() & ": FAIL: CAM message not received in time***"); + log("*** " & testcasename() & ": FAIL: CA message not received in time***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { - log("*** " & testcasename() & ": FAIL: CAM message not received ***"); + log("*** " & testcasename() & ": FAIL: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2831,7 +3083,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_GFQ_TI_08 + } // End of function f_CAM_MSD_GFQ_TI_08 } // end group camGenerationFrequency @@ -2866,7 +3118,7 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camIndWithGnParameters(mw_camMsg_any, c_gnNhBtpB)) { tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message encapsultated in BTP-B packet received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message encapsultated in BTP-B packet received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] camPort.receive(mw_camIndWithGnParameters(mw_camMsg_any, omit)) { @@ -2876,11 +3128,11 @@ module ItsCam_TpFunctions { } [] camPort.receive(mw_camInd(mw_camMsg_any)) { tc_ac.stop; - log("*** " & testcasename() & ": FAIL: Expected CAM message received, but not encapsulated in BTP-B packet ***"); + log("*** " & testcasename() & ": FAIL: Expected CA message received, but not encapsulated in BTP-B packet ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2889,7 +3141,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_PAR_BV_01 + } // End of function f_CAM_MSD_PAR_BV_01 /** * @desc TP Function for TC_CAM_MSD_PAR_BV_02 @@ -2921,7 +3173,7 @@ module ItsCam_TpFunctions { alt { [] camPort.receive(mw_camIndWithGnParameters(mw_camMsg_any, -, c_gnHtTsb, c_GnHstSingleHop)) { tc_ac.stop; - log("*** " & testcasename() & ": PASS: Expected CAM message encapsulated in SHB packet received ***"); + log("*** " & testcasename() & ": PASS: Expected CA message encapsulated in SHB packet received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] camPort.receive(mw_camIndWithGnParameters(mw_camMsg_any, -, omit, omit)) { @@ -2931,11 +3183,11 @@ module ItsCam_TpFunctions { } [] camPort.receive(mw_camInd(mw_camMsg_any)) { tc_ac.stop; - log("*** " & testcasename() & ": FAIL: Expected CAM message received, but not encapsulated in SHB packet ***"); + log("*** " & testcasename() & ": FAIL: Expected CA message received, but not encapsulated in SHB packet ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2944,7 +3196,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_PAR_BV_02 + } // End of function f_CAM_MSD_PAR_BV_02 /** * @desc TP Function for TC_CAM_MSD_PAR_BV_03 @@ -2980,16 +3232,16 @@ module ItsCam_TpFunctions { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } if(v_camInd.gnLifetime <= 1000) { - log("*** " & testcasename() & ": PASS: Expected CAM message received encapsulted in GN packet with correct lifetime value ***"); + log("*** " & testcasename() & ": PASS: Expected CA message received encapsulted in GN packet with correct lifetime value ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { - log("*** " & testcasename() & ": FAIL: Expected CAM message received encapsulted in GN packet with incorrect lifetime value ***"); + log("*** " & testcasename() & ": FAIL: Expected CA message received encapsulted in GN packet with incorrect lifetime value ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: CAM message not received ***"); + log("*** " & testcasename() & ": INCONC: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } @@ -2998,7 +3250,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_PAR_BV_03 + } // End of function f_CAM_MSD_PAR_BV_03 } // end group camLowerLayerParameters group camGenerationSSP { @@ -3061,11 +3313,11 @@ module ItsCam_TpFunctions { pmw_ssp )) { tc_ac.stop; - log("*** " & testcasename() & ": FAIL: Expected CAM message received ***"); + log("*** " & testcasename() & ": FAIL: Expected CA message received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { - log("*** " & testcasename() & ": PASS: CAM message not received ***"); + log("*** " & testcasename() & ": PASS: CA message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } @@ -3074,7 +3326,7 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSD_SSP_BO_XX + } // End of function f_CAM_MSD_SSP_BO_XX function f_CAM_MSD_SSP_BO_01() runs on ItsCam { @@ -3083,34 +3335,126 @@ module ItsCam_TpFunctions { setverdict(inconc); stop; - } // end f_CAM_MSD_SSP_BO_01 + } // End of function f_CAM_MSD_SSP_BO_01 function f_CAM_MSD_SSP_BO_02() runs on ItsCam { - if (not PICS_SPECIALVEHICLECONTAINER and not PICS_PUBLICTRANS) { + if (not PICS_SPECIALVEHICLECONTAINER or not PICS_PUBLICTRANS) { testcase.stop(testcasename() & ": PICS_SPECIALVEHICLECONTAINER and PICS_PUBLICTRANS need to be set to true"); } f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_02, - m_setVehicleRole(c_vehicleRole_publicTransport), + m_setVehicleRole(publicTransport), mw_camMsg_SVC ( mw_publicTransport_any ) ); - } // end f_CAM_MSD_SSP_BO_02 + } // End of function f_CAM_MSD_SSP_BO_02 function f_CAM_MSD_SSP_BO_03() runs on ItsCam { - if (not PICS_SPECIALVEHICLECONTAINER and not PICS_SPECIALTRANS) { + if (not PICS_SPECIALVEHICLECONTAINER or not PICS_SPECIALTRANS) { testcase.stop(testcasename() & ": PICS_SPECIALVEHICLECONTAINER and PICS_SPECIALTRANS need to be set to true"); } f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_03, - m_setVehicleRole(c_vehicleRole_specialTransport), + m_setVehicleRole(specialTransport), mw_camMsg_SVC ( mw_specialTransport_any ) ); - } // end f_CAM_MSD_SSP_BO_03 + } // End of function f_CAM_MSD_SSP_BO_03 + + function f_CAM_MSD_SSP_BO_04() runs on ItsCam { + + if (not PICS_SPECIALVEHICLECONTAINER and not PICS_DANGEROUSGOODS) { + testcase.stop(testcasename() + & ": PICS_SPECIALVEHICLECONTAINER and PICS_DANGEROUSGOODS need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_04, + m_setVehicleRole(dangerousGoods), + mw_camMsg_SVC ( mw_specialTransport_any ) + ); + } // End of function f_CAM_MSD_SSP_BO_04 + + function f_CAM_MSD_SSP_BO_05() runs on ItsCam { + + if (not PICS_SPECIALVEHICLECONTAINER and not PICS_ROADWORKS) { + testcase.stop(testcasename() + & ": PICS_SPECIALVEHICLECONTAINER and PICS_ROADWORKS need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_05, + m_setVehicleRole(roadWork), + mw_camMsg_SVC ( mw_specialTransport_any ) + ); + } // End of function f_CAM_MSD_SSP_BO_05 + + function f_CAM_MSD_SSP_BO_06() runs on ItsCam { + + if (not PICS_SPECIALVEHICLECONTAINER and not PICS_RESCUE) { + testcase.stop(testcasename() + & ": PICS_SPECIALVEHICLECONTAINER and PICS_RESCUE need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_06, + m_setVehicleRole(rescue), + mw_camMsg_SVC ( mw_specialTransport_any ) + ); + } // End of function f_CAM_MSD_SSP_BO_06 + + function f_CAM_MSD_SSP_BO_07() runs on ItsCam { + + if (not PICS_SPECIALVEHICLECONTAINER and not PICS_EMERGENCY) { + testcase.stop(testcasename() + & ": PICS_SPECIALVEHICLECONTAINER and PICS_EMERGENCY need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_07, + m_setVehicleRole(emergency), + mw_camMsg_SVC ( mw_specialTransport_any ) + ); + } // End of function f_CAM_MSD_SSP_BO_07 + + function f_CAM_MSD_SSP_BO_08() runs on ItsCam { + + if (not PICS_SPECIALVEHICLECONTAINER and not PICS_SAFETY_CAR) { + testcase.stop(testcasename() + & ": PICS_SPECIALVEHICLECONTAINER and PICS_SAFETY_CAR need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_08, + m_setVehicleRole(safetyCar), + mw_camMsg_SVC ( mw_specialTransport_any ) + ); + } // End of function f_CAM_MSD_SSP_BO_08 + + function f_CAM_MSD_SSP_BO_15() runs on ItsCam { + + if (not PICS_RELEASE2 or not PICS_EXTENSIONSCONTAINER) { + testcase.stop(testcasename() + & ": PICS_RELEASE2 and PICS_EXTENSIONSCONTAINER need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_15, + m_setStationType(StationType_motorcycle_), + mw_camMsg_ext_two_wheelers_container_any + ); + } // End of function f_CAM_MSD_SSP_BO_15 + + function f_CAM_MSD_SSP_BO_16() runs on ItsCam { + + if (not PICS_RELEASE2 or not PICS_EXTENSIONSCONTAINER) { + testcase.stop(testcasename() + & ": PICS_RELEASE2 and PICS_EXTENSIONSCONTAINER need to be set to true"); + } + + f_CAM_MSD_SSP_BO_XX(PX_CERT_IUT_CAM_16, + m_setStationType(StationType_cyclist_), + mw_camMsg_ext_two_wheelers_container_any + ); + } // End of function f_CAM_MSD_SSP_BO_16 + } } // end group camSSP @@ -3171,13 +3515,13 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSP_BV_01 + } // End of function f_CAM_MSP_BV_01 group camProcessingSSP{ /** * @desc TP Function for TC_CAM_MSP_SSP_BV_XX - * @param p_certName Certificate to be used to sign the CAM message + * @param p_certName Certificate to be used to sign the CA message * @param p_camMsg CAM value template to be sent to IUT * @param p_discarded Set to true if the message shallbe discarded */ @@ -3246,14 +3590,14 @@ module ItsCam_TpFunctions { f_poDefault(); f_cfDown(); - } // end f_CAM_MSP_SSP_BV_XX + } // End of function f_CAM_MSP_SSP_BV_XX function f_CAM_MSP_SSP_BV_01() runs on ItsCam { log("*** " & testcasename() & ": This TC is not implemented yet ***"); setverdict(inconc); stop; - } // end f_CAM_MSP_SSP_BV_01 + } // End of function f_CAM_MSP_SSP_BV_01 function f_CAM_MSP_SSP_BV_02() runs on ItsCam { @@ -3264,7 +3608,7 @@ module ItsCam_TpFunctions { m_tsPosition ) ); - } // end f_CAM_MSP_SSP_BV_03 + } // End of function f_CAM_MSP_SSP_BV_03 function f_CAM_MSP_SSP_BV_03() runs on ItsCam { @@ -3275,7 +3619,7 @@ module ItsCam_TpFunctions { m_tsPosition ) ); - } // end f_CAM_MSP_SSP_BV_03 + } // End of function f_CAM_MSP_SSP_BV_03 }// end group camProcessingSSP } // end group camMessageProcessing diff --git a/LICENSE b/LICENSE old mode 100755 new mode 100644 index 87e45c54799903d056b4aff129a804047236cfb4..950683d5a87a8fed1a434b8ec477df6c4f33c4ea --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2022 ETSI +Copyright 2019-2024 ETSI Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index a7ba876e6d418caaa68abf54d144f470d7b673d7..f4290b6d21e33062df3f5f23d62a1ea4bad4c152 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cooperative Awareness Message TTCN-3 test suite -Cooperative Awareness Message abstract test suite (ATS) as defined in [ETSI TS 102 868-3 v1.5.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10286803/01.05.01_60/ts_10286803v010501p.pdf) +Cooperative Awareness Message abstract test suite (ATS) as defined in [ETSI TS 102 868-3 v2.1.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10286803/01.05.01_60/ts_10286803v010501p.pdf) This code is a part of the ETSI ITS test suite, available on https://forge.etsi.org/rep/ITS/TS.ITS and cannot be run independently. Please clone the main ETSI ITS test suite repository and compile and follow the compilation instructions. diff --git a/lib/LibItsCam_EncdecDeclarations.ttcn b/lib/LibItsCam_EncdecDeclarations.ttcn index 2087458a4615f9746822531b745536b1abb262d2..97e41b2850b48551f853b7c0ce713572c52a339b 100644 --- a/lib/LibItsCam_EncdecDeclarations.ttcn +++ b/lib/LibItsCam_EncdecDeclarations.ttcn @@ -27,6 +27,9 @@ module LibItsCam_EncdecDeclarations { external function fx_enc_UtCamChangePosition (UtCamChangePosition p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} + external function fx_enc_UtCamChangePseudonym (UtCamChangePseudonym p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + external function fx_enc_UtCamTrigger (UtCamTrigger p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} diff --git a/lib/LibItsCam_Pics.ttcn b/lib/LibItsCam_Pics.ttcn index 95028e84b53de471d74fc4bb4c50b1cc593b9ed4..d33ddf367519ee3884e4f3339890252668c995c1 100644 --- a/lib/LibItsCam_Pics.ttcn +++ b/lib/LibItsCam_Pics.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_Pics.ttcn $ * $Id: LibItsCam_Pics.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc CAM PICS @@ -17,76 +17,118 @@ module LibItsCam_Pics { group camPics { /** - * @desc Is the IUT RSU? + * @desc Does the IUT support CAMv2? * @see ETSI TS 102 868-1 Table A.1 */ + modulepar boolean PICS_RELEASE2 := true; + + /** + * @desc Is the IUT RSU? + * @see ETSI TS 102 868-1 Table A.2 + */ modulepar boolean PICS_RSU := false; /** * @desc Is the IUT running in secured mode? - * @see ETSI TS 102 868-1 Table A.1 + * @see ETSI TS 102 868-1 Table A.7 */ modulepar boolean PICS_IS_IUT_SECURED := false; /** * @desc Is IUT a public transport vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_PUBLICTRANS := false; /** * @desc Is IUT a special transport vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_SPECIALTRANS := false; /** * @desc Is IUT a dangerous goods vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_DANGEROUSGOODS := false; /** * @desc Is IUT a road works vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_ROADWORKS := false; /** * @desc Is IUT a rescue vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_RESCUE := false; /** * @desc Is IUT an emergency vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_EMERGENCY := false; /** * @desc Is IUT a safety car vehicle - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_SAFETY_CAR := false; /** * @desc Does IUT support 'specialVehicleContainer' in CamParameters? - * @see ETSI TS 102 868-1 Table A.2 + * @see ETSI TS 102 868-1 Table A.4 */ modulepar boolean PICS_SPECIALVEHICLECONTAINER := true; + /** + * @desc Does IUT support 'extensionsContainer' in CamParameters? + * @see ETSI TS 102 868-1 Table A.5/1 + */ + modulepar boolean PICS_EXTENSIONSCONTAINER := true; + + /** + * @desc Does IUT support 'extensionsContainer' in CamParameters? + * @see ETSI TS 102 868-1 Table A.5/2 + */ + modulepar boolean PICS_GENERALIZEDLANEPOSITIONSCONTAINER := true; + + /** + * @desc Does IUT support 'extensionsContainer' in CamParameters? + * @see ETSI TS 102 868-1 Table A.5/3 + */ + modulepar boolean PICS_PATHPREDICTIONCONTAINER := true; + + /** + * @desc Does IUT support 'extensionsContainer' in CamParameters? + * @see ETSI TS 102 868-1 Table A.5/4 + */ + modulepar boolean PICS_TWOWHEELERCONTAINER := true; + + /** + * @desc Does IUT support 'extensionsContainer' in CamParameters? + * @see ETSI TS 102 868-1 Table A.5/5 + */ + modulepar boolean PICS_EHORIZONLOCATIONSHARINGCONTAINER := true; + + /** + * @desc Does IUT support 'extensionsContainer' in CamParameters? + * @see ETSI TS 102 868-1 Table A.5/6 + */ + modulepar boolean PICS_VEHICLEMOVEMENTCONTROLCONTAINER := true; + /** * @desc Maximum time interval between CAM generations (in seconds). * Default value, as per base standard: 1.0s - * @see ETSI TS 102 868-1 Table A.5 + * @see ETSI TS 102 868-1 Table A.8 */ modulepar float PICS_T_GENCAMMAX := 1.000; /** * @desc Minimum time interval between CAM generations (in seconds). * Default value, as per base standard: 0.1s - * @see ETSI TS 102 868-1 Table A.5 + * @see ETSI TS 102 868-1 Table A.8 */ modulepar float PICS_T_GENCAMMIN := 0.100; @@ -95,19 +137,19 @@ module LibItsCam_Pics { * according to the requirements of the * Decentralized Congestion Control(DCC). * Default value, as per base standard: 0.1s - * @see ETSI TS 102 868-1 Table A.5 + * @see ETSI TS 102 868-1 Table A.8 */ modulepar float PICS_T_GENCAMDCC := 0.100; /** * @desc Support for CAM generation - * @see ETSI TS 102 868-1 Table A.3 + * @see ETSI TS 102 868-1 Table A.6 */ modulepar boolean PICS_CAM_GENERATION := true; /** * @desc Support for CAM reception - * @see ETSI TS 102 868-1 Table A.3 + * @see ETSI TS 102 868-1 Table A.6 */ modulepar boolean PICS_CAM_RECEPTION := true; diff --git a/lib/LibItsCam_Pixits.ttcn b/lib/LibItsCam_Pixits.ttcn index 59ccb581dcfb4695430a20a380a14450286b7dca..83ff1d1c5edc2073e6c28edb0ceabf467dbc2b05 100644 --- a/lib/LibItsCam_Pixits.ttcn +++ b/lib/LibItsCam_Pixits.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_Pixits.ttcn $ * $Id: LibItsCam_Pixits.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Module containing Pixits for CAM @@ -18,4 +18,14 @@ module LibItsCam_Pixits { // LibItsSecurity import from LibItsSecurity_TypesAndValues all; + /** + * @desc Multiply timer value by this control factor to increase it + */ + modulepar float PX_INC_TIMER_CONTROL_FACTOR := 1.10; + + /** + * @desc Multiply timer value by this control factor to decrease it + */ + modulepar float PX_DEC_TIMER_CONTROL_FACTOR := 0.9; + } // End of module LibItsSecurity_Pixits \ No newline at end of file diff --git a/lib/LibItsCam_Templates.ttcn b/lib/LibItsCam_Templates.ttcn index 8d5ed5ec5805debdc8f3b5e11534d3fab4396e0c..480845cdf14cf529bd34922bde17153065d0588e 100644 --- a/lib/LibItsCam_Templates.ttcn +++ b/lib/LibItsCam_Templates.ttcn @@ -1,878 +1,970 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_Templates.ttcn $ - * $Id: LibItsCam_Templates.ttcn 1318 2017-01-26 10:20:53Z filatov $ - * @desc Module containing base template definitions for CAM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - 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 - import from LibItsCommon_Functions all; - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_ASN1_NamedNumbers all; - - // LibItsCam - import from LibItsCam_TypesAndValues all; - - group camPrimitives { - - /** - * @desc Receive template for CAM Message (CamPort Primitive) - * @param p_camMsg Expected CAM Message - */ - template CamInd mw_camInd ( - in template (present) CAM p_camMsg - ) := { - msgIn := p_camMsg, - recvTime := ?, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - }; - - /** - * @desc Receive template for CAM Message (CamPort Primitive) - * @param p_camMsg Expected CAM Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template CamInd mw_camIndWithGnParameters ( - in template (present) CAM p_camMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_camInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - }; - - /** - * @desc Receive template for CA Message (DenmPort Primitive) - * @param p_caMsg The expected CA Message - * @param p_ssp SSP security parameter - * @param p_its_aid ITS-AID value - */ - template CamInd mw_camIndWithSecurityParameters( - template (present) CAM p_camMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := c_its_aid_CAM - ) modifies mw_camInd := { - ssp := p_ssp, - its_aid := p_its_aid - }; - - /** - * @desc Receive template for CAM Message (CamPort Primitive) - * @param p_camMsg Expected CAM Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template CamInd mw_camIndWithBtpParameters ( - in template (present) CAM p_camMsg, - in template UInt16 p_btpDestinationPort := *, - in template UInt16 p_btpInfo := * - ) modifies mw_camInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - /** - * @desc Send template for CAM Message (CamPort Primitive) - * @param p_camMsg CAM Message to be received - */ - template (value) CamReq m_camReq ( - in template (value) CAM p_camMsg - ) := { - msgOut := p_camMsg - }; - - group camUtPrimitives { - - /** - * @desc Initializes the CAM IUT. - */ - template (value) UtCamInitialize m_camInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Change the curvature - * @param p_offset The curvature value offset - */ - template (value) UtCamTrigger m_changeCurvature(CurvatureValue p_changeCurvature) := { - changeCurvature := p_changeCurvature - } - - /** - * @desc Change the speed - * @param p_offset The speed value offset - */ - template (value) UtCamTrigger m_changeSpeed(Int16 p_changeSpeed) := { - changeSpeed := p_changeSpeed - } - - /** - * @desc Set the acceleration control status - * @param p_status The status to set - */ - template (value) UtCamTrigger m_setAccelerationControlStatus(AccelerationControl p_status) := { - setAccelerationControlStatus := p_status - } - - /** - * @desc Set the exterior lights status - * @param p_status The status to set - */ - template (value) UtCamTrigger m_setExteriorLightsStatus(ExteriorLights p_status) := { - setExteriorLightsStatus := p_status - } - - /** - * @desc Change the heading - * @param p_offset The heading value offset - */ - template (value) UtCamTrigger m_changeHeading(HeadingValue p_changeHeading) := { - changeHeading := p_changeHeading - } - - /** - * @desc Set the drive direction - * @param p_driveDirection The drive direction - */ - template (value) UtCamTrigger m_setDriveDirection(DriveDirection p_driveDirection) := { - setDriveDirection := p_driveDirection - } - - /** - * @desc Change the yaw rate - * @param p_offset The yaw rate value offset - */ - template (value) UtCamTrigger m_changeYawRate(YawRateValue p_changeYawRate) := { - changeYawRate := p_changeYawRate - } - - /** - * @desc Set the vehicle role - * @param p_vehicleRole The vehicle role - */ - template (value) UtCamTrigger m_setVehicleRole(VehicleRole p_vehicleRole) := { - setVehicleRole := p_vehicleRole - } - - /** - * @desc Set the dangerous good description - * @param p_dangerousGoods The dangerous good description - */ - template (value) UtCamTrigger m_setDangerousGoods(DangerousGoodsBasic p_dangerousGoods) := { - setDangerousGoods := p_dangerousGoods - } - - } // 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 := LibItsCommon_ASN1_NamedNumbers.SemiAxisLength_oneCentimeter_, - semiMinorConfidence := LibItsCommon_ASN1_NamedNumbers.SemiAxisLength_oneCentimeter_, - semiMajorOrientation := LibItsCommon_ASN1_NamedNumbers.HeadingValue_wgs84North_ - }, - altitude := { - altitudeValue := LibItsCommon_ASN1_NamedNumbers.AltitudeValue_referenceEllipsoidSurface_, - altitudeConfidence := unavailable - } - } - - /** - * @desc Reference position for given latitude and longitude. - */ - template (present) ReferencePosition mw_refPositionWithDelta( - in ReferencePosition p_origRefPos, - in integer p_jitter := 100 - ) := { - latitude := (p_origRefPos.latitude - p_jitter..p_origRefPos.latitude + p_jitter), - longitude := (p_origRefPos.longitude - p_jitter..p_origRefPos.longitude + p_jitter), - positionConfidenceEllipse := p_origRefPos.positionConfidenceEllipse, - altitude := p_origRefPos.altitude - } - - } // end positionTemplates - - /** - * @desc Default Receive template for CAM PDU - */ - template (present) CAM mw_camMsg_any := { - header := { - protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, - messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_cam_, - stationID := ? - }, - cam := { - 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 := { - cam := { - camParameters := { - basicContainer := ?, - highFrequencyContainer := { - basicVehicleContainerHighFrequency := p_basicVehicleContainer - }, - 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 := *, - lanePosition := *, - steeringWheelAngle := *, - lateralAcceleration := *, - verticalAcceleration := *, - performanceClass := *, - cenDsrcTollingZone := * - } - - /** - * @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 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 := { - cam := { - camParameters := { - 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 := { - cam := { - camParameters := { - basicContainer := ?, - highFrequencyContainer := ?, - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := p_basicVehicleContainer - }, - 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 := { - cam := { - camParameters := { - 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 := { - cam := { - camParameters := { - specialVehicleContainer := p_specialVehicleContainer - } - } - } - - /** - * @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_HF_BV( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) := { - header := { - protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, - messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_cam_, - stationID := p_stationId - }, - cam := { - generationDeltaTime := p_generationTime, - camParameters := { - basicContainer := { - stationType := LibItsCommon_ASN1_NamedNumbers.StationType_passengerCar_, - referencePosition := p_referencePosition - }, - highFrequencyContainer := { - basicVehicleContainerHighFrequency := { - heading := { - headingValue := LibItsCommon_ASN1_NamedNumbers.HeadingValue_wgs84North_, //0 - headingConfidence := 10 - }, - speed := { - speedValue := 45, - speedConfidence := 5 - }, - driveDirection := forward, - vehicleLength := { - vehicleLengthValue := 50, - vehicleLengthConfidenceIndication := noTrailerPresent - }, - vehicleWidth := 21, - longitudinalAcceleration := { - longitudinalAccelerationValue := LibItsCommon_ASN1_NamedNumbers.LongitudinalAccelerationValue_unavailable_, - longitudinalAccelerationConfidence := LibItsCommon_ASN1_NamedNumbers.AccelerationConfidence_unavailable_ - }, - curvature := { - curvatureValue := LibItsCommon_ASN1_NamedNumbers.CurvatureValue_straight_, - curvatureConfidence := unavailable - }, - curvatureCalculationMode := yawRateUsed, - yawRate := { - yawRateValue := LibItsCommon_ASN1_NamedNumbers.YawRateValue_straight_, - yawRateConfidence := unavailable - }, - accelerationControl := omit, - lanePosition := omit, - steeringWheelAngle := omit, - lateralAcceleration := omit, - verticalAcceleration := omit, - performanceClass := omit, - cenDsrcTollingZone := omit - } - }, - 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 := { - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := { - vehicleRole := default_, - exteriorLights := LibItsCommon_ASN1_NamedNumbers.ExteriorLights_daytimeRunningLightsOn_, - pathHistory := {} - } - } - } - } - }; - - template (value) CAM m_camMsg_publicTransport( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) modifies m_camMsg_vehicle := { - cam := { - camParameters := { - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := { - vehicleRole := publicTransport - } - }, - specialVehicleContainer := { - publicTransportContainer := { - embarkationStatus := true, - ptActivation := omit - } - } - } - } - }; - - template (value) CAM m_camMsg_specialTransport( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) modifies m_camMsg_vehicle := { - cam := { - camParameters := { - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := { - vehicleRole := specialTransport - } - }, - specialVehicleContainer := { - specialTransportContainer := { - specialTransportType := '1000'B/* length(4)*/, // heavyLoad - lightBarSirenInUse := '11'B/* length(2)*/ // siren and lightBar - } - } - } - } - }; - } // 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); - - /** - * @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 := '???0*'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 := '????0*'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 := '?????0*'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 - - group camExteriorLightsTemplates { - - /** - * @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); - - } // end group exteriorLights - - 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); - - return v_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); - - return v_latitude; - } - - } // end camTemplateFunctions - -} // end LibItsCam_Templates +/** + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_Templates.ttcn $ + * $Id: LibItsCam_Templates.ttcn 1318 2017-01-26 10:20:53Z filatov $ + * @desc Module containing base template definitions for CAM + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module LibItsCam_Templates { + + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; + + // LibHelpers + import from LibHelpers_Functions all; + + // LibIts + import from ETSI_ITS_CDD language "ASN.1:1997" all; + import from CAM_PDU_Descriptions language "ASN.1:1997" all; + + // LibItsCommon + import from LibItsCommon_Functions all; + import from LibItsCommon_TypesAndValues all; + import from LibItsCommon_ASN1_NamedNumbers all; + + // LibItsCam + import from LibItsCam_TypesAndValues all; + + group camPrimitives { + + /** + * @desc Receive template for CAM Message (CamPort Primitive) + * @param p_camMsg Expected CAM Message + */ + template CamInd mw_camInd ( + template (present) CAM p_camMsg + ) := { + msgIn := p_camMsg, + recvTime := ?, + gnNextHeader := *, + gnHeaderType := *, + gnHeaderSubtype := *, + gnLifetime := *, + gnTrafficClass := *, + btpDestinationPort := *, + btpInfo := *, + ssp := *, + its_aid := * + }; + + /** + * @desc Receive template for CAM Message (CamPort Primitive) + * @param p_camMsg Expected CAM Message + * @param p_gnNextHeader GN next header value + * @param p_gnHeaderType GN header type value + * @param p_gnHeaderSubtype GN header subtype value + * @param p_gnLifetime GN packet lifetime value (ms) + * @param p_gnTrafficClass GN traffic class value + */ + template CamInd mw_camIndWithGnParameters ( + template (present) CAM p_camMsg, + in template UInt8 p_gnNextHeader := *, + in template UInt8 p_gnHeaderType := *, + in template UInt8 p_gnHeaderSubtype := *, + in template UInt32 p_gnLifetime := *, + in template UInt8 p_gnTrafficClass := * + ) modifies mw_camInd := { + gnNextHeader := p_gnNextHeader, + gnHeaderType := p_gnHeaderType, + gnHeaderSubtype := p_gnHeaderSubtype, + gnLifetime := p_gnLifetime, + gnTrafficClass := p_gnTrafficClass + }; + + /** + * @desc Receive template for CA Message (CamPort Primitive) + * @param p_caMsg The expected CA Message + * @param p_ssp SSP security parameter + * @param p_its_aid ITS-AID value + */ + template CamInd mw_camIndWithSecurityParameters( + template (present) CAM p_camMsg, + template Bit256 p_ssp := *, + template UInt32 p_its_aid := c_its_aid_CAM + ) modifies mw_camInd := { + ssp := p_ssp, + its_aid := p_its_aid + }; + + /** + * @desc Receive template for CAM Message (CamPort Primitive) + * @param p_camMsg Expected CAM Message + * @param p_btpDestinationPort BTP destination port value + * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) + */ + template CamInd mw_camIndWithBtpParameters ( + template (present) CAM p_camMsg, + in template UInt16 p_btpDestinationPort := *, + in template UInt16 p_btpInfo := * + ) modifies mw_camInd := { + btpDestinationPort := p_btpDestinationPort, + btpInfo := p_btpInfo + }; + + /** + * @desc Send template for CAM Message (CamPort Primitive) + * @param p_camMsg CAM Message to be received + */ + template (value) CamReq m_camReq ( + in template (value) CAM p_camMsg + ) := { + msgOut := p_camMsg + }; + + group camUtPrimitives { + + /** + * @desc Initializes the CAM IUT. + */ + template (value) UtCamInitialize m_camInitialize := { + hashedId8 := '0000000000000000'O + } + + /** + * @desc Change the curvature + * @param p_offset The curvature value offset + */ + template (value) UtCamTrigger m_changeCurvature(CurvatureValue p_changeCurvature) := { + changeCurvature := p_changeCurvature + } + + /** + * @desc Change the speed + * @param p_offset The speed value offset + */ + template (value) UtCamTrigger m_changeSpeed(Int16 p_changeSpeed) := { + changeSpeed := p_changeSpeed + } + + /** + * @desc Request for changing pseudonym with the specified certificate. + */ + template (value) UtCamChangePseudonym m_utCamChangePseudonym(in Oct8 p_hashedId8) := { + hashedId8 := p_hashedId8 + } + + /** + * @desc Set the acceleration control status + * @param p_status The status to set + */ + template (value) UtCamTrigger m_setAccelerationControlStatus(AccelerationControl p_status) := { + setAccelerationControlStatus := p_status + } + + /** + * @desc Set the exterior lights status + * @param p_status The status to set + */ + template (value) UtCamTrigger m_setExteriorLightsStatus(ExteriorLights p_status) := { + setExteriorLightsStatus := p_status + } + + /** + * @desc Change the heading + * @param p_offset The heading value offset + */ + template (value) UtCamTrigger m_changeHeading(HeadingValue p_changeHeading) := { + changeHeading := p_changeHeading + } + + /** + * @desc Set the drive direction + * @param p_driveDirection The drive direction + */ + template (value) UtCamTrigger m_setDriveDirection(DriveDirection p_driveDirection) := { + setDriveDirection := p_driveDirection + } + + /** + * @desc Change the yaw rate + * @param p_offset The yaw rate value offset + */ + template (value) UtCamTrigger m_changeYawRate(YawRateValue p_changeYawRate) := { + changeYawRate := p_changeYawRate + } + + /** + * @desc Set the vehicle role + * @param p_vehicleRole The vehicle role + */ + template (value) UtCamTrigger m_setVehicleRole(VehicleRole p_vehicleRole) := { + setVehicleRole := p_vehicleRole + } + + /** + * @desc Set the station type + * @param p_stationType The station type + */ + template (value) UtCamTrigger m_setStationType(StationType p_stationType) := { + setStationType := p_stationType + } + + /** + * @desc Set the dangerous good description + * @param p_dangerousGoods The dangerous good description + */ + template (value) UtCamTrigger m_setDangerousGoods(DangerousGoodsBasic p_dangerousGoods) := { + setDangerousGoods := p_dangerousGoods + } + + } // end utPrimitives + + } // end group Primitives + + group positionTemplates { + + /** + * @desc The test system reference position. + */ + template (value) ReferencePositionWithConfidence m_tsPosition := { + latitude := f_integer2Latitude(f_getTsLatitude()), + longitude := f_integer2Longitude(f_getTsLongitude()), + positionConfidenceEllipse := { + semiMajorAxisLength := LibItsCommon_ASN1_NamedNumbers.SemiAxisLength_oneCentimeter_, + semiMinorAxisLength := LibItsCommon_ASN1_NamedNumbers.SemiAxisLength_oneCentimeter_, + semiMajorAxisOrientation := LibItsCommon_ASN1_NamedNumbers.HeadingValue_wgs84North_ + }, + altitude := { + altitudeValue := LibItsCommon_ASN1_NamedNumbers.AltitudeValue_referenceEllipsoidSurface_, + altitudeConfidence := unavailable + } + } + + }// End of group positionTemplates + + /** + * @desc Default Receive template for CAM PDU + */ + template (present) CAM mw_camMsg_any := { + header := { + protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, + messageId := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageId_cam_, + stationId := ? + }, + cam := { + 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( + template(present) ReferencePositionWithConfidence p_referencePosition + ) modifies mw_camMsg_any := { + cam := { + camParameters := { + basicContainer := { + stationType := ?, + referencePosition := p_referencePosition + }, + highFrequencyContainer := ?, + lowFrequencyContainer := *, + specialVehicleContainer := *, + extensionContainers := * + } + } + } + + } // End of 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 := { + cam := { + camParameters := { + basicContainer := ?, + highFrequencyContainer := { + basicVehicleContainerHighFrequency := p_basicVehicleContainer + }, + lowFrequencyContainer := *, + specialVehicleContainer := *, + extensionContainers := * + } + } + } + + /** + * @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 := *, + lanePosition := *, + steeringWheelAngle := *, + lateralAcceleration := *, + verticalAcceleration := *, + performanceClass := *, + cenDsrcTollingZone := * + } + + /** + * @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 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 of 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 := { + cam := { + camParameters := { + basicContainer := ?, + highFrequencyContainer := ?, + lowFrequencyContainer := ?, + specialVehicleContainer := *, + extensionContainers := * + } + } + } + + /** + * @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 := { + cam := { + camParameters := { + basicContainer := ?, + highFrequencyContainer := ?, + lowFrequencyContainer := { + basicVehicleContainerLowFrequency := p_basicVehicleContainer + }, + specialVehicleContainer := *, + extensionContainers := * + } + } + } + + /** + * @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( + template (present) ExteriorLights p_extLights + ) modifies mw_LF_BV_any := + { + exteriorLights := p_extLights + } + + } // End of 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 := { + cam := { + camParameters := { + basicContainer := ?, + highFrequencyContainer := ?, + lowFrequencyContainer := *, + specialVehicleContainer := ?, + extensionContainers := * + } + } + } + + /** + * @desc Receive template for CAM PDU including optional specialVehicleContainer + * @param p_specialVehicleContainer The expected specialVehicleContainer + */ + template (present) CAM mw_camMsg_SVC( + template (present) SpecialVehicleContainer p_specialVehicleContainer + ) modifies mw_camMsg_SVC_any := { + cam := { + camParameters := { + specialVehicleContainer := p_specialVehicleContainer + } + } + } + + template (present) CAM mw_camMsg_ext_two_wheelers_container_any( + template (present) TwoWheelerContainer p_twoWheelerContainer := ? + ) modifies mw_camMsg_SVC_any := { + cam := { + camParameters := { + extensionContainers := + { + *, + { + containerId := twoWheelerContainer, + containerData := { TwoWheelerContainer := p_twoWheelerContainer } + }, + * + } + } + } + } + + template (present) CAM mw_camMsg_ext_location_sharing_container_any( + template (present) EHorizonLocationSharingContainer p_eHorizonLocationSharingContainer := ? + ) modifies mw_camMsg_SVC_any := { + cam := { + camParameters := { + extensionContainers := + { + *, + { + containerId := eHorizonLocationSharingContainer, + containerData := { EHorizonLocationSharingContainer := p_eHorizonLocationSharingContainer } + }, + * + } + } + } + } + + template (present) CAM mw_camMsg_ext_low_frequency_container_any( + template (present) VeryLowFrequencyContainer p_veryLowFrequencyContainer := ? + ) modifies mw_camMsg_any := { + cam := { + camParameters := { + basicContainer := ?, + highFrequencyContainer := ?, + extensionContainers := + { + *, + { + containerId := veryLowFrequencyContainer, + containerData := { VeryLowFrequencyContainer := p_veryLowFrequencyContainer } + }, + * + } + } + } + } + + /** + * @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_HF_BV( + StationId p_stationId, + GenerationDeltaTime p_generationTime, + template (value) ReferencePositionWithConfidence p_referencePosition + ) := { + header := { + protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, + messageId := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageId_cam_, + stationId := p_stationId + }, + cam := { + generationDeltaTime := p_generationTime, + camParameters := { + basicContainer := { + stationType := LibItsCommon_ASN1_NamedNumbers.StationType_passengerCar_, + referencePosition := p_referencePosition + }, + highFrequencyContainer := { + basicVehicleContainerHighFrequency := { + heading := { + headingValue := LibItsCommon_ASN1_NamedNumbers.HeadingValue_wgs84North_, //0 + headingConfidence := 10 + }, + speed := { + speedValue := 45, + speedConfidence := 5 + }, + driveDirection := forward, + vehicleLength := { + vehicleLengthValue := 50, + vehicleLengthConfidenceIndication := noTrailerPresent + }, + vehicleWidth := 21, + longitudinalAcceleration := { + value_ := LibItsCommon_ASN1_NamedNumbers.LongitudinalAccelerationValue_unavailable_, + confidence := LibItsCommon_ASN1_NamedNumbers.AccelerationConfidence_unavailable_ + }, + curvature := { + curvatureValue := LibItsCommon_ASN1_NamedNumbers.CurvatureValue_straight_, + curvatureConfidence := unavailable + }, + curvatureCalculationMode := yawRateUsed, + yawRate := { + yawRateValue := LibItsCommon_ASN1_NamedNumbers.YawRateValue_straight_, + yawRateConfidence := unavailable + }, + accelerationControl := omit, + lanePosition := omit, + steeringWheelAngle := omit, + lateralAcceleration := omit, + verticalAcceleration := omit, + performanceClass := omit, + cenDsrcTollingZone := omit + } + }, + lowFrequencyContainer := omit, + specialVehicleContainer := omit, + extensionContainers := 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) ReferencePositionWithConfidence p_referencePosition + ) modifies m_camMsg_vehicle_HF_BV := { + cam := { + camParameters := { + lowFrequencyContainer := { + basicVehicleContainerLowFrequency := { + vehicleRole := default_, + exteriorLights := LibItsCommon_ASN1_NamedNumbers.ExteriorLights_daytimeRunningLightsOn_, + pathHistory := {} + } + } + } + } + }; + + template (value) CAM m_camMsg_publicTransport( + StationId p_stationId, + GenerationDeltaTime p_generationTime, + template (value) ReferencePositionWithConfidence p_referencePosition + ) modifies m_camMsg_vehicle := { + cam := { + camParameters := { + lowFrequencyContainer := { + basicVehicleContainerLowFrequency := { + vehicleRole := publicTransport + } + }, + specialVehicleContainer := { + publicTransportContainer := { + embarkationStatus := true, + ptActivation := omit + } + } + } + } + }; + + template (value) CAM m_camMsg_specialTransport( + StationId p_stationId, + GenerationDeltaTime p_generationTime, + template (value) ReferencePositionWithConfidence p_referencePosition + ) modifies m_camMsg_vehicle := { + cam := { + camParameters := { + lowFrequencyContainer := { + basicVehicleContainerLowFrequency := { + vehicleRole := specialTransport + } + }, + specialVehicleContainer := { + specialTransportContainer := { + specialTransportType := '1000'B/* length(4)*/, // heavyLoad + lightBarSirenInUse := '11'B/* length(2)*/ // siren and lightBar + } + } + } + } + }; + }// End of group camAnyVehicle + + group emergencyContainer { + + template (omit) EmergencyContainer m_emergencyContainer( + in template (value) LightBarSirenInUse p_lightBarSirenInUse := '00'B, + in template (omit) CauseCodeV2 p_incidentIndication := omit, + in template (omit) EmergencyPriority p_emergencyPriority := omit + ) := { + lightBarSirenInUse := p_lightBarSirenInUse, + incidentIndication := p_incidentIndication, + emergencyPriority := p_emergencyPriority + } // End of template m_emergencyContainer + + }// End of group emergencyContainer + + group specialTransportContainer { + + template (omit) SpecialTransportContainer m_specialTransportContainer( + in template (value) SpecialTransportType p_specialTransportType := '0010'B, + in template (omit) LightBarSirenInUse p_lightBarSirenInUse := '00'B + ) := { + specialTransportType := p_specialTransportType, + lightBarSirenInUse := p_lightBarSirenInUse + } // End of template m_specialTransportContainer + + }// End of group specialTransportContainer + + 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); + + /** + * @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 := '???0*'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 := '????0*'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 := '?????0*'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 of group camAccelerationControlTemplates + + group camExteriorLightsTemplates { + + /** + * @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); + + } // End of group exteriorLights + + 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); + + return v_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); + + return v_latitude; + } + + }// End of group camTemplateFunctions + +}// End of group LibItsCam_Templates diff --git a/lib/LibItsCam_TypesAndValues.ttcn b/lib/LibItsCam_TypesAndValues.ttcn index dd0d5b03b4864a718f7f1107009777b2c562029f..a82e76d72a96f5709ad5a4d2d9f9ab778031ead7 100644 --- a/lib/LibItsCam_TypesAndValues.ttcn +++ b/lib/LibItsCam_TypesAndValues.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_TypesAndValues.ttcn $ * $Id: LibItsCam_TypesAndValues.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Module containing types and values for CAM Protocol @@ -16,26 +16,19 @@ module LibItsCam_TypesAndValues { import from LibCommon_DataStrings all; // LibIts - import from ITS_Container language "ASN.1:1997" all; + import from ETSI_ITS_CDD 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; group camValues { const float c_lowFrequencyGenerationTime := 0.5; //500 ms const float c_specialVehicleGenerationTime := 0.5; //500 ms + const float c_veryLowFrequencyGenerationTime := 10.0; //10 s const AccelerationControl c_accCtrlIdle := '0000000'B; const ExteriorLights c_elAllLightsOff := '00000000'B; - - const VehicleRole c_vehicleRole_publicTransport := publicTransport; - const VehicleRole c_vehicleRole_specialTransport := specialTransport; - const VehicleRole c_vehicleRole_dangerousGoods := dangerousGoods; - const VehicleRole c_vehicleRole_roadWork := roadWork; - const VehicleRole c_vehicleRole_rescue := rescue; - const VehicleRole c_vehicleRole_emergency := emergency; - const VehicleRole c_vehicleRole_safetyCar := safetyCar; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives1 := explosives1; const DangerousGoodsBasic c_dangerousGoodsBasic_explosives2 := explosives2; @@ -64,6 +57,19 @@ module LibItsCam_TypesAndValues { const charstring PX_CERT_IUT_CAM_02 := "CERT_IUT_CAM_BO_02_AT"; const charstring PX_CERT_IUT_CAM_03 := "CERT_IUT_CAM_BO_03_AT"; + const charstring PX_CERT_IUT_CAM_04 := "CERT_IUT_CAM_BO_04_AT"; + const charstring PX_CERT_IUT_CAM_05 := "CERT_IUT_CAM_BO_05_AT"; + const charstring PX_CERT_IUT_CAM_06 := "CERT_IUT_CAM_BO_06_AT"; + const charstring PX_CERT_IUT_CAM_07 := "CERT_IUT_CAM_BO_07_AT"; + const charstring PX_CERT_IUT_CAM_08 := "CERT_IUT_CAM_BO_08_AT"; + const charstring PX_CERT_IUT_CAM_09 := "CERT_IUT_CAM_BO_09_AT"; + const charstring PX_CERT_IUT_CAM_10 := "CERT_IUT_CAM_BO_10_AT"; + const charstring PX_CERT_IUT_CAM_11 := "CERT_IUT_CAM_BO_11_AT"; + const charstring PX_CERT_IUT_CAM_12 := "CERT_IUT_CAM_BO_12_AT"; + const charstring PX_CERT_IUT_CAM_13 := "CERT_IUT_CAM_BO_13_AT"; + const charstring PX_CERT_IUT_CAM_14 := "CERT_IUT_CAM_BO_14_AT"; + const charstring PX_CERT_IUT_CAM_15 := "CERT_IUT_CAM_BO_15_AT"; + const charstring PX_CERT_IUT_CAM_16 := "CERT_IUT_CAM_BO_16_AT"; } @@ -89,25 +95,35 @@ module LibItsCam_TypesAndValues { */ type union UtCamResults { boolean utCamInitializeResult, - boolean utCamTriggerResult, - boolean utCamChangePositionResult, - boolean utActivatePositionTimeResult, - boolean utDeactivatePositionTimeResult - } with { + boolean utCamTriggerResult, + boolean utCamChangePositionResult, + boolean utCamChangePseudonymResult, + boolean utActivatePositionTimeResult, + boolean utDeactivatePositionTimeResult + } with { variant "" - } // End of type UtCamResults + } // End of type UtCamResults - /** - * @desc Upper Tester message to change the position of IUT. Values a relatives - */ + /** + * @desc Upper Tester message to change the position of IUT. Values a relatives + */ type record UtCamChangePosition { Int32 latitude, Int32 longitude, Int32 elevation - } with { + } with { variant "FIELDORDER(msb)" - } + } + /** + * @desc Send template for Upper Tester event changePseudonym + */ + type record UtCamChangePseudonym { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } + /** * @desc * @member changeCurvature Changes the curvature. diff --git a/lib/asn1 b/lib/asn1 index 1f4b61fb64aacbe173cd6b80f2c4518507fef5c8..fb39a9aa555303183fa0159bbc2d9f217e6033b3 160000 --- a/lib/asn1 +++ b/lib/asn1 @@ -1 +1 @@ -Subproject commit 1f4b61fb64aacbe173cd6b80f2c4518507fef5c8 +Subproject commit fb39a9aa555303183fa0159bbc2d9f217e6033b3 diff --git a/lib/module.mk b/lib/module.mk index eeb8f7a57284f77acc5dd076c3e1bd761d7e95ec..895e4a5f88893c1fa91361460b97ead80c9d2940 100644 --- a/lib/module.mk +++ b/lib/module.mk @@ -4,8 +4,6 @@ sources := \ LibItsCam_Pixits.ttcn \ LibItsCam_Templates.ttcn \ LibItsCam_TypesAndValues.ttcn \ - asn1/CAM_PDU_Descriptions.asn -ifeq (,$(ITS_CONTAINER)) - ITS_CONTAINER := defined - sources += asn1/cdd/ITS_Container.asn -endif + + +modules := asn1 diff --git a/lib_system/LibItsCam_Functions.ttcn b/lib_system/LibItsCam_Functions.ttcn index 204b03569c24cfdc8caa7c2a20d5d9cdfdb7e2ad..f55a4d2e4f53ded06e83d2c2a015f7b5780f7fa8 100644 --- a/lib_system/LibItsCam_Functions.ttcn +++ b/lib_system/LibItsCam_Functions.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_Functions.ttcn $ * $Id: LibItsCam_Functions.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Module containing common functions for ITS CAM @@ -17,7 +17,7 @@ module LibItsCam_Functions { import from LibCommon_Sync all; // LibIts - import from ITS_Container language "ASN.1:1997" all; + import from ETSI_ITS_CDD language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_Pixits all; @@ -122,6 +122,41 @@ module LibItsCam_Functions { } + /** + * @desc Requests to change the IUT with a new pseudonym + * @param p_change The change to trigger. + */ + function f_utCamChangePseudonym ( template (value) UtCamChangePseudonym p_change ) runs on ItsCam { + + //deactivate gnPort default alts + vc_camDefaultActive := false; + + utPort.send(p_change); + tc_wait.start; + alt { + [] utPort.receive(UtCamResults: { utCamChangePseudonymResult := true}) { + tc_wait.stop; + log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); + } + [] utPort.receive(UtCamResults: { utCamChangePseudonymResult := false}) { + tc_wait.stop; + log("*** " & testcasename() & ": INFO: IUT pseudonym unchanged ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] a_utDefault() { + //empty on purpose + } + [] tc_wait.timeout { + log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + } + + //activate camPort default alts + vc_camDefaultActive := true; + + } + } // End of group utFunctions group adapterControl { diff --git a/lib_system/LibItsCam_TestSystem.ttcn b/lib_system/LibItsCam_TestSystem.ttcn index 9fbfd93a40a4662a17a1d7381d3bcad73f15ab4b..e9ee29da22a335799f8ec65290ffe28336d6519a 100644 --- a/lib_system/LibItsCam_TestSystem.ttcn +++ b/lib_system/LibItsCam_TestSystem.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / TTF T036 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/CAM/LibItsCam_TestSystem.ttcn $ * $Id: LibItsCam_TestSystem.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Test System module for ITS CAM @@ -12,14 +12,11 @@ module LibItsCam_TestSystem language "TTCN-3:2010 Real Time and Performance Testing" { // LibCommon -// import from LibCommon_Time {modulepar all}; -// import from LibCommon_Sync all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from CAM_PDU_Descriptions language "ASN.1:1997" all; -// import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TestSystem all; @@ -45,7 +42,7 @@ module LibItsCam_TestSystem language "TTCN-3:2010 Real Time and Performance Test */ type port UpperTesterPort message { out - UtCamInitialize, UtCamTrigger, UtCamChangePosition, UtActivatePositionTime, UtDeactivatePositionTime; + UtCamInitialize, UtCamTrigger, UtCamChangePosition, UtCamChangePseudonym, UtActivatePositionTime, UtDeactivatePositionTime; in UtCamResults, UtCamEventInd; } // end UpperTesterPort diff --git a/module.mk b/module.mk index b1e4fa51a4bda886e0588a6715018f3044e2f640..286e7e46b05e39e01e5e28316ab128a6c4f7b834 100644 --- a/module.mk +++ b/module.mk @@ -1,12 +1,15 @@ suite := AtsCAM +pdu := CAM sources := ItsCam_TestCases.ttcn \ ItsCam_TestControl.ttcn \ ItsCam_TpFunctions.ttcn \ -modules := \ - lib \ +modules := lib \ lib_system \ + ../../titan-test-system-framework/ttcn/LibHelpers \ + ../../titan-test-system-framework/ttcn/LibSecurity \ + ../../titan-test-system-framework/ttcn/LibXsd \ ../LibCommon \ ../LibIts \ ../AtsGeoNetworking/lib \ @@ -23,17 +26,25 @@ modules := \ /ccsrc/Ports/LibIts_ports/IPv6oGN_ports \ /ccsrc/Ports/LibIts_ports/BTP_ports \ /ccsrc/EncDec \ - /ccsrc/Framework \ + /titan-test-system-framework/ccsrc/Framework \ + /titan-test-system-framework/ccsrc/loggers \ + /titan-test-system-framework/ccsrc/Protocols/ETH \ + /titan-test-system-framework/ccsrc/Protocols/Tcp \ + /titan-test-system-framework/ccsrc/Protocols/Pcap \ + /titan-test-system-framework/ccsrc/Protocols/Xml \ + /titan-test-system-framework/ccsrc/Helpers \ + /titan-test-system-framework/ccsrc/security \ /ccsrc/Externals \ - /ccsrc/loggers \ /ccsrc/geospacial \ /ccsrc/Asn1c \ + /ccsrc/framework \ /ccsrc/Protocols/CAM \ /ccsrc/Protocols/CAM_layers \ /ccsrc/Protocols/GeoNetworking \ /ccsrc/Protocols/BTP \ - /ccsrc/Protocols/ETH \ - /ccsrc/Protocols/Pcap \ + /ccsrc/Protocols/BTP_layers \ + /ccsrc/Protocols/LTE \ + /ccsrc/Protocols/Qualcomm \ /ccsrc/Protocols/UpperTester \ /ccsrc/Protocols/Security \ ../modules/titan.TestPorts.Common_Components.Abstract_Socket \