pax_global_header 0000666 0000000 0000000 00000000064 14553501104 0014510 g ustar 00root root 0000000 0000000 52 comment=d5d51114f77a3394c4a1dc3cff216d8c3200daa0 ats_ts103191-3-devel/ 0000775 0000000 0000000 00000000000 14553501104 0014265 5 ustar 00root root 0000000 0000000 ats_ts103191-3-devel/.gitmodules 0000664 0000000 0000000 00000000146 14553501104 0016443 0 ustar 00root root 0000000 0000000 [submodule "lib/asn1"] path = lib/asn1 url = https://forge.etsi.org/rep/ITS/asn1/is_ts103301.git ats_ts103191-3-devel/ItsIvim_TestCases.ttcn 0000664 0000000 0000000 00000437670 14553501104 0020542 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsIVIM/ItsIvim_TestCases.ttcn $ * $Id: ItsIvim_TestCases.ttcn 2648 2017-01-03 09:02:30Z garciay $ * @desc Testcases for IVI Service * @reference ETSI TS 103 301 v1.3.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 ItsIvim_TestCases { // LibIts import from LibItsIvim_TestSystem all; // Ats Its import from ItsIvim_TpFunctions all; // 5.2.1 group iviMessageTransmission { group iviMessageFormat { /** * @desc Check that protocolVersion is set to 1 and messageID is set to 6. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * a IVIM is generated * } * then { * the IUT sends a valid IVIM * containing ITS PDU header * containing protocolVersion * indicating value 1 * and containing messageID * indicating value 6 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1, clause 7.3 */ testcase TC_IS_IVI_GEN_MSGF_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_MSGF_BV_01(); } // End of TC_IS_IVI_GEN_MSGF_BV_01 } // End of group iviMessageFormat group iviLoactionContainer{ /** * @desc Check that all Application Containers references existing items in one or more Location Containers *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing any element of other types than GeographicLocationContainer * containing any reference to zones (Z_ID) * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeographicLocationContainer * containing parts * containing elements of type GlcPart * containing zoneId * indicating Z_ID * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_LOC_BV_01 * @reference CEN ISO TS/19321 [5], clauses 5.1.1, 6.2.2.2 */ testcase TC_IS_IVI_GEN_LOC_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_LOC_BV_01(); } // End of TC_IS_IVI_GEN_LOC_BV_01 /** * @desc Check that application container information of the same type does not refer to overlapping RZs. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing an element of any other type (T) than GeographicLocationContainer * containing relevanceZoneIds * indicating reference to zone (Z_ID_1) * and containing another element of type T * containing relevanceZoneIds * indicating reference to zone (Z_ID_2) * } * then { * the IUT sends an IVIM * containing ivi * containing optional * containing element of type GeographicLocationContainer * containing parts * containing elements of type GlcPart (ZONE_1) * containing zoneId * indicating Z_ID_1 * and containing element of type GeographicLocationContainer * containing parts * containing elements of type GlcPart (ZONE_2) * containing zoneId * indicating Z_ID_2 * and ZONE_1 does not overlap ZONE_2 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_LOC_BV_02 * @reference CEN ISO TS/19321 [5], clause 5.1.1 */ testcase TC_IS_IVI_GEN_LOC_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_LOC_BV_02(); } // End of TC_IS_IVI_GEN_LOC_BV_02 /** * @desc Check that all definitions of zones that are based on the same Reference Position, be it that they * are connected or not interconnected, should be included in the same Geographic Location Container. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing an element of any other type (T) than GeographicLocationContainer * containing relevanceZoneIds * indicating reference to zone (Z_ID_1) * and containing another element of type T * containing relevanceZoneIds * indicating reference to zone (Z_ID_2) * } * then { * the IUT sends an IVIM * containing ivi * containing optional * containing element of type GeographicLocationContainer * containing parts * containing elements of type GlcPart (ZONE_1) * containing zoneId * indicating Z_ID_1 * and containing element of type GeographicLocationContainer * containing parts * containing elements of type GlcPart (ZONE_2) * containing zoneId * indicating Z_ID_2 * and ZONE_1 does not overlap ZONE_2 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_LOC_BV_03 * @reference CEN ISO TS/19321 [5], clause 6.2.2.2 */ testcase TC_IS_IVI_GEN_LOC_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_LOC_BV_03(); } // End of TC_IS_IVI_GEN_LOC_BV_03 /** * @desc Check that the IUT includes the component laneNumber for each zone if the zone definition is restricted to specific lane(s). *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * the IUT is requested to generate an IVIM * containing zone definitions (ZONE_1) * restricted to specific lane (LANE_1) * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeographicLocationContainer * containing parts * containing elements of type GlcPart * containing zone * indicating ZONE_1 * and containing laneNumber * indicating LANE_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_LOC_BV_04 * @reference CEN ISO TS/19321 [5], clause 6.2.2.2 */ testcase TC_IS_IVI_GEN_LOC_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_LOC_BV_04(); } // End of TC_IS_IVI_GEN_LOC_BV_04 /** * @desc Check that If the zone definition applies to the entire carriageway (all lanes), the * component laneNumber shall be absent. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * the IUT is requested to generate an IVIM * containing zone definitions (ZONE_1) * restricted to specific lane (LANE_1) * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeographicLocationContainer * containing parts * containing elements of type GlcPart * containing zone * indicating ZONE_1 * and containing laneNumber * indicating LANE_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_LOC_BV_05 * @reference CEN ISO TS/19321 [5], clause 6.2.2.2 */ testcase TC_IS_IVI_GEN_LOC_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_LOC_BV_05(); } // End of TC_IS_IVI_GEN_LOC_BV_05 /** * @desc Check that IUT includes, for each zone, one or more of the following optional components to define the zone: * the component zoneExtension and/or the component zoneHeading or, alternatively, the component zone. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing zone definitions * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeographicLocationContainer * containing parts * containing elements of type GlcPart * containing zoneExtension * or containing zoneHeading * or containing zone * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_LOC_BV_06 * @reference CEN ISO TS/19321 [5], clause 6.2.2.2 */ testcase TC_IS_IVI_GEN_LOC_BV_06() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_LOC_BV_06(); } // End of TC_IS_IVI_GEN_LOC_BV_06 } // End of group iviLoactionContainer group iviManagemantContainer{ /** * @desc Check that management container contains a country code according to ISO 3166-1. Numbers shall be assigned on national basis. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing serviceProviderId * containing countryCode * indicating valid country code according to ISO 3166-1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_MANC_BV_01 * @reference CEN ISO TS/19321 [5], clause 6.1.1 */ testcase TC_IS_IVI_GEN_MANC_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_MANC_BV_01(); } // End of TC_IS_IVI_GEN_MANC_BV_01 /** * @desc Check that an IUT can split an IVI Structure to multiple messages if it exceeds the maximum PDU size. * Check that the IVIM contains the component connectedIviStructures to connect the IVI Structure to other * IVI Structures provided by the same Service Provider that have been transmitted previously or by other ITS-S. *
* Pics Selection: PICS_IVIM_GENERATION, PICS_IVIM_FRAGMENTATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * exceeding the maximum PDU size * } * then { * the IUT sends the first IVIM (IVI_1) * containing ivi * containing mandatory * containing iviIdentificationNumber (IVI_1_ID) * and containing connectedIviStructures * containing elements of type IviIdentificationNumber * indicating ids of other IVI structures: IVI_2_ID, …, IVI_N_ID * and the IUT sends subsequent IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber (IVI_N) * and containing connectedIviStructures * containing elements of type IviIdentificationNumber * indicating ids of other IVI structures: IVI_1_ID, … * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_MANC_BV_02 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_GEN_MANC_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_MANC_BV_02(); } // End of TC_IS_IVI_GEN_MANC_BV_02 } // End of group iviManagemantContainer group iviEventGeneration { /** * @desc Check that IVI Service generates a new IVIM on reception of a valid AppIVIM_Trigger request *
* PICS Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_Trigger request from the application layer * } * then { * the IUT sends a valid IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVGN_BV_01 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.1 */ testcase TC_IS_IVI_GEN_EVGN_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVGN_BV_01(); } // End of TC_IS_IVI_GEN_EVGN_BV_01 /** * @desc Check that a new iviIdentificationNumber value is assigned for each newly generated IVIM *
* PICS Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new IVIM * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating an unused value * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVGN_BV_02 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.1 */ testcase TC_IS_IVI_GEN_EVGN_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVGN_BV_02(); } // End of TC_IS_IVI_GEN_EVGN_BV_02 /** * @desc Check that iviIdentificationNumber value is set to a next unused value each time an IVIM is detected *
* PICS Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * and the IUT having generated its last DENM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVI_ID_1 * and no active IviID being associated with iviIdentificationNumber IVI_ID_1 + 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new IVIM * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVI_ID_1 + 1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVGN_BV_03 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.1 */ testcase TC_IS_IVI_GEN_EVGN_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVGN_BV_03(); } // End of TC_IS_IVI_GEN_EVGN_BV_03 /** * @desc Check that a new generated IVIM contains an iviStatus set to 'new' *
* PICS Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new IVIM * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating 'new' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVGN_BV_04 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVGN_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVGN_BV_04(); } // End of TC_IS_IVI_GEN_EVGN_BV_04 /** * @desc Check that the timeStamp is set to the current time when generating a new IVM *
* PICS Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new IVIM * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing timeStamp * indicating CLT * and containing iviStatus * indicating 'new' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVGN_BV_05@reference * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVGN_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVGN_BV_05(); } // End of TC_IS_IVI_GEN_EVGN_BV_05 } // End of group iviEventGeneration group iviEventUpdate { /** * @desc Check that an updated IVIM contains an iviStatus set to 'update' *
* PICS Selection: PICS_IVIM_GENERATION AND PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated an event * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * containing iviStatus * indicating 'new' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_update request associated with IVIM_ID_1 * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating 'update' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVUP_BV_01 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVUP_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVUP_BV_01(); } // End of TC_IS_IVI_GEN_EVUP_BV_01 /** * @desc Check that an update can change the validity time to the IVIM - validTo information field *
* PICS Selection: PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated an event * containing ivi * containing mandatory * not containing validTo * and containing iviStatus * indicating 'update' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_update indicating a validTo value VT_1 * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing validTo * indicating VT_1 * and containing iviStatus * indicating 'update' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVUP_BV_02 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVUP_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVUP_BV_02(); } // End of TC_IS_IVI_GEN_EVUP_BV_02 /** * @desc Check that an update can change the validity time to the IVIM - validFrom information field *
* PICS Selection: PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated an event * containing ivi * containing mandatory * containing validFrom * indicating VT_1 * and containing iviStatus * indicating 'update' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_update indicating a validFrom value VF_1 * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing validFROM * indicating VT_2 * and containing iviStatus * indicating 'update' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVUP_BV_03 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVUP_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVUP_BV_03(); } // End of TC_IS_IVI_GEN_EVUP_BV_03 /** * @desc Check that the timeStamp is set to the current time when generating an update with some change of information content *
* PICS Selection: PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated an event * containing ivi * containing mandatory * containing timeStamp * and containing iviStatus * indicating 'new' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_update * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing timeStamp * indicating CLT * and containing iviStatus * indicating 'update' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVUP_BV_04 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVUP_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVUP_BV_04(); } // End of TC_IS_IVI_GEN_EVUP_BV_04 /** * @desc Check that the iviIdentificationNumber remains unchanged IVIM is updated *
* PICS Selection: PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated an event * containing ivi * containing mandatory * containing iviIdentificationNumber * inicating IVIM_ID_1 * and containing iviStatus * indicating 'new' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_update request associated with IVIM_ID_1 * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * and containing iviStatus * indicating 'update' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVUP_BV_05 * @reference ETSI TS 103 301 v1.3.1, clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVUP_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVUP_BV_05(); } // End of TC_IS_IVI_GEN_EVUP_BV_05 } // End of group iviEventUpdate group iviGeneralApplicationContainer{ /** * @desc The IUT shall, at minimum, include the identifier(s) of a Relevance Zone in the component * relevanceZoneIds or of an ITS Regulatory Region in the component its-Rrid. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing General Application Containers * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeneralIviContainer * containing elements of type GicPart * containing relevanceZoneIds * or containing its-Rrid * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GENAPP_BV_01 * @reference CEN ISO TS/19321 [5], clause 6.3.2.2 */ testcase TC_IS_IVI_GEN_GENAPP_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GENAPP_BV_01(); } // End of TC_IS_IVI_GEN_GENAPP_BV_01 /** * @desc Check that all zone IDs in the General Application Container references existing items in * the Location Container of the same IVIM Structure *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing one or more General Application Containers * containing elements of types GicPart * optionally containing relevanceZoneIds * containing RZ_IDs * and optionally containing detectionZoneIds * containing DZ_IDs * and optionally containing driverAwarenessZoneIds * containing DAZ_IDs * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeneralIviContainer * containing all zones referenced from RZ_IDs, DZ_IDs and DAZ_IDs * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GENAPP_BV_02 * @reference CEN ISO TS/19321 [5], clause 6.3.2.2 */ testcase TC_IS_IVI_GEN_GENAPP_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GENAPP_BV_02(); } // End of TC_IS_IVI_GEN_GENAPP_BV_02 /** * @desc The IUT shall include the component direction to describe the direction of relevance * within a Relevance Zone representing a road segment. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing General Application Containers * containing relevanceZoneIds * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeneralIviContainer * containing elements of type GicPart * containing relevanceZoneIds * and containing direction * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GENAPP_BV_03 * @reference CEN ISO TS/19321 [5], clause 6.3.2.2 */ testcase TC_IS_IVI_GEN_GENAPP_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GENAPP_BV_03(); } // End of TC_IS_IVI_GEN_GENAPP_BV_03 /** * @desc The IUT shall include at least one element in the roadSignCodes container. * The IUT shall include at least one element in the component roadSignCode to specify * which road signs are applicable for a Relevance Zone. A sending ITS-S should select * the road sign from a catalogue which is known to be supported by a receiving ITS-S. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing General Application Containers * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type GeneralIviContainer * containing elements of type GicPart * containing roadSignCodes * containing at least 1 element of type RSCode * containing code * containing COMPONENT_X * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GENAPP_BV_01 * @reference CEN ISO TS/19321 [5], clause 6.3.2.2 */ testcase TC_IS_IVI_GEN_GENAPP_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GENAPP_BV_04(); } // End of TC_IS_IVI_GEN_GENAPP_BV_04 /** * @desc Check that all layoutID of the General Application Containers references existing layouts * in the Layout Containers of the same IVIM Structure *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing elements of type GeneralIviContainer * containing element of type GicPart * containing layoutId (LID) * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type LayoutContainer * containing layoutId * indicating LID * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GENAPP_BV_06 * @reference CEN ISO TS/19321 [5], clause 6.3.4.2 */ testcase TC_IS_IVI_GEN_GENAPP_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GENAPP_BV_05(); } // End of TC_IS_IVI_GEN_GENAPP_BV_05 } // End of group iviGeneralApplicationContainer group iviRoadConfigurationContainer{ /** * @desc Check that all zone IDs in the Road Configuration Container references existing items in the Location Container of the same IVIM Structure. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing elements of types RoadConfigurationContainer * containing elements of types RccPart * containing relevanceZoneIds * containing RZ_IDs * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of types GeographicLocationContainer * containing all zones referenced from RZ_IDs * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_RCC_BV_01 * @reference CEN ISO TS/19321 [5], clause 6.3.3.2 */ testcase TC_IS_IVI_GEN_RCC_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_RCC_BV_01(); } // End of TC_IS_IVI_GEN_RCC_BV_01 /** * @desc Check that all Parts that relate to the same Location Container are included in the same Road Configuration Container. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing multiple RoadConfigurationContainer * and containing multiple GeographicLocationContainer * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of types RoadConfigurationContainer * containing elements of types RccPart * containing relevanceZoneIds * referencing the GeographicLocationContainer (GLC) * and not containing other elements of types RoadConfigurationContainer * containing elements of types RccPart * containing relevanceZoneIds * referencing the same GeographicLocationContainer (GLC) * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_RCC_BV_02 * @reference CEN ISO TS/19321 [5], clause 6.3.3.2 */ testcase TC_IS_IVI_GEN_RCC_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_RCC_BV_02(); } // End of TC_IS_IVI_GEN_RCC_BV_02 /** * @desc Check that Road Configuration Container contains description of all present lanes. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * and the IUT has sent or received MAPEM * containing description of the target road * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing RoadConfigurationContainer * containing description of the target road * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing element of types RoadConfigurationContainer * containing element of types RccPart * containing laneConfiguration * containing elements of type LaneInformation * describing all existing lanes of the target road * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_RCC_BV_03 * @reference CEN ISO TS/19321 [5], clause 6.3.3.2 */ testcase TC_IS_IVI_GEN_RCC_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_RCC_BV_03(); } // End of TC_IS_IVI_GEN_RCC_BV_03 } // End of group iviRoadConfigurationContainer group iviTextContainer{ /** * @desc Check that all zone IDs in the Text Container references existing items in the Location Container of the same IVIM Structure. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing one or more TextContainer * containing elements of types TcPart * containing relevanceZoneIds * containing RZ_IDs * and optionally containing detectionZoneIds * containing DZ_IDs * and optionally containing driverAwarenessZoneIds * containing DAZ_IDs * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of types GeographicLocationContainer * containing all zones referenced from RZ_IDs, DZ_IDs and DAZ_IDs * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_TEXT_BV_01 * @reference CEN ISO TS/19321 [5], clause 6.3.4.2 */ testcase TC_IS_IVI_GEN_TEXT_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_TEXT_BV_01(); } // End of TC__IS_IVI_GEN_TEXT_BV_01 /** * @desc The sending ITS-S shall include the component direction to describe the direction of * relevance within a Relevance Zone representing a road segment. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing Text Containers * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type TextContainer * containing element of type TcPart * containing direction * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_TEXT_BV_02 * @reference CEN ISO TS/19321 [5], clause 6.3.4.2 */ testcase TC_IS_IVI_GEN_TEXT_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_TEXT_BV_02(); } // End of TC__IS_IVI_GEN_TEXT_BV_02 /** * @desc The IUT can include either the component text and/or the component data. The IUT can repeat * the text in the component text in different languages with the appropriate unique language code *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing Text Containers * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type TextContainer * containing element of type TcPart * containing non-empty data * and/or containing text * containing elements of type Text * containing language * indicating unique language code * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_TEXT_BV_03 * @reference CEN ISO TS/19321 [5], clause 6.3.4.2 */ testcase TC_IS_IVI_GEN_TEXT_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_TEXT_BV_03(); } // End of TC__IS_IVI_GEN_TEXT_BV_03 /** * @desc Check that all layoutID of the Text Containers references existing layouts in the Layout Containers of the same IVIM Structure. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * containing ivi * containing optional * containing elements of type TextContainer * containing element of type TcPart * containing layoutId (LID) * } * then { * the IUT sends a valid IVIM * containing ivi * containing optional * containing elements of type LayoutContainer * containing layoutId * indicating LID * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_TEXT_BV_04 * @reference CEN ISO TS/19321 [5], clause 6.3.4.2 */ testcase TC_IS_IVI_GEN_TEXT_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_TEXT_BV_04(); } // End of TC__IS_IVI_GEN_TEXT_BV_04 } // End of group iviTextContainer group iviGenerationFrequency { /** * @desc Check that IVIMs are not generated more frequently than T_GenIvimMin *
* Pics Selection: PICS_T_GENIVIMMIN and PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * } * Expected behaviour: * ensure that { * when { * the IUT sends a IVIM * } * then { * the IUT does not send any IVIM before expiry of T_GenIvimMin * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GFQ_TI_01 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_GFQ_TI_01 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GFQ_TI_01(); } // End of testcase TC_IS_IVI_GEN_GFQ_TI_01 /** * @desc Check that IVIMs are not generated less frequently than T_GenIvimMax *
* Pics Selection: PICS_T_GENIVIMMAX and PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * } * Expected behaviour: * ensure that { * when { * the IUT sends a IVIM * } * then { * the IUT sends another IVIM before expiry of T_GenIvimMax * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_GFQ_TI_02 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_GFQ_TI_02 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_GFQ_TI_02(); } // End of testcase TC_IS_IVI_GEN_GFQ_TI_02 } // End of group iviGenerationFrequency group iviEventRepetition { /** * @desc Check that the IUT activates repetition on reception of a valid AppIVIM_Update request *
* Pics Selection: PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_Update indicating 'repetition interval' RI_1 * } * then { * the IUT sends IVIM with respect to the 'repetition interval' RI_1 * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVRP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVRP_BV_01 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVRP_BV_01(); } // End of testcase TC_IS_IVI_GEN_EVRP_BV_01 /** * @desc Check that the IUT deactivates repetition on reception of a valid AppIVIM_Update request *
* Pics Selection: PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_Update indicating 'repetition interval' 0 * } * then { * the IUT stops sending IVIM associated with IVIM_ID_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVRP_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVRP_BV_02 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVRP_BV_02(); } // End of testcase TC_IS_IVI_GEN_EVRP_BV_02 } // End of group iviEventRepetition group iviEventTermination { /** * @desc Check that the IUT terminates IVM genration on validity duration expery *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * and containing validTo * indicating CLT + 10 seconds * and containing iviStatus * indicating 'new' * } * Expected behaviour: * ensure that { * when { * the IUT is alerted of expiration of the time associated with validTo * } * then { * the IUT stops sending IVIM associated with IVIM_ID_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVTR_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVTR_BV_01 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVTR_BV_01(); } // End of testcase TC_IS_IVI_GEN_EVTR_BV_01 /** * @desc Check that the IUT terminates IVM genration on termination request *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * and not containing validTo * and containing iviStatus * indicating 'new' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_termination request associated with IVIM_ID_1 * } * then { * the IUT stops ending IVIM associated with IVIM_ID_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVTR_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVTR_BV_02 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVTR_BV_02(); } // End of testcase TC_IS_IVI_GEN_EVTR_BV_02 /** * @desc Check that the IUT terminates IVM generation on cancellation request. *
* Pics Selection: PICS_IVI_CANCELLATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * and containing serviceProviderId * indicating IVIM_SP_1 * and containing iviStatus * indicating 'new' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_termination request associated with IVIM_ID_1 * } * then { * the IUT sends a valid IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * and containing timeStamp * indication IVM_CLT_1 * and containing iviStatus * indicating 'cancellation' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVTR_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVTR_BV_03 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVTR_BV_03(); } // End of testcase TC_IS_IVI_GEN_EVTR_BV_03 /** * @desc Check that the IUT terminates IVM generation on negation request *
* Pics Selection: PICS_IVI_NEGATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several IVIM * containing ivi * containing mandatory * containing iviIdentificationNumber * indicating IVIM_ID_1 * and containing timeStamp * indication IVM_CLT_1 * and containing iviStatus * indicating 'negation' * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppIVIM_termination request associated with IVIM_ID_1 * } * then { * the IUT stops ending IVIM associated with IVIM_ID_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_EVTR_BV_04 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.2 */ testcase TC_IS_IVI_GEN_EVTR_BV_04 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_EVTR_BV_04(); } // End of testcase TC_IS_IVI_GEN_EVTR_BV_04 } // End of group iviEventTermination group iviCommunication { /** * @desc Check that IVIM uses BTP_B packet * Check that the destination port for IVIM is set to 2006 *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * an IVIM is generated * } * then { * the IUT sends a valid IVIM * encapsulated in a BTP-B packet * containing a destination port value set to '2006' * and containing a destination port info value set to '0' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_COM_BV_01 * @reference ETSI TS 103 301 v1.3.1 clauses 10.2 and 7.4.3.2 */ testcase TC_IS_IVI_GEN_COM_BV_01 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_COM_BV_01(); } // End of testcase TC_IS_IVI_GEN_COM_BV_01 /** * @desc Check that IVI service encapsulates IVIM in a UNC with the HeaderType field set to the value of 2. *
* Pics Selection: PICS_IVIM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * a IVIM is generated * } * then { * the IUT sends a valid IVIM * encapsulated in a UNC packet * containing a correctly formatted Common Header * containing HeaderType field * indicating the value '2' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_COM_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 7.4.3.2 */ testcase TC_IS_IVI_GEN_COM_BV_02 () runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_COM_BV_02(); } // End of testcase TC_IS_IVI_GEN_COM_BV_02 } // End of group iviCommunication group iviSecurityParameters{ /** * @desc Check that IVI service uses certificate containing valid ITS AID to sign IVIM. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * } * then { * the IUT sends a valid IVIM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SEC_BV_01 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SEC_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SEC_BV_01(); } // End of TC_IS_IVI_GEN_SEC_BV_01 /** * @desc Check that IVI service uses certificate containing valid ITS AID to sign IVIM. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending IVIM * } * Expected behaviour: * ensure that { * when { * a IVIM is generated * } * then { * the IUT sends a valid IVIM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_IVIM * and containing generationTime * indicating realistic generation time * and optionally containing generationLocation * and not containing other header items * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SEC_BV_02 * @reference ETSI TS 103 301 [2], clause 12 */ testcase TC_IS_IVI_GEN_SEC_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SEC_BV_02(); } // End of TC_IS_IVI_GEN_SEC_BV_02 /** * @desc Check that IVI service uses certificate containing valid Service Specific Permissions of type BitmapSsp * to sign IVIM from the given service provider and the SSP version is set to 1. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating octets at positions 1-3 set to IVI_SP_VALUE * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating IVI_SP_VALUE * and containing iviStatus * indicating ‘new’ * and not containing optional * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 4.5.1 */ testcase TC_IS_IVI_GEN_SSP_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BV_01(); } // End of TC_IS_IVI_GEN_SSP_BV_01 /** * @desc Check that IVI service sends an IVIM containing different road signs schema when it is permitted by * the signing certificate *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_VIENNACONV AND PICS_IVIM_RSCODE_SAEJ2540 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_X * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing roadSignCodes * containing elements of type RSCode * containing code * containing COMPONENT_X * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_X * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_02 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BV_02(); } // End of TC_IS_IVI_GEN_SSP_BV_02 /** * @desc Check that IVI service sends an IVIM containing ISO/TS 14823 road signs codes of different service categories * when it is permitted by the signing certificate *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_X * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing roadSignCodes * containing elements of type RSCode * containing code * containing iso14823.pictogramCode.serviceCategoryCode * containing COMPONENT_X * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_X * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_03 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BV_03(); } // End of TC_IS_IVI_GEN_SSP_BV_03 /** * @desc Check that IVI service sends an IVIM containing lane status when it is permitted by the signing * certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_LS * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit 0 of octet 5 set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing laneStatus * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_LS * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_04 * @reference ETSI TS 103 301 [2],clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BV_04(); } // End of TC_IS_IVI_GEN_SSP_BV_04 /** * @desc Check that IVI service sends an IVIM containing different containers when it is permitted by the signing * certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_X * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type CONTAINER_X * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_X * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_05 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BV_05(); } // End of TC_IS_IVI_GEN_SSP_BV_05 /** * @desc Check that IVI service sends an IVI negation when it is permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NEG * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit 4 of octet 5 set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing mandatory * containing iviStatus * indnicating ‘negation’ * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_NEG * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_06 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BV_06() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BV_06(); } // End of TC_IS_IVI_GEN_SSP_BV_06 /** * @desc Check that IVI service doesn’t send an IVIM if service provider value is not authorized by the signing certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * containing bitmapSSP * and indicating octets at positions 1-3 set to IVI_SP_VALUE * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating other value than IVI_SP_VALUE * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 4.5.1 */ testcase TC_IS_IVI_GEN_SSP_BO_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BO_01(); } // End of TC_IS_IVI_GEN_SSP_BO_01 /** * @desc Check that IVI service doesn’t send an IVIM containing different road signs schema when it is not permitted by the signing certificat. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_VIENNACONV AND PICS_IVIM_RSCODE_SAEJ2540 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing roadSignCodes * containing elements of type RSCode * containing code * containing COMPONENT_X * } * then { * the IUT doesn't send an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BO_02 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BO_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BO_02(); } // End of TC_IS_IVI_GEN_SSP_BO_02 /** * @desc Check that IVI service doesn’t send an IVIM containing ISO/TS 14823 road signs codes of different service * categories when it is not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing roadSignCodes * containing elements of type RSCode * containing code * containing iso14823.pictogramCode.serviceCategoryCode * containing COMPONENT_X * } * then { * the IUT sends an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BO_03 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BO_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BO_03(); } // End of TC_IS_IVI_GEN_SSP_BO_03 /** * @desc Check that IVI service doesn’t send an IVIM containing lane status when it is not permitted * by the signing certificate *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit 0 of octet 5 set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing laneStatus * } * then { * the IUT doesn't send an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BO_04 * @reference ETSI TS 103 301 [2],clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BO_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BO_04(); } // End of TC_IS_IVI_GEN_SSP_BO_04 /** * @desc Check that IVI service doesn’t send an IVIM containing different containers when it is not permitted * by the signing certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing optional * containing element of type CONTAINER_X * } * then { * the IUT doesn't send an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BO_05 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BO_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BO_05(); } // End of TC_IS_IVI_GEN_SSP_BO_05 /** * @desc Check that IVI service doesn’t send an IVI negation when it is not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign IVIM with the certificate CERT_IVI_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating bit 4 of octet 5 set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate an IVIM * containing ivi * containing mandatory * containing iviStatus * indnicating ‘negation’ * } * then { * the IUT doesn't sends an IVIM * signed with the CERT_IVI_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_GEN_SSP_BO_06 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_GEN_SSP_BO_06() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_GEN_SSP_BO_06(); } // End of TC_IS_IVI_GEN_SSP_BO_06 } // End of group iviSecurityParameters } // End of group iviMessageTransmission group iviMessageReception { /** * @desc Check that the IUT can successfully process IVIM been received * when the IUT was in the Relevance Zone. *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT position is in the R_ZONE * the IUT is approaching the relevance zone * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing an element of type GeneralIviContainer * containing elements of types GicPart * containing relevanceZoneIds * containing RZ_ID * and containing an element of type GeographicLocationContainer * containing parts * containing elements of types GlcPart * containing zoneId * indicating RZ_ID * and containing zone * indicating R_ZONE * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT forwards the IVIM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 clause 7.3 */ testcase TC_IS_IVI_RCV_MSGF_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_MSGF_BV_01(); } // end TC_IS_IVI_RCV_MSGF_BV_01 /** * @desc Check that the IUT can successfully process IVIM been received when the IUT was * in the Detection Zone approaching the Relevance Zone *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT position is in the D_ZONE * the IUT is approaching the relevance zone * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing an element of type GeneralIviContainer * containing elements of types GicPart * containing relevanceZoneIds * containing DZ_ID * and containing relevanceZoneIds * containing RZ_ID * and containing direction * indicating direction to the R_ZONE * and containing an element of type GeographicLocationContainer * containing parts * containing elements of types GlcPart * containing zoneId * indicating DZ_ID * and containing zone * indicating D_ZONE * and containing elements of types GlcPart * containing zoneId * indicating RZ_ID * and containing zone * indicating R_ZONE * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT forwards the IVIM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_DATA_BV_01 * @reference CEN ISO TS/19321 [5], clause 5.1.2 */ testcase TC_IS_IVI_RCV_DATA_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_DATA_BV_01(); } // end TC_IS_IVI_RCV_DATA_BV_01 /** * @desc Check that an IUT detects the applicability of a Relevance Zone defined as a polygonal lie. *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT position is in the R_ZONE * the IUT is approaching the relevance zone * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing an element of type GeneralIviContainer * containing elements of types GicPart * containing relevanceZoneIds * containing RZ_ID * and containing an element of type GeographicLocationContainer * containing parts * containing elements of types GlcPart * containing zoneId * indicating RZ_ID * and containing zone * containing segment * indicating R_ZONE * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT forwards the IVIM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_DATA_BV_02 * @reference CEN ISO TS/19321 [5], clause 5.2.2 */ testcase TC_IS_IVI_RCV_DATA_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_DATA_BV_02(); } // end TC_IS_IVI_RCV_DATA_BV_02 /** * @desc Check that an IUT detects the applicability of a Relevance Zone defined as an area. *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT position is in the R_ZONE * the IUT is approaching the relevance zone * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing an element of type GeneralIviContainer * containing elements of types GicPart * containing relevanceZoneIds * containing RZ_ID * and containing an element of type GeographicLocationContainer * containing parts * containing elements of types GlcPart * containing zoneId * indicating RZ_ID * and containing zone * containing area * indicating R_ZONE * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT forwards the IVIM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_DATA_BV_03 * @reference CEN ISO TS/19321 [5], clause 5.2.2 */ testcase TC_IS_IVI_RCV_DATA_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_DATA_BV_03(); } // end TC_IS_IVI_RCV_DATA_BV_03 /** * @desc Check that an IUT detects the applicability of a Relevance Zone defined as a distance value. *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT position is in the R_ZONE * the IUT is approaching the relevance zone * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing an element of type GeneralIviContainer * containing elements of types GicPart * containing relevanceZoneIds * containing RZ_ID * and containing an element of type GeographicLocationContainer * containing parts * containing elements of types GlcPart * containing zoneId * indicating RZ_ID * and containing zoneExtension * indicating distance * and indicating R_ZONE * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT forwards the IVIM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_DATA_BV_04 * @reference CEN ISO TS/19321 [5], clause 5.2.2 */ testcase TC_IS_IVI_RCV_DATA_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_DATA_BV_04(); } // end TC_IS_IVI_RCV_DATA_BV_04 /** * @desc Check that an IUT detects the applicability of a Relevance Zone by matching its * path with the relevance zone (path) of the moving IVI object. *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT position is in the R_ZONE * the IUT is approaching the relevance zone * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing an element of type GeneralIviContainer * containing elements of types GicPart * containing relevanceZoneIds * containing RZ_ID * and containing an element of type GeographicLocationContainer * containing parts * containing elements of types GlcPart * containing zoneId * indicating RZ_ID * and containing zoneExtension * indicating distance * and indicating R_ZONE * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT forwards the IVIM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_DATA_BV_05 * @reference CEN ISO TS/19321 [5], clause 5.1.2 */ testcase TC_IS_IVI_RCV_DATA_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_DATA_BV_05(); } // end TC_IS_IVI_RCV_DATA_BV_05 /** * @desc Check that a received IVIM is considered as new if iviStatus is “new”. *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT is in the relevance zone * the IUT has already received IVIM * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating ‘new’ * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT considers the IVIM as new * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_EVUP_BV_01 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_RCV_EVUP_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_EVUP_BV_01(); } // end TC_IS_IVI_RCV_EVUP_BV_01 /** * @desc Check that a received IVIM is considered as new if iviStatus is “new” and/or if the * combination of serviceProviderId and iviIdentificationNumber is different from other received messages *
* Pics Selection: PICS_IVIM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT is in the relevance zone * the IUT has never received IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating ‘update’ * and containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT considers the IVIM as new * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_EVUP_BV_02 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_RCV_EVUP_BV_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_EVUP_BV_02(); } // end TC_IS_IVI_RCV_EVUP_BV_02 /** * @desc Check that a received IVIM is considered as update if the iviStatus is “update” and/or * if the combination of serviceProviderId and iviIdentificationNumber equals to those from * another received structure and the timestamp is more recent;. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * the IUT is in the relevance zone * the IUT has already received IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * and containing timeStamp * indicating TIME_1 * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating ‘update’ * and containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * and containing timeStamp * indicating TIME_2 > TIME_1 * } * then { * the IUT forwards the IVIM content to upper layers * and the IUT considers the IVIM as update * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_EVUP_BV_03 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_RCV_EVUP_BV_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_EVUP_BV_03(); } // end TC_IS_IVI_RCV_EVUP_BV_03 /** * @desc Check that a received IVIM is considered as duplicate of a received structure if the * combination of serviceProviderId and iviIdentificationNumber equals to those from another * received structure and the timestamp is the same; *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IVIM_UPDATE * Initial conditions: * with { * the IUT being in the "initial state" * the IUT is in the relevance zone * the IUT has already received IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * and containing timeStamp * indicating TIME_1 * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * and containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * and containing timeStamp * indicating TIME_2 > TIME_1 * } * then { * the IUT considers the IVIM as duplicate * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_EVUP_BV_04 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_RCV_EVUP_BV_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_EVUP_BV_04(); } // end TC_IS_IVI_RCV_EVUP_BV_04 /** * @desc Check that a received IVIM is considered as cancelation if the iviStatus is “cancellation”. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IVIM_CANELATION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT is in the relevance zone * the IUT has already received IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating ‘cancelation’ * and containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * } * then { * the IUT considers the IVIM as cancelation * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_EVUP_BV_05 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_RCV_EVUP_BV_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_EVUP_BV_05(); } // end TC_IS_IVI_RCV_EVUP_BV_05 /** * @desc Check that a received IVIM is considered as negation if the iviStatus is “negation”. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IVIM_NEGATION * Initial conditions: * with { * the IUT being in the "initial state" * the IUT is in the relevance zone * the IUT has already received IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indicating ‘negation’ * and containing serviceProviderId * indicating SP_ID * and containing iviIdentificationNumber * indicating IVI_ID * } * then { * the IUT considers the IVIM as negation * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_EVUP_BV_06 * @reference CEN ISO TS/19321 [5], clause 6.1.2 */ testcase TC_IS_IVI_RCV_EVUP_BV_06() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_EVUP_BV_06(); } // end TC_IS_IVI_RCV_EVUP_BV_06 /** * @desc Check that the IUT accepts a received IVIM message permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating IVI_SP_VALUE * and containing iviStatus * indicating’new’ * and not containing optional * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating octet 1-3 representing IVI_SP_VALUE * and indicating other bits set to 0 * } * then { * the IUT accepts the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BV_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BV_01(); } // end TC_IS_IVI_RCV_SSP_BV_01 /** * @desc Check that the IUT skips a received IVIM message not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating IVI_SP_VALUE * and containing iviStatus * indicating’new’ * and not containing optional * and signed with the certificate * not containing appPermission item * containing psid * indicating ITS_AID_IVIM * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_01() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_01(); } // end TC_IS_IVI_RCV_SSP_BO_01 /** * @desc Check that the IUT skips a received IVIM message with service provider identifier * not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing serviceProviderId * indicating IVI_SP_VALUE * and containing iviStatus * indicating’new’ * and not containing optional * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_IVIM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating octet 1-3 not representing IVI_SP_VALUE * and indicating other bits set to 0 * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_02 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_02() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_02(); } // end TC_IS_IVI_RCV_SSP_BO_02 /** * @desc Check that IVI service skips a received IVIM containing different road signs schema * when it is not permitted by the signing certificate *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_VIENNACONV AND PICS_IVIM_RSCODE_SAEJ2540 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing roadSignCodes * containing elements of type RSCode * containing code * containing COMPONENT_X * and signed with the certificate * containing psid * indicating ITS_AID_IVIM * and containing appPermission item * containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 0 * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_03 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_03() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_03(); } // end TC_IS_IVI_RCV_SSP_BO_03 /** * @desc Check that IVI service skips a received IVIM containing ISO/TS 14823 road signs codes * of different service categories when it is not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing roadSignCodes * containing elements of type RSCode * containing code * containing iso14823.pictogramCode.serviceCategoryCode * containing COMPONENT_X * and signed with the certificate * containing psid * indicating ITS_AID_IVIM * and containing appPermission item * containing bitmapSSP * and indicating bit BIT_X of octet OCTET_X set to 0 * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_04 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_04() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_04(); } // end TC_IS_IVI_RCV_SSP_BO_04 /** * @desc Check that IVI service skips a received IVIM containing lane status when it * is not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing element of type GeneralIviContainer * containing element of type GicPart * containing laneStatus * and signed with the certificate * containing psid * indicating ITS_AID_IVIM * and containing appPermission item * containing bitmapSSP * indicating bit 0 of octet 5 set to 0 * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_05 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_05() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_05(); } // end TC_IS_IVI_RCV_SSP_BO_05 /** * @desc Check that IVI service skips a received IVIM containing different containers when * it is not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing optional * containing element of type CONTAINER_X * and signed with the certificate * containing psid * indicating ITS_AID_IVIM * and containing appPermission item * containing bitmapSSP * indicating bit BIT_X of octet OCTET_X set to 0 * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_06 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_06() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_06(); } // end TC_IS_IVI_RCV_SSP_BO_06 /** * @desc Check that IVI service skips a received IVI negation when it is * not permitted by the signing certificate. *
* Pics Selection: PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid IVIM * containing ivi * containing mandatory * containing iviStatus * indnicating ‘negation’ * and signed with the certificate * containing psid * indicating ITS_AID_IVIM * and containing appPermission item * containing bitmapSSP * indicating bit 4 of octet 5 set to 0 * } * then { * the IUT skips the received IVIM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_IVI_RCV_SSP_BV_07 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_IVI_RCV_SSP_BO_07() runs on ItsIvim system ItsIvimSystem { f_IS_IVI_RCV_SSP_BO_07(); } // end TC_IS_IVI_RCV_SSP_BO_07 } // End of group iviMessageReception } // End of module ItsIvim_TestCases ats_ts103191-3-devel/ItsIvim_TestControl.ttcn 0000664 0000000 0000000 00000015745 14553501104 0021117 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsIVIM/ItsIvim_TestControl.ttcn $ * $Id: ItsIvim_TestControl.ttcn 2648 2017-01-03 09:02:30Z garciay $ * @desc Test Control file for IVIM * @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 ItsIvim_TestControl { // ATS IVIM import from ItsIvim_TestCases all; // LibIts import from LibItsIvim_Pics all; // Test Execution control { if(PICS_IVIM_GENERATION) { execute(TC_IS_IVI_GEN_MSGF_BV_01()); execute(TC_IS_IVI_GEN_LOC_BV_01()); execute(TC_IS_IVI_GEN_LOC_BV_02()); execute(TC_IS_IVI_GEN_LOC_BV_03()); execute(TC_IS_IVI_GEN_LOC_BV_04()); execute(TC_IS_IVI_GEN_LOC_BV_05()); execute(TC_IS_IVI_GEN_LOC_BV_06()); execute(TC_IS_IVI_GEN_MANC_BV_01()); } if(PICS_IVIM_GENERATION and PICS_IVIM_FRAGMENTATION) { execute(TC_IS_IVI_GEN_MANC_BV_02()); } if(PICS_IVIM_GENERATION) { execute(TC_IS_IVI_GEN_EVGN_BV_01()); execute(TC_IS_IVI_GEN_EVGN_BV_02()); execute(TC_IS_IVI_GEN_EVGN_BV_03()); execute(TC_IS_IVI_GEN_EVGN_BV_04()); execute(TC_IS_IVI_GEN_EVGN_BV_05()); } if(PICS_IVIM_GENERATION and PICS_IVIM_UPDATE) { execute(TC_IS_IVI_GEN_EVUP_BV_01()); execute(TC_IS_IVI_GEN_EVUP_BV_02()); execute(TC_IS_IVI_GEN_EVUP_BV_03()); execute(TC_IS_IVI_GEN_EVUP_BV_04()); execute(TC_IS_IVI_GEN_EVUP_BV_05()); } if(PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER) { execute(TC_IS_IVI_GEN_GENAPP_BV_01()); execute(TC_IS_IVI_GEN_GENAPP_BV_02()); execute(TC_IS_IVI_GEN_GENAPP_BV_03()); } if(PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER and PICS_IVIM_RSCODE_VIENNACONV and PICS_IVIM_RSCODE_ISO14823 and PICS_IVIM_RSCODE_SAEJ2540 and PICS_IVIM_RSCODE_ANY_CATALOGUE) { execute(TC_IS_IVI_GEN_GENAPP_BV_04()); } if(PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER and PICS_IVIM_HAS_LAYOUT_CONTAINER) { execute(TC_IS_IVI_GEN_GENAPP_BV_05()); } if(PICS_IVIM_GENERATION and PICS_IVIM_HAS_ROAD_CFG_CONTAINER) { execute(TC_IS_IVI_GEN_RCC_BV_01()); execute(TC_IS_IVI_GEN_RCC_BV_02()); execute(TC_IS_IVI_GEN_RCC_BV_03()); } if(PICS_IVIM_GENERATION and PICS_IVIM_HAS_TEXT_CONTAINER) { execute(TC_IS_IVI_GEN_TEXT_BV_01()); execute(TC_IS_IVI_GEN_TEXT_BV_02()); execute(TC_IS_IVI_GEN_TEXT_BV_03()); } if(PICS_IVIM_GENERATION and PICS_IVIM_HAS_TEXT_CONTAINER and PICS_IVIM_HAS_LAYOUT_CONTAINER) { execute(TC_IS_IVI_GEN_TEXT_BV_04()); } if(PICS_IVIM_GENERATION) { execute(TC_IS_IVI_GEN_GFQ_TI_01()); execute(TC_IS_IVI_GEN_GFQ_TI_02()); } if(PICS_IVIM_UPDATE) { execute(TC_IS_IVI_GEN_EVRP_BV_01()); execute(TC_IS_IVI_GEN_EVRP_BV_02()); } if(PICS_IVIM_GENERATION) { execute(TC_IS_IVI_GEN_EVTR_BV_01()); execute(TC_IS_IVI_GEN_EVTR_BV_02()); } if(PICS_IVIM_CANCELLATION) { execute(TC_IS_IVI_GEN_EVTR_BV_03()); } if(PICS_IVIM_NEGATION) { execute(TC_IS_IVI_GEN_EVTR_BV_04()); } if(PICS_IVIM_GENERATION) { execute(TC_IS_IVI_GEN_COM_BV_01()); execute(TC_IS_IVI_GEN_COM_BV_02()); } if(PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED) { execute(TC_IS_IVI_GEN_SEC_BV_01()); execute(TC_IS_IVI_GEN_SEC_BV_02()); execute(TC_IS_IVI_GEN_SSP_BV_01()); execute(TC_IS_IVI_GEN_SSP_BO_01()); } if(PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_VIENNACONV and PICS_IVIM_RSCODE_SAEJ2540) { execute(TC_IS_IVI_GEN_SSP_BV_02()); execute(TC_IS_IVI_GEN_SSP_BO_02()); } if(PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_ISO14823) { execute(TC_IS_IVI_GEN_SSP_BV_03()); execute(TC_IS_IVI_GEN_SSP_BV_04()); execute(TC_IS_IVI_GEN_SSP_BO_03()); execute(TC_IS_IVI_GEN_SSP_BO_04()); } if(PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and PICS_IVIM_HAS_ROAD_CFG_CONTAINER and PICS_IVIM_HAS_TEXT_CONTAINER and PICS_IVIM_HAS_LAYOUT_CONTAINER) { execute(TC_IS_IVI_GEN_SSP_BV_05()); execute(TC_IS_IVI_GEN_SSP_BO_05()); } if(PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED) { execute(TC_IS_IVI_GEN_SSP_BV_06()); execute(TC_IS_IVI_GEN_SSP_BO_06()); } if (PICS_IVIM_RECEPTION) { execute(TC_IS_IVI_RCV_MSGF_BV_01()); execute(TC_IS_IVI_RCV_DATA_BV_01()); execute(TC_IS_IVI_RCV_DATA_BV_02()); execute(TC_IS_IVI_RCV_DATA_BV_03()); execute(TC_IS_IVI_RCV_DATA_BV_04()); execute(TC_IS_IVI_RCV_DATA_BV_05()); execute(TC_IS_IVI_RCV_EVUP_BV_01()); execute(TC_IS_IVI_RCV_EVUP_BV_02()); } if (PICS_IVIM_RECEPTION and PICS_IVIM_UPDATE) { execute(TC_IS_IVI_RCV_EVUP_BV_03()); execute(TC_IS_IVI_RCV_EVUP_BV_04()); } if (PICS_IVIM_RECEPTION and PICS_IVIM_CANCELLATION) { execute(TC_IS_IVI_RCV_EVUP_BV_05()); } if (PICS_IVIM_RECEPTION and PICS_IVIM_NEGATION) { execute(TC_IS_IVI_RCV_EVUP_BV_06()); } if (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED) { execute(TC_IS_IVI_RCV_SSP_BV_01()); execute(TC_IS_IVI_RCV_SSP_BO_01()); execute(TC_IS_IVI_RCV_SSP_BO_02()); } if(PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_VIENNACONV and PICS_IVIM_RSCODE_SAEJ2540) { execute(TC_IS_IVI_RCV_SSP_BO_03()); } if(PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_ISO14823) { execute(TC_IS_IVI_RCV_SSP_BO_04()); execute(TC_IS_IVI_RCV_SSP_BO_05()); } if(PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and PICS_IVIM_HAS_ROAD_CFG_CONTAINER and PICS_IVIM_HAS_TEXT_CONTAINER and PICS_IVIM_HAS_LAYOUT_CONTAINER) { execute(TC_IS_IVI_RCV_SSP_BO_06()); } if (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED) { execute(TC_IS_IVI_RCV_SSP_BO_07()); } } } // End of module ItsIvim_TestControl ats_ts103191-3-devel/ItsIvim_TpFunctions.ttcn 0000664 0000000 0000000 00000652740 14553501104 0021115 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF525 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsIVIM/ItsIvim_TpFunctions.ttcn $ * $Id: ItsIvim_TpFunctions.ttcn,v 1.7 2019/01/07 08:56:01 dte Exp $ * @desc IVIM TP functions * @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 ItsIvim_TpFunctions { // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; import from LibCommon_BasicTypesAndValues all; // LibHelpers import from LibHelpers_Functions all; // LibItsCommon import from LibItsCommon_Pixits all; import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; import from LibItsCommon_ASN1_NamedNumbers all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from IVIM_PDU_Descriptions language "ASN.1:1997" all; import from IVI language "ASN.1:1997" all; // LibItsIVIM import from LibItsIvim_TypesAndValues all; import from LibItsIvim_Templates all; import from LibItsIvim_TestSystem all; import from LibItsIvim_Functions all; import from LibItsIvim_Pics all; import from LibItsIvim_Pixits all; import from LibItsIvim_ASN1_IVInamedNumbers all; group iviMessageTransmission { group iviMessageFormat { /** * @desc TP Function for TC_IS_IVI_MSGF_BV_01 */ function f_IS_IVI_GEN_MSGF_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent())); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_MSGF_BV_01 } // End of group iviMessageFormat group iviLoactionContainer{ /** * @desc TP Function for TC_IS_IVI_GEN_LOC_BV_01 */ function f_IS_IVI_GEN_LOC_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_LOC_BV_01 /** * @desc TP Function for TC_IS_IVI_GEN_LOC_BV_02 */ function f_IS_IVI_GEN_LOC_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1, PX_ZONEID_2},-))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer(//TODO check if list of GeographicLocationContainer is checked or list of GlC is checked??? mw_geographicLocationContainer( ?, {permutation(mw_glcPart(PX_ZONEID_1), mw_glcPart(PX_ZONEID_2)) } ) ) } ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_LOC_BV_02 /** * @desc TP Function for TC_IS_IVI_GEN_LOC_BV_03 */ function f_IS_IVI_GEN_LOC_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1, PX_ZONEID_2},-))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( //awaiting only one geographical location due to TP mw_geographicLocationContainer( ?, {mw_glcPart(-)} ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_LOC_BV_03 /** * @desc TP Function for TC_IS_IVI_GEN_LOC_BV_04 */ function f_IS_IVI_GEN_LOC_BV_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},PX_LANE))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1,-,-,-,?)} //zone Id. and zone should be present ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_LOC_BV_04 /** * @desc TP Function for TC_IS_IVI_GEN_LOC_BV_05 */ function f_IS_IVI_GEN_LOC_BV_05() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1}))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1,omit,-,-,-)} //zone Id., LaneNumber should not be present ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_LOC_BV_05 /** * @desc TP Function for TC_IS_IVI_GEN_LOC_BV_06 */ function f_IS_IVI_GEN_LOC_BV_06() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {(mw_glcPart(?,-,?,-,-), //zone Extension should be present or mw_glcPart(?,-,-,?,-), //zoneHeading should be present or mw_glcPart(?,-,-,-,?) //zone should be present ) } ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_LOC_BV_06 } // End of group iviLoactionContainer group iviManagamentContainer{ /** * @desc TP Function for TC_IS_IVI_GEN_MANC_BV_01 */ function f_IS_IVI_GEN_MANC_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent())); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( mw_provider( '0101111100'B,//TODO country code according to ISO3166-1 -), -, - ) ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_MANC_BV_01 /** * @desc TP Function for TC_IS_IVI_GEN_MANC_BV_02 */ function f_IS_IVI_GEN_MANC_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var boolean v_ivimReceived := false; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_FRAGMENTATION)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_FRAGMENTATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent()));// TODO trigger for fragmentation tc_ac.start; alt { [v_ivimReceived] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_connectedIviStructures( -, ?,// TODO additional check for second iviIdentification ID -, ? // TODO additional check for second connected IVI structure ) ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected fragmented IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_connectedIviStructures( -, ?, // TODO additional check for first iviIdentification ID -, ? // TODO additional check for first connected IVI structure ) ) ))) { log("*** " & testcasename() & ": Expected First IVIM received ***"); v_ivimReceived := true; repeat; } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_MANC_BV_02 } // End of group iviManagamentContainer group iviEventGeneration { function f_IS_IVI_GEN_EVGN_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVGN_BV_01 function f_IS_IVI_GEN_EVGN_BV_02() runs on ItsIvim { // Local variables var template (value) UtIvimTriggerList v_utTriggers := { m_utTriggerEvent(c_duration_2sec * 1000, f_getCurrentTime() - 1000 * c_duration_2sec, -/*, -, -*/), m_utTriggerEvent(c_duration_4sec * 1000, f_getCurrentTime() - 1000 * c_duration_4sec, -/*, -, -*/), m_utTriggerEvent(c_duration_6sec * 1000, f_getCurrentTime() - 1000 * c_duration_6sec, -/*, -, -*/) } var boolean v_success := true; var IviIdentificationNumberList v_iviIdentificationNumbers; var IvimInd v_ivimInd; var integer i; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); for (i := 0; i < lengthof(v_utTriggers) - 1; i := i + 1) { f_utTriggerEvent(valueof(v_utTriggers[i])); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); v_iviIdentificationNumbers[i] := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; } f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(valueof(v_utTriggers[lengthof(v_utTriggers) - 1])); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); v_iviIdentificationNumbers[lengthof(v_iviIdentificationNumbers)] := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; log("lengthof(v_iviIdentificationNumbers) = ", lengthof(v_iviIdentificationNumbers)); // Check the action id for (i := 0; i < lengthof(v_iviIdentificationNumbers) - 1; i := i + 1) { if (v_iviIdentificationNumbers[lengthof(v_iviIdentificationNumbers) - 1] == v_iviIdentificationNumbers[i]) { v_success := false; } } if (v_success==true) { log("*** " & testcasename() & ": PASS: IviIdentificationNumber field indicating unused value. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IviIdentificationNumber field indicating used value. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble for (i := 0; i < lengthof(v_iviIdentificationNumbers); i := i + 1) { f_poCancelEvent(e_iut, v_iviIdentificationNumbers[i]); } f_cfDown(); } // End of function f_IS_IVI_GEN_EVGN_BV_02 function f_IS_IVI_GEN_EVGN_BV_03() runs on ItsIvim { // Local variables var template (value) UtIvimTriggerList v_utTriggers := { m_utTriggerEvent(c_duration_2sec * 1000, f_getCurrentTime() - 1000 * c_duration_2sec, -/*, -, -*/), m_utTriggerEvent(c_duration_4sec * 1000, f_getCurrentTime() - 1000 * c_duration_4sec, -/*, -, -*/), m_utTriggerEvent(c_duration_6sec * 1000, f_getCurrentTime() - 1000 * c_duration_6sec, -/*, -, -*/) } var IviIdentificationNumber v_iviIdentificationNumber; var boolean v_success := true; var IvimInd v_ivimInd; var integer i; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); for (i := 0; i < lengthof(v_utTriggers) - 1; i := i + 1) { f_utTriggerEvent(valueof(v_utTriggers[i])); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); v_iviIdentificationNumber := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; log("################# iviIdentificationNumber: ", v_iviIdentificationNumber); f_poCancelEvent(e_iut, v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber); f_awaitIviMessage(mw_ivimInd(mw_anyIvimPdu), v_ivimInd); // Skip termination message } //save the last IVI identification number log("################# Next iviIdentificationNumber: ", v_iviIdentificationNumber); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(valueof(v_utTriggers[lengthof(v_utTriggers) - 1])); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber + 1, IviStatus_new_ ))))) -> value v_ivimInd { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); v_iviIdentificationNumber := v_ivimInd.msgIn.ivi.mandatory.iviIdentificationNumber; f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble log("################# Last cancel: iviIdentificationNumber: ", v_iviIdentificationNumber); f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVGN_BV_03 function f_IS_IVI_GEN_EVGN_BV_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVGN_BV_04 function f_IS_IVI_GEN_EVGN_BV_05() runs on ItsIvim { // Local variables const integer c_epsilon := 500; // maximum c_epsilon cannot exceed 500ms var IviIdentificationNumber v_iviIdentificationNumber; var TimestampIts v_timestamp; var IvimInd v_iviMsg; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_timestamp := f_getCurrentTime(); // ITS time log("v_timestamp: ", v_timestamp); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_timestamp( -, v_iviIdentificationNumber, IviStatus_new_ ))))) -> value v_iviMsg { tc_ac.stop; if (f_abs(v_iviMsg.msgIn.ivi.mandatory.timeStamp - v_timestamp) < c_epsilon) { log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: TimeStamp value is out of range (" & int2str(c_epsilon) & "). ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVGN_BV_05 } // End of group iviEventGeneration group iviEventUpdate { function f_IS_IVI_GEN_EVUP_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, -, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, -, IviStatus_update_ ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVUP_BV_01 function f_IS_IVI_GEN_EVUP_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; var TimestampIts v_validTo; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_validTo := f_getCurrentTime() + 1000 * 3600; // Current ITS time + one hour f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, -, -, v_validTo)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_validTo( -, v_iviIdentificationNumber, IviStatus_update_, v_validTo ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVUP_BV_02 function f_IS_IVI_GEN_EVUP_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; var TimestampIts v_validFrom; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_validFrom := f_getCurrentTime() + 1000 * 3600; // Current ITS time + one hour f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, -, v_validFrom)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_validFrom( -, v_iviIdentificationNumber, IviStatus_update_, v_validFrom ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVUP_BV_03 function f_IS_IVI_GEN_EVUP_BV_04() runs on ItsIvim { // Local variables const integer c_epsilon := 500; // maximum c_epsilon cannot exceed 500ms var IviIdentificationNumber v_iviIdentificationNumber; var TimestampIts v_timestamp; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_timestamp := f_getCurrentTime(); f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_timestamp( -, v_iviIdentificationNumber, IviStatus_update_ ))))) -> value v_rcvdMsg { tc_ac.stop; if (f_abs(v_rcvdMsg.msgIn.ivi.mandatory.timeStamp - v_timestamp) < c_epsilon) { log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: TimeStamp value is out of range (" & int2str(c_epsilon) & "). ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVUP_BV_04 function f_IS_IVI_GEN_EVUP_BV_05() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber)); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received expected IVIM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a IVIM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVUP_BV_05 } // End of group iviEventUpdate group iviGeneralApplicationContainer{ function f_IS_IVI_GEN_GENAPP_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-,{PX_RELAVANCE_ZONEID})));//relavanceZoneId tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {permutation( mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) ), mw_iviContainer_generalIviContainer({ (mw_gicPart_allZoneIdsAndItsRridAndDirection( -, -, -, //detectionZoneIds ?, //its_Rrid -, //relevanceZoneIds -, //direction - //driverAwarenessZoneIds ), mw_gicPart_allZoneIdsAndItsRridAndDirection( -, -, -, //detectionZoneIds -, //its_Rrid ?, //relevanceZoneIds -, //direction - //driverAwarenessZoneIds ) ) }) )} )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GENAPP_BV_01 function f_IS_IVI_GEN_GENAPP_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-,{PX_RELAVANCE_ZONEID},{PX_DETECTION_ZONEID},{PX_DRIVER_AWARENES_ZONEID}))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {permutation( mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) ), mw_iviContainer_generalIviContainer( { mw_gicPart_allZoneIdsAndItsRridAndDirection( -, -, -, //detectionZoneIds -, //its_Rrid ?, //relevanceZoneIds //relavanceZoneId or its_Rrid -, //direction - //driverAwarenessZoneIds ) } ) )} )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GENAPP_BV_02 function f_IS_IVI_GEN_GENAPP_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-,{PX_RELAVANCE_ZONEID},-,-, -, Direction_bothDirections_))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {permutation( mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) ), mw_iviContainer_generalIviContainer( { mw_gicPart_allZoneIdsAndItsRridAndDirection( -, -, -, //detectionZoneIds -, //its_Rrid ?, //relevanceZoneIds ?, //direction - //driverAwarenessZoneIds ) } ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GENAPP_BV_03 function f_IS_IVI_GEN_GENAPP_BV_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // var template RSCode v_RSCode[4]; // v_RSCode[0] := mw_rSCode_viennaConvention; // v_RSCode[1] := mw_rSCode_iso14823; // v_RSCode[2] := mw_rSCode_itisCodes; // v_RSCode[3] := mw_rSCode_anyCatalogue; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-,{PX_RELAVANCE_ZONEID}))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {permutation( mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) ), mw_iviContainer_generalIviContainer( { mw_gicPart_basic( -, {(mw_rSCode_viennaConvention, mw_rSCode_iso14823, mw_rSCode_itisCodes, mw_rSCode_anyCatalogue )} ) } ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GENAPP_BV_04 function f_IS_IVI_GEN_GENAPP_BV_05() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_GENERAL_CONTAINER and PICS_IVIM_HAS_LAYOUT_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_GENERAL_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-,{PX_RELAVANCE_ZONEID},-,-,-,-,PX_LAYOUTID))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, { permutation( mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) ), mw_iviContainer_generalIviContainer( { mw_gicPart_layoutId } ) ) } )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GENAPP_BV_05 } // End of group iviGeneralApplicationContainer group iviRoadConfigurationContainer{ function f_IS_IVI_GEN_RCC_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_ROAD_CFG_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-,{PX_RELAVANCE_ZONEID},-,{PX_DRIVER_AWARENES_ZONEID},-,Direction_bothDirections_,PX_LAYOUTID))); v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//Check if trigger should be different for RCC tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_RCC_BV_01 function f_IS_IVI_GEN_RCC_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_ROAD_CFG_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//Check if trigger should be different for RCC tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_geographicLocationContainer( mw_geographicLocationContainer( ?, {mw_glcPart(PX_ZONEID_1)} ) ), mw_iviContainer_roadConfigurationContainer( {mw_rccPart(-,-,-)} ) } ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_RCC_BV_02 function f_IS_IVI_GEN_RCC_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_ROAD_CFG_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_ROAD_CFG_CONTAINER required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); action("IUT should send or receive MAPEM first."); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//Check if trigger should be different for RCC tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_roadConfigurationContainer( {mw_rccPart(-, -, {mw_laneInformation} )} ) } ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_RCC_BV_03 } // End of group iviRoadConfigurationContainer group iviTextContainer{ function f_IS_IVI_GEN_TEXT_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_TEXT_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,-,-,{PX_RELAVANCE_ZONEID},{PX_DETECTION_ZONEID},{PX_DRIVER_AWARENES_ZONEID}))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_textContainer ({mw_tcPart_allZoneIds({PX_RELAVANCE_ZONEID}, //relevanceZoneIds -, //data {PX_DETECTION_ZONEID}, //detectionZoneIds {PX_DRIVER_AWARENES_ZONEID} //driverAwarenessZoneIds )} )} ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_TEXT_BV_01 function f_IS_IVI_GEN_TEXT_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_TEXT_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1}))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_textContainer ({mw_tcPart_direction}) } ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_TEXT_BV_02 function f_IS_IVI_GEN_TEXT_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_TEXT_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1}))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_textContainer ({mw_tcPart_text(-, -, {mw_text})}) } ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_TEXT_BV_03 function f_IS_IVI_GEN_TEXT_BV_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not (PICS_IVIM_GENERATION and PICS_IVIM_HAS_TEXT_CONTAINER and PICS_IVIM_HAS_LAYOUT_CONTAINER)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IVIM_HAS_TEXT_CONTAINER AND PICS_IVIM_HAS_LAYOUT_CONTAINER 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,-,-,-,-,-,-,-,PX_LAYOUTID))); tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( ?, {mw_iviContainer_textContainer ({mw_tcPart_layoutId(-,-,PX_LAYOUTID)}) } ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_TEXT_BV_04 } // End of group iviTextContainer group iviGenerationFrequency { function f_IS_IVI_GEN_GFQ_TI_01() runs on ItsIvim { // Local variables const integer c_maxLoopValue := 10; timer t_minTransInterval := PICS_T_GENIVIMMIN * 0.90; var integer v_counter := 0; var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent(float2int(PICS_T_GENIVIMMIN))); ivimPort.clear; tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, -, IviStatus_new_ ))))) { tc_ac.stop; t_minTransInterval.start; log("*** " & testcasename() & ": INFO: Initial conditions: First IVIM received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Initial conditions: IVIM not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } // Test Body tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer )))) { tc_ac.stop; if (t_minTransInterval.running) { log("*** " & testcasename() & ": FAIL: IVIM received BEFORE expiry of the minimum generation timer interval ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { v_counter := v_counter + 1; if (v_counter < c_maxLoopValue) { t_minTransInterval.start; repeat; } else { log("*** " & testcasename() & ": PASS: Generation of IVIMs was successful ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } } [] t_minTransInterval.timeout { repeat; } [] tc_ac.timeout { t_minTransInterval.stop; log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GFQ_TI_01 function f_IS_IVI_GEN_GFQ_TI_02() runs on ItsIvim { // Local variables const integer c_maxLoopValue := 10; timer t_maxTransInterval := PICS_T_GENIVIMMAX * 1.10; var integer v_counter := 0; var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent(float2int(PICS_T_GENIVIMMIN))); ivimPort.clear; tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, -, IviStatus_new_ ))))) { tc_ac.stop; t_maxTransInterval.start; log("*** " & testcasename() & ": INFO: Initial conditions: First IVIM received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Initial conditions: IVIM not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } // Test Body tc_ac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer )))) { tc_ac.stop; t_maxTransInterval.stop; t_maxTransInterval.start; v_counter := v_counter + 1; if (v_counter < c_maxLoopValue) { t_maxTransInterval.start; repeat; } else { log("*** " & testcasename() & ": PASS: Generation of IVIMs was successful ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": FAIL: No IVIM received BEFORE expiry of the maximum generation timer interval ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { t_maxTransInterval.stop; log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_GFQ_TI_02 } // End of group iviGenerationFrequency group iviEventRepetition { function f_IS_IVI_GEN_EVRP_BV_01() runs on ItsIvim { // Local variables const integer c_maxLoopValue := 10; const TimestampIts c_repetitionInterval := c_duration_4sec * 1000; // In millseconds var integer v_counter := 0; var boolean v_ivimReceived := false; const float c_minTransInterval := int2float(c_repetitionInterval) * 0.85; const float c_maxTransInterval := int2float(c_repetitionInterval) * 1.15; var Times v_times := {}; var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent(c_repetition_interval_deactivated)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, c_duration_4sec * 1000)); tc_ac.start(60.0); ivimPort.clear; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ ))))) { v_times[v_counter] := tc_ac.read; v_counter := v_counter + 1; if (v_counter < c_maxLoopValue) { log("######## Repeat: ", v_counter); repeat; } } [] tc_ac.timeout { log("*** " & testcasename() & ": FAIL: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } log("######## After message loop, v_counter: ", v_counter); log("######## ", c_minTransInterval); log("######## ", c_maxTransInterval); if (v_counter == c_maxLoopValue) { for (v_counter := 1; v_counter < c_maxLoopValue; v_counter := v_counter + 1) { var float v_timeDiff := (v_times[v_counter] - v_times[v_counter - 1]) * 1000.0; log("######## In loop: v_timeDiff: ", v_timeDiff); log("match operation: ", match(v_timeDiff, (c_minTransInterval .. c_maxTransInterval))); if (not match(v_timeDiff, (c_minTransInterval .. c_maxTransInterval))) { log("*** " & testcasename() & ": FAIL: IUT did NOT send IVIM with respect to the 'repetition interval' RI_1. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); break; } } if (v_counter == c_maxLoopValue) { log("*** " & testcasename() & ": PASS: IUT sends IVIM with respect to the 'repetition interval' RI_1. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVRP_BV_01 function f_IS_IVI_GEN_EVRP_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_UPDATE) { log("*** " & testcasename() & ": PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utIvimUpdateEvent(v_iviIdentificationNumber, c_repetition_interval_deactivated)); ivimPort.clear; tc_noac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_update_ ))))) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: No more IVIM shall be sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No more IVIM was sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_EVRP_BV_02 } // End of group iviEventRepetition group iviEventTermination { function f_IS_IVI_GEN_EVTR_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; var integer v_timeOffset := 4 * c_duration_4sec * 1000; //at most 4 repetitions // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent(c_duration_4sec * 1000, -, f_getCurrentTime() + v_timeOffset)); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_sleep(int2float(v_timeOffset / 1000/* in seconds*/)); ivimPort.clear; //remove repeated events tc_noac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ ))))) { log("*** " & testcasename() & ": FAIL: No more IVIM shall be sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No more IVIM was sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_EVTR_BV_01 function f_IS_IVI_GEN_EVTR_BV_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTerminateEvent(m_utEventCancellation(v_iviIdentificationNumber)); ivimPort.clear; //remove repeated events tc_noac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( -, v_iviIdentificationNumber, IviStatus_new_ ))))) { log("*** " & testcasename() & ": INFO: No more IVIM shall be sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No more IVIM was sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_EVTR_BV_02 function f_IS_IVI_GEN_EVTR_BV_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_CANCELLATION) { log("*** " & testcasename() & ": PICS_IVIM_CANCELLATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( PX_PROVIDER, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTerminateEvent(m_utEventCancellation(v_iviIdentificationNumber)); tc_noac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer_timestamp( -, v_iviIdentificationNumber, IviStatus_cancellation_, ? ))))) { log("*** " & testcasename() & ": INFO: No more IVIM shall be sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No more IVIM was sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_EVTR_BV_03 function f_IS_IVI_GEN_EVTR_BV_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var IvimInd v_rcvdMsg; // Test control if (not PICS_IVIM_NEGATION) { log("*** " & testcasename() & ": PICS_IVIM_NEGATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); f_awaitIviMessage( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( PX_PROVIDER, v_iviIdentificationNumber, IviStatus_new_ )))), v_rcvdMsg ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTerminateEvent(m_utEventCancellation(v_iviIdentificationNumber)); tc_noac.start; alt { [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer( PX_PROVIDER, v_iviIdentificationNumber, IviStatus_negation_ ))))) { log("*** " & testcasename() & ": INFO: No more IVIM shall be sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No more IVIM was sent. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_EVTR_BV_04 } // End of group iviEventTermination group iviCommunication { function f_IS_IVI_GEN_COM_BV_01() runs on ItsIvim { // Local variables const UInt8 c_gnNhBtpB := 2; var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithGnParameters( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer )), c_gnNhBtpB )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM encapsultated in BTP-B packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimIndWithGnParameters( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer )), omit )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: no GN NH information in IvimInd. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected IVIM received, but not encapsulated in BTP-B packet. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_COM_BV_01 // function f_IS_IVI_COMM_BV_01_02() runs on ItsIvim { // // // Local variables // const UInt16 c_gnNhBtpBPort := 2006; // var IviIdentificationNumber v_iviIdentificationNumber; // // // Test control // if (not PICS_IVIM_GENERATION) { // log("*** " & testcasename() & ": PICS_IVIM_GENERATION 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); // // // Test Body // v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); // // tc_ac.start; // alt { // [] ivimPort.receive( // mw_ivimIndWithBtpParameters( // mw_anyIvimPdu( // mw_itsPduHeader, // mw_ivimStructure( // mw_iviManagementContainer // )), // c_gnNhBtpBPort, // 0 // )) { // tc_ac.stop; // log("*** " & testcasename() & ": Expected IVIM encapsultated in BTP packet with port value 2006 received. ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // } // [] ivimPort.receive( // mw_ivimInd( // mw_anyIvimPdu( // mw_itsPduHeader, // mw_ivimStructure( // mw_iviManagementContainer // )))) { // tc_ac.stop; // log("*** " & testcasename() & ": FAIL: Expected IVIM received, but not addressed to the correct destination port. ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // } // [] ivimPort.receive( // mw_ivimInd( // mw_anyIvimPdu // )) { // tc_ac.stop; // log("*** " & testcasename() & ": FAIL: Expected IVIM received, but not encapsulated in BTP-B packet. ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // } // [] tc_ac.timeout { // log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); // f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); // } // } // // // Postamble // f_poCancelEvent(e_iut, v_iviIdentificationNumber); // f_cfDown(); // // } // End of function f_IS_IVI_COMM_BV_01_02 function f_IS_IVI_GEN_COM_BV_02 () runs on ItsIvim { // Local variables const UInt8 c_gnHtUnc := 2; var IviIdentificationNumber v_iviIdentificationNumber; // Test control if (not PICS_IVIM_GENERATION) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithGnParameters( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer )), c_gnHtUnc )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected IVIM encapsulated in GBC packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] ivimPort.receive( mw_ivimIndWithGnParameters( mw_anyIvimPdu( mw_itsPduHeader, mw_ivimStructure( mw_iviManagementContainer )), omit )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: no GN NH information in IvimInd. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] ivimPort.receive( mw_ivimInd( mw_anyIvimPdu )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected IVIM received, but not encapsulated in BTP-B packet. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_COM_BV_02 } // End of group iviCommunication group iviSecurityParameters{ function f_IS_IVI_GEN_SEC_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED 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); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent())); tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, -, c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received secured IVI PDU header.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_SEC_BV_01 function f_IS_IVI_GEN_SEC_BV_02() runs on ItsIvim { // TODO to be moved to ETSI AtsSecurity } // End of function f_IS_IVI_GEN_SEC_BV_02 function f_IS_IVI_GEN_SSP_BV_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received secured IVI PDU header.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: IVIM not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poCancelEvent(e_iut, v_iviIdentificationNumber); f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BV_01 function f_IS_IVI_GEN_SSP_BV_02() runs on ItsIvim { // TODO to be moved to ETSI AtsSecurity } // End of function f_IS_IVI_GEN_SSP_BV_02 function f_IS_IVI_GEN_SSP_BV_03() runs on ItsIvim { // TODO to be moved to ETSI AtsSecurity } // End of function f_IS_IVI_GEN_SSP_BV_03 function f_IS_IVI_GEN_SSP_BV_04() runs on ItsIvim { // TODO to be moved to ETSI AtsSecurity } // End of function f_IS_IVI_GEN_SSP_BV_04 function f_IS_IVI_GEN_SSP_BV_05() runs on ItsIvim { // TODO to be moved to ETSI AtsSecurity } // End of function f_IS_IVI_GEN_SSP_BV_05 function f_IS_IVI_GEN_SSP_BV_06() runs on ItsIvim { // TODO to be moved to ETSI AtsSecurity } // End of function f_IS_IVI_GEN_SSP_BV_06 function f_IS_IVI_GEN_SSP_BO_01() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble //f_prInitialState(); v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(m_utTriggerEvent()); tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured IVIM received.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BO_01 function f_IS_IVI_GEN_SSP_BO_02() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and (PICS_IVIM_RSCODE_VIENNACONV or PICS_IVIM_RSCODE_SAEJ2540))) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND (PICS_IVIM_RSCODE_VIENNACONV OR PICS_IVIM_RSCODE_SAEJ2540) required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble //f_prInitialState(); v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//TODO check how to trigger GiC General Application Containers tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured IVIM received.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BO_02 function f_IS_IVI_GEN_SSP_BO_03() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_ISO14823)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble //f_prInitialState(); v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//TODO check how to trigger GiC General Application Containers tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured IVIM received.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BO_03 function f_IS_IVI_GEN_SSP_BO_04() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_ISO14823)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble //f_prInitialState(); v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//TODO check how to trigger GiC General Application Containers tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured IVIM received.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BO_04 function f_IS_IVI_GEN_SSP_BO_05() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED and (PICS_IVIM_HAS_ROAD_CFG_CONTAINER or PICS_IVIM_HAS_TEXT_CONTAINER or PICS_IVIM_HAS_LAYOUT_CONTAINER))) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED AND (PICS_IVIM_HAS_ROAD_CFG_CONTAINER OR PICS_IVIM_HAS_TEXT_CONTAINER OR PICS_IVIM_HAS_LAYOUT_CONTAINER) required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble //f_prInitialState(); v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//TODO check how to trigger Road Configuration, Text or Layout Containers tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured IVIM received.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BO_05 function f_IS_IVI_GEN_SSP_BO_06() runs on ItsIvim { // Local variables var IviIdentificationNumber v_iviIdentificationNumber; var FncRetCode v_ret; var octetstring v_iviSpValue := '000000'O; var IvimInd v_rcvdMsg; // Test control if (not (PICS_IVIM_GENERATION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_GENERATION AND PICS_IS_IUT_SECURED) required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble //f_prInitialState(); v_ret := f_prInitialState(-, "CERT_IVI_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_iviIdentificationNumber := f_utTriggerEvent(valueof(m_utTriggerEvent(omit,-,-,{PX_ZONEID_1},-)));//TODO check how to trigger Road Configuration, Text or Layout Containers tc_ac.start; alt { [] ivimPort.receive( mw_ivimIndWithSecurityParameters( mw_ivimPdu, oct2bit('01'O&v_iviSpValue&'00000000000000000000000000000000000000000000000000000000'O), c_its_aid_IVI )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured IVIM received.***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_cfDown(); } // End of function f_IS_IVI_GEN_SSP_BO_06 } // End of group iviSecurityParameters } // End of group iviMessageTransmission group iviMessageReception { /** * @desc TP Function for TC_IS_IVI_RCV_MSGF_BV_01 */ function f_IS_IVI_RCV_MSGF_BV_01() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( {m_gicPart_relavanceZoneId} ) , m_iviContainer_geographicLocationContainer( m_geographicLocationContainer( m_referencePosition_sample, {m_glcPart(PX_ZONEID_1)} ) ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_MSGF_BV_01 /** * @desc TP Function for TC_IS_IVI_RCV_DATA_BV_01 */ function f_IS_IVI_RCV_DATA_BV_01() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( {m_gicPart_relavanceZoneId_detectionZoneId_direction} ) , m_iviContainer_geographicLocationContainer( m_geographicLocationContainer( m_referencePosition_sample, {m_glcPart(PX_ZONEID_1), m_glcPart(PX_ZONEID_1) } ) ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_DATA_BV_01 /** * @desc TP Function for TC_IS_IVI_RCV_DATA_BV_02 */ function f_IS_IVI_RCV_DATA_BV_02() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( {m_gicPart_relavanceZoneId} ) , m_iviContainer_geographicLocationContainer( m_geographicLocationContainer( m_referencePosition_sample, {m_glcPart(PX_ZONEID_1, -, -, -, m_zone_segment)} //zone as segment ) ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_DATA_BV_02 /** * @desc TP Function for TC_IS_IVI_RCV_DATA_BV_03 */ function f_IS_IVI_RCV_DATA_BV_03() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( {m_gicPart_relavanceZoneId} ) , m_iviContainer_geographicLocationContainer( m_geographicLocationContainer( m_referencePosition_sample, {m_glcPart(PX_ZONEID_1, -, -, -, m_zone_polygonalLine)} //zone as area ) ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_DATA_BV_03 /** * @desc TP Function for TC_IS_IVI_RCV_DATA_BV_04 */ function f_IS_IVI_RCV_DATA_BV_04() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( {m_gicPart_relavanceZoneId} ) , m_iviContainer_geographicLocationContainer( m_geographicLocationContainer( m_referencePosition_sample, {m_glcPart(PX_ZONEID_1, -, 55, //hardcoded value for zone Extension -, m_zone_polygonalLine)} ) ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_DATA_BV_04 /** * @desc TP Function for TC_IS_IVI_RCV_DATA_BV_05 */ function f_IS_IVI_RCV_DATA_BV_05() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( {m_gicPart_relavanceZoneId} ) , m_iviContainer_geographicLocationContainer( m_geographicLocationContainer( m_referencePosition_sample, {m_glcPart(PX_ZONEID_1, -, 55, //hardcoded value for zone Extension -, m_zone_polygonalLine)} ) ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_DATA_BV_05 /** * @desc TP Function for TC_IS_IVI_RCV_EVUP_BV_01 */ function f_IS_IVI_RCV_EVUP_BV_01() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_, -, omit )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_EVUP_BV_01 /** * @desc TP Function for TC_IS_IVI_RCV_EVUP_BV_02 */ function f_IS_IVI_RCV_EVUP_BV_02() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not PICS_IVIM_RECEPTION) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION 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); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), PX_IVI_ID, IviStatus_new_, -, omit )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_EVUP_BV_02 /** * @desc TP Function for TC_IS_IVI_RCV_EVUP_BV_03 */ function f_IS_IVI_RCV_EVUP_BV_03() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IVIM_UPDATE)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); ivimPort.send( valueof(m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )) )) ) )) ); f_sleep(1.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer(//time stamp is calculated in the template with function f_getProvider(), PX_IVI_ID, IviStatus_update_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_EVUP_BV_03 /** * @desc TP Function for TC_IS_IVI_RCV_EVUP_BV_04 */ function f_IS_IVI_RCV_EVUP_BV_04() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; var TimestampIts v_timeStamp := f_getCurrentTime(); // Test control if (not (PICS_IVIM_RECEPTION and PICS_IVIM_UPDATE)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IVIM_UPDATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); ivimPort.send( valueof(m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), PX_IVI_ID, IviStatus_update_, -, -, v_timeStamp )) )) ) )) ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer(//time stamp is calculated in the template with function f_getProvider(), PX_IVI_ID, IviStatus_update_, -, -, v_timeStamp )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_EVUP_BV_04 /** * @desc TP Function for TC_IS_IVI_RCV_EVUP_BV_05 */ function f_IS_IVI_RCV_EVUP_BV_05() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IVIM_CANCELLATION)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IVIM_CANCELLATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); ivimPort.send( valueof(m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )) )) ) )) ); f_sleep(1.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer(//time stamp is calculated in the template with function f_getProvider(), PX_IVI_ID, IviStatus_cancellation_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_EVUP_BV_05 /** * @desc TP Function for TC_IS_IVI_RCV_EVUP_BV_06 */ function f_IS_IVI_RCV_EVUP_BV_06() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IVIM_NEGATION)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IVIM_NEGATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble f_prInitialState(); ivimPort.send( valueof(m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )) )) ) )) ); f_sleep(1.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer(//time stamp is calculated in the template with function f_getProvider(), PX_IVI_ID, IviStatus_negation_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_EVUP_BV_06 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BV_01 */ function f_IS_IVI_RCV_SSP_BV_01() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BV_01 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_01 */ function f_IS_IVI_RCV_SSP_BO_01() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_01 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_02 */ function f_IS_IVI_RCV_SSP_BO_02() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_02 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_03 */ function f_IS_IVI_RCV_SSP_BO_03() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; var template RSCode v_rsCode[3]; //v_rsCode[0] := m_rSCode_itisCodes; //Dummy value v_rsCode[1] := m_rSCode_viennaConvention; v_rsCode[2] := m_rSCode_itisCodes; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and (PICS_IVIM_RSCODE_VIENNACONV or PICS_IVIM_RSCODE_SAEJ2540))) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND (PICS_IVIM_RSCODE_VIENNACONV OR PICS_IVIM_RSCODE_SAEJ2540) required for executing the TC ***"); setverdict(inconc); stop; } if (PX_RSCODE_VA<1 or PX_RSCODE_VA>2) { log("*** " & testcasename() & ": Please set PX_RSCODE_VA to 1 for viennaConvention or 2 for itisCodes ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( { m_gicPart_basic( 2,//trafficRelatedInformationMessages (2) { valueof(v_rsCode[PX_RSCODE_VA]) } ) } ) } ) ) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_03 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_04 */ function f_IS_IVI_RCV_SSP_BO_04() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; var template RSCode v_rsCode[7]; //v_rsCode[0] := m_rSCode_itisCodes; //Dummy value v_rsCode[1] := m_rSCode_iso14823_trafficSignPictogram; v_rsCode[2] := m_rSCode_iso14823_trafficSignPictogram(regulatory); v_rsCode[3] := m_rSCode_iso14823_trafficSignPictogram(informative); v_rsCode[4] := m_rSCode_iso14823_publicFacilitiesPictogram; v_rsCode[5] := m_rSCode_iso14823_ambientOrRoadConditionPictogram; v_rsCode[6] := m_rSCode_iso14823_ambientOrRoadConditionPictogram(roadCondition); // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_ISO14823)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 required for executing the TC ***"); setverdict(inconc); stop; } if (PX_RSCODE_VA<1 or PX_RSCODE_VA>6) { log("*** " & testcasename() & ": Please set PX_RSCODE_VA between 1 and 6 for itisCodes ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( { m_gicPart_basic( 2,//trafficRelatedInformationMessages (2) {valueof(v_rsCode[PX_RSCODE_VA])} ) } ) } ) ) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_04 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_05 */ function f_IS_IVI_RCV_SSP_BO_05() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and PICS_IVIM_RSCODE_ISO14823)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_generalIviContainer( { m_gicPart_laneStatus( 2,//trafficRelatedInformationMessages (2) {m_rSCode_iso14823_trafficSignPictogram}, 5 //provisionallyOpen (5) ) } ) } ) ) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_05 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_06 */ function f_IS_IVI_RCV_SSP_BO_06() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED and (PICS_IVIM_HAS_ROAD_CFG_CONTAINER or PICS_IVIM_HAS_TEXT_CONTAINER or PICS_IVIM_HAS_LAYOUT_CONTAINER))) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED AND PICS_IVIM_RSCODE_ISO14823 required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_new_ )), {m_iviContainer_roadConfigurationContainer(//RoadConfiguration Container { m_rccPart( {PX_ZONEID_1}, //zoneId urban_NoStructuralSeparationToOppositeLanes, //enum value urban-NoStructuralSeparationToOppositeLanes {m_laneInformation} ) } ), m_iviContainer_textContainer(//Text Container - if needed it can be splitted and PIXIT selection can be used for different container type { m_tcPart_basic( {PX_ZONEID_1}, //relavanceZoneId '00'O //data OCTET STRING ) } ), m_iviContainer_layoutContainer(//Layout Container - if needed it can be splitted and PIXIT selection can be used for different container type m_layoutContainer ) } )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_06 /** * @desc TP Function for TC_IS_IVI_RCV_SSP_BO_07 */ function f_IS_IVI_RCV_SSP_BO_07() runs on ItsIvim { // Local variables var IvimReq v_ivimReq; var FncRetCode v_ret; var integer i; // Test control if (not (PICS_IVIM_RECEPTION and PICS_IS_IUT_SECURED)) { log("*** " & testcasename() & ": PICS_IVIM_RECEPTION AND PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Test adapter configuration // Preamble v_ret := f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, v_ret); // Test Body v_ivimReq := valueof( m_ivimReq( m_ivimStructurePdu( valueof(m_ivimStructure( valueof(m_iviManagementContainer( f_getProvider(), 1, IviStatus_negation_ )) )) ) ) ); ivimPort.send(v_ivimReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_ivimReq.msgOut, vc_utEvents[i].iviMsg); i:=i+1) { // empty on purpose } if(lengthof(vc_utEvents)==0) { log("*** " & testcasename() & ": PASS: IVIM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: IVIM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_IVI_RCV_SSP_BO_07 } // End of group iviMessageReception } // End of module ItsIvim_TpFunctions ats_ts103191-3-devel/ItsMapemSpatem_TestControl.ttcn 0000664 0000000 0000000 00000014602 14553501104 0022413 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF484 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsMapemSpatem/ItsMapemSpatem_TestControl.ttcn $ * $Id: ItsMapemSpatem_TestControl.ttcn 2639 2016-12-14 09:22:07Z garciay $ * @desc Test Control file for MAPEM SPATEM * @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 ItsMapemSpatem_TestControl { // LibItsMapemSpatem import from LibItsMapemSpatem_Pics all; // ATS MAPSpat import from ItsMapem_TestCases all; import from ItsSpatem_TestCases all; // Test Execution control { if (PICS_MAPEM_GENERATION) { execute(TC_IS_RLT_GEN_MSGF_BV_01 ()); execute(TC_IS_RLT_GEN_MSGF_BV_02 ()); execute(TC_IS_RLT_GEN_MSGF_BV_03 ()); execute(TC_IS_RLT_GEN_MSGF_BV_04 ()); execute(TC_IS_RLT_GEN_MSGF_BV_05 ()); execute(TC_IS_RLT_GEN_MSGF_BV_06 ()); execute(TC_IS_RLT_GEN_MSGF_BV_07 ()); execute(TC_IS_RLT_GEN_MSGF_BV_08 ()); if (PICS_PEDESTRIAN_MANOEUVRES) { execute(TC_IS_RLT_GEN_MSGF_BV_09 ()); } if (PICS_SPECIALIZED_CARS_MANOEUVRES) { execute(TC_IS_RLT_GEN_MSGF_BV_10 ()); } execute(TC_IS_RLT_GEN_MSGF_BV_11 ()); if (PICS_MAPEM_HAS_LANE_WIDTH) { execute(TC_IS_RLT_GEN_MSGF_BV_12 ()); execute(TC_IS_RLT_GEN_MSGF_BV_13 ()); } execute(TC_IS_RLT_GEN_MSGF_BV_14 ()); execute(TC_IS_RLT_GEN_MSGF_BV_15 ()); execute(TC_IS_RLT_GEN_MSGF_BV_16 ()); if (PICS_ETSI_STRICT) { execute(TC_IS_RLT_GEN_MSGF_BV_17 ()); } if (PICS_SPATEM_GENERATION) { execute(TC_IS_RLT_GEN_COM_BV_01 ()); // execute(TC_IS_RLT_GEN_COM_BV_02 ()); } execute(TC_IS_RLT_GEN_COM_BV_03 ()); if (PICS_SHORT_RANGE) { execute(TC_IS_RLT_GEN_COM_BV_04 ()); } if (PICS_IS_IUT_SECURED) { execute(TC_IS_RLT_GEN_SEC_BV_01 ()); execute(TC_IS_RLT_GEN_SEC_BV_02 ()); execute(TC_IS_RLT_GEN_SSP_BV_01 ()); execute(TC_IS_RLT_GEN_SSP_BV_02 ()); execute(TC_IS_RLT_GEN_SSP_BO_03 ()); execute(TC_IS_RLT_GEN_SSP_BV_04 ()); execute(TC_IS_RLT_GEN_SSP_BO_05 ()); } } if (PICS_MAPEM_RECEPTION) { if (PICS_MAPEM_TRANSMISSION_RATE) { execute(TC_IS_RLT_GEN_RATE_BV_01 ()); } execute(TC_IS_RLT_GEN_RCV_BV_03 ()); if (PICS_IS_IUT_SECURED) { execute(TC_IS_RLT_RCV_SEC_BV_01 ()); execute(TC_IS_RLT_RCV_SEC_BO_02 ()); execute(TC_IS_RLT_RCV_SEC_BO_03 ()); execute(TC_IS_RLT_RCV_SEC_BO_04 ()); } } if (PICS_SPATEM_GENERATION) { execute(TC_IS_TLM_GEN_MSGF_BV_01 ()); execute(TC_IS_TLM_GEN_MSGF_BV_02 ()); execute(TC_IS_TLM_GEN_MSGF_BV_03 ()); execute(TC_IS_TLM_GEN_MSGF_BV_04 ()); execute(TC_IS_TLM_GEN_MSGF_BV_05 ()); execute(TC_IS_TLM_GEN_MSGF_BV_06 ()); if (PICS_SPATEM_PEDESTRIAN_MANOEUVRES) { execute(TC_IS_TLM_GEN_MSGF_BV_07 ()); } execute(TC_IS_TLM_GEN_MSGF_BV_08 ()); if (PICS_SPATEM_HAS_TIMING) { execute(TC_IS_TLM_GEN_MSGF_BV_09 ()); } if (PICS_SPATEM_PRIORITIZATION ) { execute(TC_IS_TLM_GEN_MSGF_BV_10 ()); } if (PICS_SPATEM_PEDESTRIAN_MANOEUVRES ) { execute(TC_IS_TLM_GEN_MSGF_BV_11 ()); } if (PICS_SPATEM_HAS_OPTIMAL_SPEED ) { execute(TC_IS_TLM_GEN_MSGF_BV_12 ()); } if (PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED ) { execute(TC_IS_TLM_GEN_MSGF_BV_13 ()); } if (PICS_SPATEM_HAS_EGRESS_QUEUE ) { execute(TC_IS_TLM_GEN_MSGF_BV_14 ()); } execute(TC_IS_TLM_GEN_EVGN_BV_01 ()); execute(TC_IS_TLM_GEN_EVGN_BV_02 ()); execute(TC_IS_TLM_GEN_EVGN_BV_03 ()); execute(TC_IS_TLM_GEN_EVGN_BV_04 ()); if (PICS_SHORT_RANGE) { execute(TC_IS_TLM_GEN_COM_BV_01 ()); execute(TC_IS_TLM_GEN_COM_BV_02 ()); } execute(TC_IS_TLM_GEN_COM_BV_03 ()); if (PICS_IS_IUT_SECURED) { execute(TC_IS_TLM_GEN_SEC_BV_01 ()); execute(TC_IS_TLM_GEN_SEC_BV_02 ()); execute(TC_IS_TLM_GEN_SSP_BV_01 ()); execute(TC_IS_TLM_GEN_SSP_BV_02 ()); execute(TC_IS_TLM_GEN_SSP_BO_03 ()); execute(TC_IS_TLM_GEN_SSP_BV_04 ()); execute(TC_IS_TLM_GEN_SSP_BO_05 ()); execute(TC_IS_TLM_GEN_SSP_BV_06 ()); execute(TC_IS_TLM_GEN_SSP_BV_07 ()); execute(TC_IS_TLM_GEN_SSP_BO_08 ()); execute(TC_IS_TLM_GEN_SSP_BO_09 ()); } if (PICS_SPATEM_TRANSMISSION_RATE) { execute(TC_IS_TLM_GEN_RATE_BV_01 ()); } } if (PICS_SPATEM_RECEPTION) { execute(TC_IS_TLM_RCV_MSGF_BV_01 ()); if (PICS_IS_IUT_SECURED) { execute(TC_IS_TLM_RCV_SEC_BV_01 ()); execute(TC_IS_TLM_RCV_SEC_BO_01 ()); execute(TC_IS_TLM_RCV_SSP_BV_01 ()); execute(TC_IS_TLM_RCV_SSP_BO_02 ()); execute(TC_IS_TLM_RCV_SSP_BV_03 ()); execute(TC_IS_TLM_RCV_SSP_BO_04 ()); execute(TC_IS_TLM_RCV_SSP_BV_05 ()); execute(TC_IS_TLM_RCV_SSP_BO_06 ()); } } } // End of 'control' statement } // End of module ItsMapemSpatem_TestControl ats_ts103191-3-devel/ItsMapem_TestCases.ttcn 0000664 0000000 0000000 00000231133 14553501104 0020657 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF 002 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsMapemSpatem/ItsMapem_TestCases.ttcn $ * $Id: ItsMapem_TestCases.ttcn 2646 2016-12-16 07:35:58Z garciay $ * @desc Testcases for RLT Service * @reference ETSI TS 103 301 v1.3.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 ItsMapem_TestCases { // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; // ItsMapemSpatem import from ItsMapem_TpFunctions all; testcase TC_IS_RLT_xxx_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_TC_IS_RLT_xxx_BV_01 (); } group mapeMessageDissemination { group mapeMessageFormat { /** * @desc Check that protocolVersion is set to 1 and messageID is set to 4 *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * } * then { * the IUT sends a valid MAPEM * containing ITS PDU header * containing protocolVersion * indicating value '1' * and containing messageID * indicating value '5' * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 5.3 */ testcase TC_IS_RLT_GEN_MSGF_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_01(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_01 /** * @desc Check that the intersection information revision number is changed when the intersection * configuration is changed. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT already sent MAPEM * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing revision * indicating value R * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing new configuration of the intersection * } * then { * the IUT sends MAPEM * containing id of type IntersectionReferenceID * indicating ID * and containing the element of type IntersectionGeometry * containing revision * indicating value R+1 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_02 * @reference CEN ISO/TS 19091 [4] clause 6.5.13 */ testcase TC_IS_RLT_GEN_MSGF_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_02(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_02 /** * @desc Check that the intersection information revision number is not changed when the * intersection configuration is still the same. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT already sent MAPEM * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing revision * indicating value R * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing the same configuration of the intersection * } * then { * the IUT sends MAPEM * containing id of type IntersectionReferenceID * indicating ID * and containing the element of type IntersectionGeometry * containing revision * indicating value R * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_03 * @reference CEN ISO/TS 19091 [4] clause 6.5.13 */ testcase TC_IS_RLT_GEN_MSGF_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_03(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_03 /** * @desc Check that RLT Service transmits MAPEM with the valid connection trajectories. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * containing MapData data element * containing intersections * containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing regional * containing elements of type ConnectionTrajectory * } * then { * the first node of the trajectory * indicate the position related to the node of ingress lane * and the last node of the trajectory * indicate the position identical to the first node of the connected egress lane * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_04 * @reference CEN ISO/TS 19091 [4] clause G.8.2.3.4 */ testcase TC_IS_RLT_GEN_MSGF_BV_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_04(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_04 /** * @desc Check that reference point altitude is encoded using regional extension. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing reference position * containing altitude information ALTITUDE * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing refPoint * not containing elevation * and containing regional * containing element of type Position3D-addGrpC * containing altitude * indicating ALTITUDE * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_05 * @reference CEN ISO/TS 19091 [4] clause G.8.2.6 */ testcase TC_IS_RLT_GEN_MSGF_BV_05 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_05(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_05 /** * @desc Check that each lane of the intersection contains a unique number. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing multiple lines * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneID * indicating unique value * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_06 * @reference CEN ISO/TS 19091 [4] clause 6.5.8 */ testcase TC_IS_RLT_GEN_MSGF_BV_06 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_06(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_06 /** * @desc Check that the number of nodes needed to represent the path of a lane is selected such that * the perpendicular distance between the lane centre line and the straight line connecting the * two consecutive nodes is less than 1 m. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing multiple lines * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing enough elements * indicating precise lane path * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_07 * @reference CEN ISO/TS 19091 [4] clause 6.5.9 */ testcase TC_IS_RLT_GEN_MSGF_BV_07 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_07(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_07 /** * @desc Check that each vehicular lane of the intersection includes only allowed manoeuvres and * vehicle types. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing vehicle lane * containing laneID (LANE_ID) * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneID * indicating LANE_ID * and containing laneAttributes * containing laneType * containing vehicle * not indicating any flags * or indicating isVehicleFlyOverLane * or indicating hovLaneUseOnly * and containing sharedWith * not indicating any flags * indicating otherNonMotorizedTrafficTypes (2) * and/or indicating pedestriansTraffic (6) * and/or indicating cyclistVehicleTraffic (7) * and/or indicating pedestrianTraffic (9) * and/or containing connectsTo * containing elements of type Connection * containing connectingLane * containing maneuver * indicating maneuverStraightAllowed * or indicating maneuverLeftAllowed * or indicating maneuverRightAllowed * or indicating maneuverUTurnAllowed * or indicating maneuverLeftTurnOnRedAllowed * or indicating maneuverRightTurnOnRedAllowed * or not containing maneuvre * or containing element of type GenericLane * containing laneID * indicating LANE_ID * and containing overlays * indicating list of lanes to be used for the present TP * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_08 * @reference CEN ISO/TS 19091 [4] clause 6.5.10 */ testcase TC_IS_RLT_GEN_MSGF_BV_08 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_08(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_08 /** * @desc Check that each pedestrian lane of the intersection includes only allowed manoeuvres and * user types. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing pedestrian lane * containing laneID (LANE_ID) * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneID * indicating LANE_ID * and containing laneAttributes * containing laneType * containing crosswalk * or containing bikeLane * or containing sidewalk * and containing sharedWith * indicating otherNonMotorizedTrafficTypes (2) * or indicating pedestriansTraffic (6) * or indicating cyclistVehicleTraffic (7) * or indicating pedestrianTraffic (9) * or not indicating any value * and containing connectsTo * containing elements of type Connection * containing connectingLane * containing maneuver * indicating maneuverStraightAllowed * or not containing maneuver * or containing element of type GenericLane * containing laneID * indicating LANE_ID * and containing overlays * indicating list of lanes to be used for the present TP * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_09 * @reference CEN ISO/TS 19091 [4] clause 6.5.11 */ testcase TC_IS_RLT_GEN_MSGF_BV_09 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_09(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_09 /** * @desc Check that each special lane of the intersection includes only allowed manoeuvres and user * types. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_SPECIALIZED_CARS_MANOEUVRES * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing special transport lane * containing laneID (LANE_ID) * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneID * indicating LANE_ID * and containing laneAttributes * containing laneType * containing vehicle * indicating hovLaneUseOnly * or indicating restrictedToBusUse * or indicating restrictedFromPublicUse * or containing trackedVehicle * and containing connectsTo * containing elements of type Connection * containing connectingLane * containing maneuver * indicating maneuverStraightAllowed * or indicating “proceed after stopping� * or not containing maneuver * or containing element of type GenericLane * containing laneID * indicating LANE_ID * and containing overlays * indicating list of lanes to be used for the present TP * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_10 * @reference CEN ISO/TS 19091 [4] clause 6.5.12 */ testcase TC_IS_RLT_GEN_MSGF_BV_10 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_10(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_10 /** * @desc Check that each crosswalk lane of the intersection does not have ingress or egress * approaches and includes only valid user types. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing crosswalk lane * containing laneID (LANE_ID) * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneSet * containing element of type GenericLane * containing laneID * indicating LANE_ID * and containing laneAttributes * containing laneType * containing crosswalk * and containing sharedWith * indicating otherNonMotorizedTrafficTypes (2) * or indicating pedestriansTraffic (6) * or indicating cyclistVehicleTraffic (7) * or indicating trackedVehicleTraffic (8) * or indicating pedestrianTraffic (9) * or not indicating any value * and not containing ingressApproach * and not containing egressApproach * or containing element of type GenericLane * containing laneID * indicating LANE_ID * and containing overlays * indicating list of lanes to be used for the present TP * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_11 * @reference CEN ISO/TS 19091 [4] clause 6.5.14 */ testcase TC_IS_RLT_GEN_MSGF_BV_11 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_11(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_11 /** * @desc Check that each lane information contain lane width or default lane width is provided. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_MAPEM_HAS_LANE_WIDTH * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersections * containing lanes * } * then { * the IUT sends MAPEM * containing map.intersections * containing the element of type IntersectionGeometry * containing laneWidth * indicating default lane with * or containing laneSet * containing all elements of type GenericLane * containing nodeList * containing nodes * containing all elements of type NodeXY * containing attributes * containing dWidth * indicating lane with at the point * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_12 * @reference CEN ISO/TS 19091 [4] clause 6.5.15 */ testcase TC_IS_RLT_GEN_MSGF_BV_12 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_12(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_12 /** * @desc Check that default lane width is not included in the RTL message if each lane information contains lane width. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_MAPEM_HAS_LANE_WIDTH * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing map.intersections * containing all elements of type IntersectionGeometry * containing laneSet * containing all elements of type GenericLane * containing nodeList * containing nodes * containing all elements of type NodeXY * containing attributes * containing dWidth * indicating lane with at the point * } * then { * the IUT sends MAPEM * containing map.intersections * containing all elements of type IntersectionGeometry * not containing laneWidth * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_13 * @reference CEN ISO/TS 19091 [4] clause 6.5.16 */ testcase TC_IS_RLT_GEN_MSGF_BV_13 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_13(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_13 /** * @desc Check that possible manoevers are encoded in connectsTo data element. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * the RLT service is requested to send a MAPEM * containing possible manoevers information * } * then { * the IUT sends MAPEM * containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing DE connectsTo * containing information about possible manoeuvers * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_14 * @reference CEN ISO/TS 19091 [4] clauses 6.5.17, G.8.2.3.2 */ testcase TC_IS_RLT_GEN_MSGF_BV_14 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_14(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_14 /** * @desc An IUT shall broadcast the signal group identifier, the lanes/approaches associated with the * signal group, and the lanes/approaches’ allowable manoeuvres. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing intersection * containing lanes * containing signalGroup * } * then { * the IUT sends MAPEM * containing map.intersections * containing all elements of type IntersectionGeometry * containing laneSet * containing all elements of type GenericLane * containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * and containing connectingLane * containing maneuver * indicating possible maneuver * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_15 * @reference CEN ISO/TS 19091 [4] clauses 6.5.21 */ testcase TC_IS_RLT_GEN_MSGF_BV_15 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_15(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_15 /** * @desc Check that lanes which are crossed by a crosswalk shall use the same ingressApproach / * egressApproach identifier. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * containing MapData data element * containing elements of type IntersectionGeometry * containing more then one element of type GenericLane * crossed by the same crosswalk lane * } * then { * the IUT sends MAPEM * containing map.intersections * containing these elements of type GenericLane * containing ingressApproach * indicating the same value * or containing egressApproach * indicating the same value * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_16 * @reference CEN ISO/TS 19091 [4] clause G.8.2.3.1 */ testcase TC_IS_RLT_GEN_MSGF_BV_16 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_16(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_16 /** * @desc Check that RLT Service transmits MAPEM without data elements not used in ETSI architecture: * • layerType * • dataParameters *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_ETSI_STRICT * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * containing a new content * indicating a value which is not exceeding the allowed message length * } * then { * the IUT sends MAPEM * containing MapData data element * not containing layerType * and not containing layerID * and not containing dataParameters * containing elements of type IntersectionGeometry * containing elements of type GenericLane * not containing preemptPriorityData * and not containing maneuvers * and containing connectsTo * containing elements of type Connection * containing connectingLane * not containing maneuver * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_MSGF_BV_17 * @reference CEN ISO/TS 19091 [4] clause G.8.1.1, G.8.2.1 */ testcase TC_IS_RLT_GEN_MSGF_BV_17 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_MSGF_BV_17(); } // End of testcase TC_IS_RLT_GEN_MSGF_BV_17 } // End of group mapeMessageFormat group mapeEventGeneration { //TODO Toggle comment following 2 tests /** * @desc Check that IVI Service generates a new MAPEM on reception of a valid AppMAPEM_Trigger request *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * } * then { * the IUT sends a valid MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_EVGN_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 6.4.1 */ testcase TC_IS_RLT_EVGN_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_EVGN_BV_01(); } // End of testcase TC_IS_RLT_EVGN_BV_01 /** * @desc Check that RLT Service transmits new content *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * containing map * not containing LayerType * and not containing LayerID * and containing restrictionList * indicating the value RL_1 * } * Expected behaviour: * ensure that { * when { * the IUT is alerted about a new restrictionList indicating the value RL_2 * } * then { * the IUT sends a valid MAPEM * containing map * not containing LayerType * and not containing LayerID * and containing restrictionList * indicating indicating the value R_2 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_EVGN_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 6.4.1 */ testcase TC_IS_RLT_EVGN_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_EVGN_BV_02(); } // End of testcase TC_IS_RLT_EVGN_BV_02 /** * @desc Check that RLT Service transmits non-fragmented MAPEM without the Layer ID. *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to send a MAPEM * indicating a map structure which fits the allowed message length * } * then { * the IUT sends a first MAPEM * containing map * not containing LayerID * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_FRAG_BV_01 * @reference ETSI TS 103 301 [2], clause 6.4.1 * CEN ISO/TS 19091 [4], clause G.8.3.1 */ testcase TC_IS_RLT_GEN_FRAG_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_FRAG_BV_01(); } // End of testcase TC_IS_RLT_GEN_FRAG_BV_01 /** * @desc Check that RLT Service transmits fragmented MAPEM when the message size exceeds the allowed message length *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT has sent a MAPEM * } * Expected behaviour: * ensure that { * when { * the IUT is alerted about a new content * indicating a new value which exceeds the allowed message length * } * then { * the IUT sends a first valid MAPEM * containing map * containing LayerType * and containing LayerID * indication a value LID_1 * and the IUT sends a second valid MAPEM * containing map * containing LayerType * and containing LayerID * indication a value LID_2 = LID_1 + 1 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_FRAG_BV_02 * @reference ETSI TS 103 301 [2], clause 6.4.1 * CEN ISO/TS 19091 [4], clause G.8.3.1 */ testcase TC_IS_RLT_GEN_FRAG_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_FRAG_BV_02(); } // End of testcase TC_IS_RLT_GEN_FRAG_BV_02 } // End of group mapeEventGeneration group mapeCommunication { /** * @desc Check that the RLT Service transmits continuously both MAPEM and SPATEM. *
* Pics Selection: PICS_MAPEM_GENERATION and PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * and the IUT has not sent any SPATEM yet * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSPATEM_Start request from the application layer * } * then { * the IUT sends a valid SPATEM * and the IUT sends a valid MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_COM_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 6.4.3.1 */ testcase TC_IS_RLT_GEN_COM_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_COM_BV_01(); } // End of testcase TC_IS_RLT_GEN_COM_BV_01 /** * @desc Check that RLT service generates a MAP message with the revision data element * synchronized with the revision data element of correspondent SPATEM message. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT already sent MAPEM * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing revision * indicating value R * and the IUT has sent SPATEM * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionState * containing revision * indicating value R+1 * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing the same configuration of the intersection * } * then { * the IUT sends MAPEM * containing the elements of type IntersectionGeometry * containing revision * indicating value R+1 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_COM_BV_02 * @reference CEN ISO/TS 19091 [4], clause G.8.2.5.1 */ // testcase TC_IS_RLT_GEN_COM_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { // // f_IS_RLT_GEN_COM_BV_02(); // // } // End of testcase TC_IS_RLT_GEN_COM_BV_02 /** * @desc Check that the destination port for MAPEM is set to 2003 *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT already sent MAPEM * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing revision * indicating value R * and the IUT has sent SPATEM * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionState * containing revision * indicating value R+1 * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to send the MAPEM * containing the same configuration of the intersection * } * then { * the IUT sends a valid MAPEM * containing the elements of type IntersectionGeometry * containing revision * indicating value R+1 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_COM_BV_03 * @reference CEN ISO/TS 19091 Clause G.8.2.5.1 */ testcase TC_IS_RLT_GEN_COM_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_COM_BV_03(); } // End of testcase TC_IS_RLT_GEN_COM_BV_03 /** * @desc Check that MAPEM uses BTP_B packet * Check that the destination port for MAPEM is set to 2003 *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * } * then { * the IUT sends a valid MAPEM * encapsulated in a GBC packet * containing a correctly formatted Common Header * containing HeaderType field * indicating the value '4' * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_COM_BV_04 * @reference ETSI TS 103 301 v1.3.1 Clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_COM_BV_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_COM_BV_04(); } // End of testcase TC_IS_RLT_GEN_COM_BV_04 /** * @desc Check that TLM service encapsulates MAPEM in a GBC with the HeaderType field set to the value of 4 *
* Pics Selection: PICS_MAPEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a MAPEM is generated * } * then { * the IUT sends a valid MAPEM * encapsulated in a GBC packet * containing a correctly formatted Common Header * containing HeaderType field * indicating the value '4' * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_COM_BV_05 * @reference ETSI TS 103 301 v1.3.1 Clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_COM_BV_05 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_COM_BV_05(); } // End of testcase TC_IS_RLT_GEN_COM_BV_05 } // End of group mapeCommunication } // End of group mapeMessageDissemination group mapeMessageProcessing { /** * @desc Check that RLT service uses certificate containing valid ITS AID to sign MAPEM messages. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * an IUT is triggered to send a MAPEM * } * then { * the IUT sends a valid MAPEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SEC_BV_01 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_SEC_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SEC_BV_01(); } // End of testcase TC_IS_RLT_GEN_SEC_BV_01 /** * @desc Check that TLM service uses generic security profile to sign MAPEM message and does not * include additional security header elements. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending MAPEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid MAPEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_MAPEM * and containing generationTime * indicating realistic generation time * and optionally containing generationLocation * and not containing other header items * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SEC_BV_02 * @reference ETSI TS 103 301 [2], clause 12 */ testcase TC_IS_RLT_GEN_SEC_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SEC_BV_02(); } // End of testcase TC_IS_RLT_GEN_SEC_BV_02 /** * @desc Check that RLT service uses certificate containing valid Service Specific Permissions of * type BitmapSsp to sign MAPEM messages and the SSP version is set to 1. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign MAPEM with the certificate CERT_MAP_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a MAPEM * containing map * not containing intersections * and not containing roadSegments * } * then { * the IUT sends a MAPEM * signed with the CERT_SPAT_SSP_NONE * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 4.5.1 */ testcase TC_IS_RLT_GEN_SSP_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SSP_BV_01(); } // End of testcase TC_IS_RLT_GEN_SSP_BV_01 /** * @desc Check that RLT service sends a MAPEM message containing intersections when it is * permitted by the signing certificate. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign MAPEM with the certificate CERT_MAP_SSP_1 * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 0 of octet 1 set to 1 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a MAPEM * containing map * containing intersections * and not containing roadSegments * } * then { * the IUT sends a MAPEM * signed with the CERT_SPAT_SSP_1 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SSP_BV_02 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_SSP_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SSP_BV_02(); } // End of testcase TC_IS_RLT_GEN_SSP_BV_02 /** * @desc Check that RLT service does not send a MAPEM message containing intersections if it is not * permitted by the certificate. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign MAPEM with the certificate CERT_MAP_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a MAPEM * containing map * containing intersections * and not containing roadSegments * } * then { * the IUT doesn’t send a MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SSP_BO_03 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_SSP_BO_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SSP_BO_03(); } // End of testcase TC_IS_RLT_GEN_SSP_BO_03 /** * @desc Check that RLT service sends a MAPEM message containing roadSegments when it is * permitted by the signing certificate. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign MAPEM with the certificate CERT_MAP_SSP_2 * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 1 of octet 1 set to 1 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a MAPEM * containing map * containing roadSegments * and not containing intersections * } * then { * the IUT sends a MAPEM * signed with the CERT_SPAT_SSP_2 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SSP_BV_04 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_SSP_BV_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SSP_BV_04(); } // End of testcase TC_IS_RLT_GEN_SSP_BV_04 /** * @desc Check that RLT service does not send a MAPEM message containing roadSegments if it is * not permitted by the certificate. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign MAPEM with the certificate CERT_MAP_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a MAPEM * containing map * containing roadSegments * and not containing intersections * } * then { * the IUT doesn’t send a MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_SSP_BO_05 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_GEN_SSP_BO_05 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_SSP_BO_05(); } // End of testcase TC_IS_RLT_GEN_SSP_BO_05 /** * @desc Check that RLT service sends a MAPEM message containing roadSegments when it is * permitted by the signing certificate. *
* Pics Selection: PICS_MAPEM_GENERATION AND PICS_MAPEM_TRANSMISSION_RATE * Initial conditions: * with { * the IUT being in the "MAPEM initial state" * the IUT has sent MAPEM message at TIME_1 * } * Expected behaviour: * ensure that { * when { * UIT is triggered to send a next MAPEM * } * then { * the IUT sends MAPEM at TIME_2 * indicating DELTA = TIME_2 - TIME_1 * where DELTA is less than 2 second and more then 500ms * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_RATE_BV_01 * @reference CEN ISO/TS 19091 [4], clauses 6.15 */ testcase TC_IS_RLT_GEN_RATE_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_RATE_BV_01(); } // End of testcase TC_IS_RLT_GEN_RATE_BV_01 /** * @desc Check that the IUT can successfully process all mandatory fields of MAPEM received *
* Pics Selection: PICS_MAPEM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having receive a valid MAPEM * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid MAPEM * } * then { * the IUT forwards the MAPEM content to upper layers * and the IUT forwards the MAPEM content to other facilities * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_GEN_RCV_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 6.3 */ testcase TC_IS_RLT_GEN_RCV_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_GEN_RCV_BV_03(); } // End of testcase TC_IS_RLT_GEN_RCV_BV_03 /** * @desc Check that the IUT accepts the MAPEM signed with valid certificate. *
* Pics Selection: PICS_MAPEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a MAPEM * containing spat * not containing intersections * and not containing roadSegments * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * then { * the IUT accepts the received MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_RCV_SEC_BV_01 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_RCV_SEC_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_RCV_SEC_BV_01(); } // End of testcase TC_IS_RLT_RCV_SEC_BV_01 /** * @desc Check that the IUT skips the MAPEM signed with certificate without permissions to sign * MAPEM. *
* Pics Selection: PICS_MAPEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a MAPEM * containing spat * not containing intersections * and not containing roadSegments * and signed with the certificate * not containing appPermission item * containing psid * indicating ITS_AID_MAPEM * } * then { * the IUT skips the received MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_RCV_SEC_BO_02 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_RCV_SEC_BO_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_RCV_SEC_BO_02(); } // End of testcase TC_IS_RLT_RCV_SEC_BO_02 /** * @desc Check that the IUT skips the MAPEM containing intersections signed with certificate without * service specific permissions (SSP) to sign such a MAPEM. *
* Pics Selection: PICS_MAPEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a MAPEM * containing spat * containing intersections * and not containing roadSegments * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * then { * the IUT skips the received MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_RCV_SEC_BO_03 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_RCV_SEC_BO_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_RCV_SEC_BO_03(); } // End of testcase TC_IS_RLT_RCV_SEC_BO_03 /** * @desc Check that the IUT skips the MAPEM containing roadSegments signed with certificate * without service specific permissions (SSP) to sign such a MAPEM *
* Pics Selection: PICS_MAPEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a MAPEM * containing spat * containing roadSegments * and not containing intersections * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_MAPEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * then { * the IUT skips the received MAPEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_RCV_SEC_BO_04 * @reference ETSI TS 103 301 [2], clause 6.4.3.2 */ testcase TC_IS_RLT_RCV_SEC_BO_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_RLT_RCV_SEC_BO_04(); } // End of testcase TC_IS_RLT_RCV_SEC_BO_04 } // End of group mapeMessageProcessing } // End of module ItsMapem_TestCases ats_ts103191-3-devel/ItsMapem_TpFunctions.ttcn 0000664 0000000 0000000 00000341014 14553501104 0021235 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsMapemSpatem/ItsMapem_TpFunctions.ttcn $ * $Id: ItsMapem_TpFunctions.ttcn,v 1.2 2018/05/31 15:57:07 dte Exp $ * @desc MAPEM TP functions * @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 ItsMapem_TpFunctions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; import from LibItsMapemSpatem_Functions all; import from LibItsMapemSpatem_Templates all; import from LibItsMapemSpatem_TypesAndValues all; import from LibItsMapemSpatem_Pics all; import from LibItsMapemSpatem_Pixits all; function f_TC_IS_RLT_xxx_BV_01 () runs on ItsMapemSpatem { var octetstring v_os := '020500013db0080000100010bb9022a2e1d0839cb41410092050a000000000a16861a51f74c081432101422000000000a334c34a86e48040018a00020b79ddab69488064c78c07981e0d4a80801655d5e609b1de5f1ca0a16995ebc979347dce9708356c609b294df59f7af4b82c83c48d45cc5688cdbe80fb62d18876ecb839b25496000480260bc4118c67ec'O; var bitstring v_bs := oct2bit(v_os); var MAPEM v_mapem; if (decvalue(v_bs, v_mapem) == 0) { log("Mapem: ", v_mapem); setverdict(pass); } else { log("Error"); setverdict(fail); } } group mapeMessageDissemination { group mapeMessageFormat { /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_01 */ function f_IS_RLT_GEN_MSGF_BV_01 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_01 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_02 */ function f_IS_RLT_GEN_MSGF_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, v_mapem.msgIn.map_.intersections[0].id.id, m_speedLimits(maxSpeedInConstructionZone, 30))); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry(v_mapem.msgIn.map_.intersections[0].id, v_mapem.msgIn.map_.intersections[0].revision + 1) } )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_02 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_03 */ function f_IS_RLT_GEN_MSGF_BV_03 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, v_mapem.msgIn.map_.intersections[0].id.id, v_mapem.msgIn.map_.intersections[0].speedLimits[0])); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry(v_mapem.msgIn.map_.intersections[0].id, v_mapem.msgIn.map_.intersections[0].revision) } )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_03 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_04 */ function f_IS_RLT_GEN_MSGF_BV_04 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( -, { mw_roadSegment( -, -, -, { mw_roadLane(-, -, ?), mw_roadLane(-, -, -, ?) } ) } )))) -> value v_mapem { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_04 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_05 */ function f_IS_RLT_GEN_MSGF_BV_05 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, -, -)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry(v_mapem.msgIn.map_.intersections[0].id, -, mw_position3D(-, -, ?)) } )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_05 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_06 */ function f_IS_RLT_GEN_MSGF_BV_06 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, 7)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_uniqueless_lanes_id(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_06 group checks_IS_RLT_GEN_MSGF_BV_06 { function f_check_uniqueless_lanes_id( in IntersectionGeometryList p_intersections ) return boolean { var charstring v_lane_ids_found; // Used to build the list of the laneID already processed var charstring v_lane_id; // laneID currently processed var template charstring v_found_pattern; // Used in regex to verify that ''v_usageStatememtId' was not found before' for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { v_lane_ids_found := ";"; for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { v_lane_id := int2str(p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx].laneID); v_found_pattern := pattern "*({v_lane_id})*"; if (regexp(v_lane_ids_found, v_found_pattern, 0) == v_lane_id) { return false; // v_lane_id exist at least 2 times, uniqueness is not verified } // v_lane_id non found, add current laneID into the built list v_lane_ids_found := v_lane_ids_found & v_lane_id & ";"; } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_uniqueless_lanes_id } // End of group checks_IS_RLT_GEN_MSGF_BV_06 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_07 */ function f_IS_RLT_GEN_MSGF_BV_07 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_lanes_nodes_length(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_07 group checks_IS_RLT_GEN_MSGF_BV_07 { function f_check_lanes_nodes_length( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var NodeListXY v_nodes_list := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx].nodeList; if (ischosen(v_nodes_list.nodes)) { for (var integer v_idx := 0; v_idx < lengthof(v_nodes_list.nodes); v_idx := v_idx + 1) { var NodeXY v_node := v_nodes_list.nodes[v_idx]; // TODO Which fields should be tested? //if (v_node.delta.) } // End of 'for' statement } // else, ignore ComputedLane field } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_lanes_nodes_length } // End of group checks_IS_RLT_GEN_MSGF_BV_07 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_08 */ function f_IS_RLT_GEN_MSGF_BV_08 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_lanes_content(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_08 group checks_IS_RLT_GEN_MSGF_BV_08 { function f_check_generic_lanes_content( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane) == false) { return false; } } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_lanes_content } // End of group checks_IS_RLT_GEN_MSGF_BV_08 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_09 */ function f_IS_RLT_GEN_MSGF_BV_09 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_PEDESTRIAN_MANOEUVRES) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_PEDESTRIAN_MANOEUVRES required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_pedestrian_lanes_content(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_09 group checks_IS_RLT_GEN_MSGF_BV_09 { function f_check_generic_pedestrian_lanes_content( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane) == false) { return false; } // TODO Which fields should be tested? } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_pedestrian_lanes_content } // End of group checks_IS_RLT_GEN_MSGF_BV_09 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_10 */ function f_IS_RLT_GEN_MSGF_BV_10 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_SPECIALIZED_CARS_MANOEUVRES) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_SPECIALIZED_CARS_MANOEUVRES required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_special_lanes_content(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_10 group checks_IS_RLT_GEN_MSGF_BV_10 { function f_check_generic_special_lanes_content( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane) == false) { return false; } // TODO Which fields should be tested? } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_special_lanes_content } // End of group checks_IS_RLT_GEN_MSGF_BV_10 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_11 */ function f_IS_RLT_GEN_MSGF_BV_11 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_crosswalk_lanes_content(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_11 group checks_IS_RLT_GEN_MSGF_BV_11 { function f_check_generic_crosswalk_lanes_content( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane) == false) { return false; } // TODO Which fields should be tested? } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_crosswalk_lanes_content } // End of group checks_IS_RLT_GEN_MSGF_BV_11 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_12 */ function f_IS_RLT_GEN_MSGF_BV_12 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_MAPEM_HAS_LANE_WIDTH) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_MAPEM_HAS_LANE_WIDTH required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { var integer v_intersections_idx; tc_ac.stop; for (v_intersections_idx := 0; v_intersections_idx < lengthof(v_mapem.msgIn.map_.intersections); v_intersections_idx := v_intersections_idx + 1) { var integer v_lane_ids_idx; for (v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(v_mapem.msgIn.map_.intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { if (f_check_node_list_content(v_mapem.msgIn.map_.intersections[v_intersections_idx].laneSet[v_lane_ids_idx].nodeList)) { log("*** " & testcasename() & ": FAIL: Wrong NodeList content for intersection #", v_intersections_idx , ". ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); break; } } // End of 'for' statement if (v_lane_ids_idx < lengthof(v_mapem.msgIn.map_.intersections[v_intersections_idx].laneSet)) { break; } } // End of 'for' statement if (v_intersections_idx == lengthof(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_12 group checks_IS_RLT_GEN_MSGF_BV_12 { function f_check_node_list_content( in NodeListXY p_node_list ) return boolean { if (ischosen(p_node_list.nodes) == false) { return false; } for (var integer v_nodes_idx := 0; v_nodes_idx < lengthof(p_node_list.nodes); v_nodes_idx := v_nodes_idx + 1) { var NodeXY v_node_xy := p_node_list.nodes[v_nodes_idx]; if (match(v_node_xy, mw_nodeXY(-, mw_nodeAttributeSetXY_default)) == false) { return false; } // TODO Which fields should be tested? } // End of 'for' statement return true; } // End of function f_check_node_list_content } // End of group checks_IS_RLT_GEN_MSGF_BV_12 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_13 */ function f_IS_RLT_GEN_MSGF_BV_13 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_MAPEM_HAS_LANE_WIDTH) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_MAPEM_HAS_LANE_WIDTH required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { var integer v_intersections_idx; tc_ac.stop; for (v_intersections_idx := 0; v_intersections_idx < lengthof(v_mapem.msgIn.map_.intersections); v_intersections_idx := v_intersections_idx + 1) { if (f_check_node_list_width_attribut(v_mapem.msgIn.map_.intersections[v_intersections_idx])) { log("*** " & testcasename() & ": FAIL: Wrong NodeList content for intersection #", v_intersections_idx , ". ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); break; } } // End of 'for' statement if (v_intersections_idx == lengthof(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_13 group checks_IS_RLT_GEN_MSGF_BV_13 { function f_check_node_list_width_attribut( in IntersectionGeometry p_intersections_geometry ) return boolean { if (ispresent(p_intersections_geometry)) { return false; } for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections_geometry.laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var NodeListXY v_node_list := p_intersections_geometry.laneSet[v_lane_ids_idx].nodeList; if (ischosen(v_node_list.nodes) == false) { return false; } for (var integer v_nodes_idx := 0; v_nodes_idx < lengthof(v_node_list.nodes); v_nodes_idx := v_nodes_idx + 1) { var NodeXY v_node_xy := v_node_list.nodes[v_nodes_idx]; if (match(v_node_xy, mw_nodeXY(-, mw_nodeAttributeSetXY_default)) == false) { return false; } // TODO Which fields should be tested? } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_node_list_width_attribut } // End of group checks_IS_RLT_GEN_MSGF_BV_13 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_14 */ function f_IS_RLT_GEN_MSGF_BV_14 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_connection_content(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_14 group checks_IS_RLT_GEN_MSGF_BV_14 { function f_check_generic_connection_content( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane(-, -, -, -, ?)) == false) { // TODO Which fields should be tested? return false; } } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_connection_content } // End of group checks_IS_RLT_GEN_MSGF_BV_14 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_15 */ function f_IS_RLT_GEN_MSGF_BV_15 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_lane_content(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_15 group checks_IS_RLT_GEN_MSGF_BV_15 { function f_check_generic_lane_content( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane(-, -, -, -, ?)) == false) { // TODO Which fields should be tested? return false; } } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_lane_content } // End of group checks_IS_RLT_GEN_MSGF_BV_15 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_16 */ function f_IS_RLT_GEN_MSGF_BV_16 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_lane_approach(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_16 group checks_IS_RLT_GEN_MSGF_BV_16 { function f_check_generic_lane_approach( in IntersectionGeometryList p_intersections ) return boolean { for (var integer v_intersections_idx := 0; v_intersections_idx < lengthof(p_intersections); v_intersections_idx := v_intersections_idx + 1) { for (var integer v_lane_ids_idx := 0; v_lane_ids_idx < lengthof(p_intersections[v_intersections_idx].laneSet); v_lane_ids_idx := v_lane_ids_idx + 1) { var GenericLane v_lane := p_intersections[v_intersections_idx].laneSet[v_lane_ids_idx]; if (match(v_lane, mw_roadLane(-, -, 4, 5, ?)) == false) { // TODO Use PIXIT? return false; } } // End of 'for' statement } // End of 'for' statement return true; } // End of function f_check_generic_lane_approach } // End of group checks_IS_RLT_GEN_MSGF_BV_16 /** * @desc TP Function for TC_IS_RLT_GEN_MSGF_BV_17 */ function f_IS_RLT_GEN_MSGF_BV_17 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0, PX_INTERSECTION_ID)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem( ? )))) -> value v_mapem { tc_ac.stop; if (f_check_generic_lane_approach(v_mapem.msgIn.map_.intersections)) { log("*** " & testcasename() & ": PASS: The lanes identifier are unique. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: Duplicated lanes identifier. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_MSGF_BV_17 } // End of group mapeMessageFormat group mapeEventGeneration { //TODO Toggle comment following 2 tests /** * @desc TP Function for TC_IS_RLT_EVGN_BV_01 */ function f_IS_RLT_EVGN_BV_01 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_defaultMapem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a MAPEM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_EVGN_BV_01 /** * @desc TP Function for TC_IS_RLT_EVGN_BV_02 */ function f_IS_RLT_EVGN_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive(v_mapem) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: The same MAPEM was received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received a new MAPEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_defaultMapem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a MAPEM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_EVGN_BV_02 /** * @desc TP Function for TC_IS_RLT_GEN_FRAG_BV_01 */ function f_IS_RLT_GEN_FRAG_BV_01 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM without the Layer ID. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_FRAG_BV_01 /** * @desc TP Function for TC_IS_RLT_GEN_FRAG_BV_02 */ function f_IS_RLT_GEN_FRAG_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; var boolean v_firstFragmentReceived := false; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile2)); // FIXME Add parameters to update default profile or create a MamSpatUpdate message tc_ac.start; alt { [not v_firstFragmentReceived] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemLayerType ))) -> value v_mapem { log("*** " & testcasename() & ": INFO: Successfully received the first fragment of MAPEM. ***"); v_firstFragmentReceived := true; repeat; } [v_firstFragmentReceived] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemLayerType( -, -, v_mapem.msgIn.map_.layerID + 1 ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received the last fragment of MAPEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_defaultMapem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a MAPEM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_FRAG_BV_02 } // End of group mapeEventGeneration group mapeCommunication { /** * @desc TP Function for TC_IS_RLT_GEN_COM_BV_01 */ function f_IS_RLT_GEN_COM_BV_01 () runs on ItsMapemSpatem { // Local variables var boolean v_tlmServiceStarted := false; // Test control if (not PICS_SPATEM_GENERATION or not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [v_tlmServiceStarted == false] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapem ))) { tc_ac.stop; log("*** " & testcasename() & ": INFO: Successfully received well-formed MAPEM. ***"); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); v_tlmServiceStarted := true; tc_ac.start; repeat; } [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received well-formed MAPEM & SPATEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble //f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_COM_BV_01 /** * @desc TP Function for TC_IS_RLT_GEN_COM_BV_02 */ // function f_IS_RLT_GEN_COM_BV_02 () runs on ItsMapemSpatem { // // // TODO // // } // End of function f_IS_RLT_GEN_COM_BV_02 /** * @desc TP Function for TC_IS_RLT_GEN_COM_BV_03 */ function f_IS_RLT_GEN_COM_BV_03 () runs on ItsMapemSpatem { // TODO } // End of function f_IS_RLT_GEN_COM_BV_03 /** * @desc TP Function for TC_IS_RLT_GEN_COM_BV_04 */ function f_IS_RLT_GEN_COM_BV_04 () runs on ItsMapemSpatem { // Local variables const UInt16 c_gnNhBtpBPort := 2003; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithBtpParameters( mw_mapemPdu, c_gnNhBtpBPort, 0 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected MAPEM encapsultated in BTP packet with port value 2003 received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive(mw_mapemInd(mw_mapemPdu(mw_defaultMapem))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected MAPEM received, but not addressed to the correct destination port. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_COM_BV_04 /** * @desc TP Function for TC_IS_RLT_GEN_COM_BV_05 */ function f_IS_RLT_GEN_COM_BV_05 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; const UInt8 c_gnHtGbc := 4; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithGnParameters( mw_mapemPdu( mw_defaultMapem ), -, c_gnHtGbc )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected MAPEM encapsulated in GBC packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_COM_BV_05 } // End of group mapeCommunication } // End of group mapeMessageDissemination group mapeMessageProcessing { /** * @desc TP Function for TC_IS_RLT_GEN_SEC_BV_01 */ function f_IS_RLT_GEN_SEC_BV_01 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_mapem ), -, c_its_aid_MAP )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SEC_BV_01 /** * @desc TP Function for TC_IS_RLT_GEN_SEC_BV_02 */ function f_IS_RLT_GEN_SEC_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_mapem ), -, c_its_aid_MAP )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SEC_BV_02 /** * @desc TP Function for TC_IS_RLT_GEN_SSP_BV_01 */ function f_IS_RLT_GEN_SSP_BV_01 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_defaultMapem ), oct2bit('010000'O), c_its_aid_MAP )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SSP_BV_01 /** * @desc TP Function for TC_IS_RLT_GEN_SSP_BV_02 */ function f_IS_RLT_GEN_SSP_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_MAP_SSP_1"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_defaultMapem ), oct2bit('010000'O), c_its_aid_MAP )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SSP_BV_02 /** * @desc TP Function for TC_IS_RLT_GEN_SSP_BO_03 */ function f_IS_RLT_GEN_SSP_BO_03 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_MAP_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0)); tc_noac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_defaultMapem ), oct2bit('010000'O), c_its_aid_MAP )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SSP_BO_03 /** * @desc TP Function for TC_IS_RLT_GEN_SSP_BV_04 */ function f_IS_RLT_GEN_SSP_BV_04 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_MAP_SSP_2"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_defaultMapem ), oct2bit('018000'O), c_its_aid_MAP )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SSP_BV_04 /** * @desc TP Function for TC_IS_RLT_GEN_SSP_BO_05 */ function f_IS_RLT_GEN_SSP_BO_05 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_MAP_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapProfile0)); tc_noac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithSecurityParameters( mw_mapemPdu( mw_defaultMapem ), oct2bit('010000'O), c_its_aid_MAP )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured MAPEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No MAP message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_SSP_BO_05 /** * @desc TP Function for TC_IS_RLT_GEN_RATE_BV_01 */ function f_IS_RLT_GEN_RATE_BV_01 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; timer t_minTransInterval := PICS_T_GENMAPEMMIN * 0.90; timer t_maxTransInterval := PICS_T_GENMAPEMMAX * 1.10; // Test control if (not PICS_MAPEM_GENERATION or not PICS_MAPEM_TRANSMISSION_RATE) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_MAPEM_TRANSMISSION_RATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); t_minTransInterval.start; t_maxTransInterval.start; f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu )) { tc_ac.stop; if (t_minTransInterval.running) { log("*** " & testcasename() & ": PASS: Successfully received MAPEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPE message was received before t_minTransInterval expiry. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] t_minTransInterval.timeout { repeat; } [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": FAIL: MAPE message was not received within the t_minTransInterval/t_maxTransInterval expiration ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_RATE_BV_01 /** * @desc TP Function for TC_IS_RLT_GEN_RCV_BV_03 */ function f_IS_RLT_GEN_RCV_BV_03 () runs on ItsMapemSpatem { // Local variables var MapemReq v_mapemReq; var integer i; if (not PICS_MAPEM_RECEPTION) { log("*** " & testcasename() & ": PICS_MAPEM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_mapemReq := valueof( m_mapemReq( m_mapemPdu( m_mapem( 5, { m_intersectionGeometry( m_intersectionReferenceID(9), 1, m_position3D( 367485365, -45560691 ), { m_laneList( 1, { directionalUse := '10'B, sharedWith := '0000000000'B, laneType := { vehicle := '00000000'B }, regional := omit }, { nodes := { { delta := { node_XY6 := { x := 83, y := -124 } }, attributes := omit }, { delta := { node_XY6 := { x := 93, y := -122 } }, attributes := omit } } }, -, 1 ) } ) } )))); mapemSpatemPort.send(v_mapemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utMapemEvents) and not match (v_mapemReq.msgOut , vc_utMapemEvents[i].mapeMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utMapemEvents) ) { log("*** " & testcasename() & ": PASS: MAPEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_GEN_RCV_BV_03 /** * @desc TP Function for TC_IS_RLT_RCV_SEC_BV_01 */ function f_IS_RLT_RCV_SEC_BV_01 () runs on ItsMapemSpatem { // Local variables var MapemReq v_mapemReq; var integer i; if (not PICS_MAPEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_mapemReq := valueof( m_mapemReq( m_mapemPdu( m_mapem( 5 )))); mapemSpatemPort.send(v_mapemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utMapemEvents) and not match (v_mapemReq.msgOut , vc_utMapemEvents[i].mapeMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utMapemEvents) ) { log("*** " & testcasename() & ": PASS: MAPEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_RCV_SEC_BV_01 /** * @desc TP Function for TC_IS_RLT_RCV_SEC_BO_02 */ function f_IS_RLT_RCV_SEC_BO_02 () runs on ItsMapemSpatem { // Local variables var MapemReq v_mapemReq; var integer i; if (not PICS_MAPEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("RLT_RCV_SEC_BO_02"); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_mapemReq := valueof( m_mapemReq( m_mapemPdu( m_mapem( 5 )))); mapemSpatemPort.send(v_mapemReq) ; f_sleep(PX_TAC); if (0 == lengthof(vc_utMapemEvents) ) { log("*** " & testcasename() & ": PASS: MAPEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_RCV_SEC_BO_02 /** * @desc TP Function for TC_IS_RLT_RCV_SEC_BO_03 */ function f_IS_RLT_RCV_SEC_BO_03 () runs on ItsMapemSpatem { // Local variables var MapemReq v_mapemReq; var integer i; if (not PICS_MAPEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("RLT_RCV_SEC_BO_03"); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_mapemReq := valueof( m_mapemReq( m_mapemPdu( m_mapem( 5 )))); mapemSpatemPort.send(v_mapemReq) ; f_sleep(PX_TAC); if (0 == lengthof(vc_utMapemEvents) ) { log("*** " & testcasename() & ": PASS: MAPEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_RCV_SEC_BO_03 /** * @desc TP Function for TC_IS_RLT_RCV_SEC_BO_04 */ function f_IS_RLT_RCV_SEC_BO_04 () runs on ItsMapemSpatem { // Local variables var MapemReq v_mapemReq; var integer i; if (not PICS_MAPEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_MAPEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("RLT_RCV_SEC_BO_04"); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_mapemReq := valueof( m_mapemReq( m_mapemPdu( m_mapem( 5 )))); mapemSpatemPort.send(v_mapemReq) ; f_sleep(PX_TAC); if (0 == lengthof(vc_utMapemEvents) ) { log("*** " & testcasename() & ": PASS: MAPEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_RCV_SEC_BO_04 } // End of group mapeMessageProcessing } // End of module ItsMapem_TpFunctions ats_ts103191-3-devel/ItsRtcmem_TestCases.ttcn 0000664 0000000 0000000 00000032363 14553501104 0021053 0 ustar 00root root 0000000 0000000 module ItsRtcmem_TestCases { // LibItsRtcmem import from LibItsRtcmem_TestSystem all; // ItsRtcmem import from ItsRtcmem_TpFunctions all; group messageFormat { /** * @desc Check that protocolVersion is set to 1 and messageID is set to 13 *
* Pics Selection: PICS_RTCMEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new RTCMEM * } * then { * the IUT sends a valid RTCMEM * containing ITS PDU header * containing protocolVersion * indicating value '1' * and containing messageID * indicating value '13' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 9.3 */ testcase TC_IS_GPC_GEN_MSGF_BV_01() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_MSGF_BV_01(); } // End of testcase TC_IS_GPC_GEN_MSGF_BV_01 } // End of group messageFormat group eventGeneration { /** * @desc Check that GPC Service generates a new RTCMEM on reception of a valid AppRTCMEM_Start request *
* Pics Selection: PICS_RTCMEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT has not sent any RTCMEM yet * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppRTCMEM_Start request from the application layer * } * then { * the IUT sends a valid RTCMEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_EVGN_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 9.4.2 */ testcase TC_IS_GPC_GEN_EVGN_BV_01() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_EVGN_BV_01(); } // End of testcase TC_IS_GPC_GEN_EVGN_BV_01 /** * @desc Check that GPC Service terminates on reception of a valid AppRTCMEM _Stop request *
* Pics Selection: PICS_RTCMEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending RTCMEM * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppRTCMEM_Stop request from the application layer * } * then { * the IUT stops sending RTCMEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_EVGN_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 9.4.2 */ testcase TC_IS_GPC_GEN_EVGN_BV_02() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_EVGN_BV_02(); } // End of testcase TC_IS_GPC_GEN_EVGN_BV_02 } // End of group eventGeneration group communication { /** * @desc Check that RTCMEM uses BTP_B packet * Check that the destination port for RTCMEM is set to 2013 *
* Pics Selection: PICS_RTCMEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending RTCMEM * } * Expected behaviour: * ensure that { * when { * a RTCMEM is generated * } * then { * the IUT sends a valid RTCMEM * encapsulated in a BTP-B packet * containing a destination port value set to 2013 * and containing a destination port info value set to 0 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_COM_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 9.4.3.2 */ testcase TC_IS_GPC_GEN_COM_BV_02() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_COM_BV_02(); } // End of testcase TC_IS_GPC_GEN_COM_BV_02 /** * @desc Check that GPC service encapsulates RTCMEM in a GBC with the HeaderType field set to the value of 4 *
* Pics Selection: PICS_RTCMEM_GENERATION AND PICS_SHORT_RANGE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending RTCMEM * } * Expected behaviour: * ensure that { * when { * a RTCMEM is generated * } * then { * the IUT sends a valid RTCMEM * encapsulated in a GBC packet * containing HeaderType field * indicating the value '4' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_COM_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 9.4.3.2 */ testcase TC_IS_GPC_GEN_COM_BV_03() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_COM_BV_03(); } // End of testcase TC_IS_GPC_GEN_COM_BV_03 } // End of group communication group security { /** * @desc Check that GPC service uses certificate containing valid ITS AID to sign RTCMEM messages *
* Pics Selection: PICS_RTCMEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending RTCMEM * } * Expected behaviour: * ensure that { * when { * a RTCMEM is generated * } * then { * the IUT sends a valid RTCMEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_RTCMEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_SEC_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 9.4.3.2 */ testcase TC_IS_GPC_GEN_SEC_BV_01() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_SEC_BV_01(); } // End of testcase TC_IS_GPC_GEN_SEC_BV_01 /** * @desc Check that GPC service uses generic security profile to sign RTCMEM message and does not include additional security header elements *
* Pics Selection: PICS_RTCMEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending RTCMEM * } * Expected behaviour: * ensure that { * when { * a RTCMEM is generated * } * then { * the IUT sends a valid RTCMEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_RTCMEM * and containing generationTime * indicating realistic generation time * and optionally containing generationLocation * and not containing other header items * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_SEC_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 12 */ testcase TC_IS_GPC_GEN_SEC_BV_02() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_SEC_BV_01(); // Done by the Test System } // End of testcase TC_IS_GPC_GEN_SEC_BV_02 /** * @desc Check that GPC service uses certificate containing valid Service Specific Permissions to sign RTCMEM messages and the SSP version is set to 1 *
* Pics Selection: PICS_RTCMEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending RTCMEMwith the certificate CERT_RTCM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_RTCMEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a RTCMEM * } * then { * the IUT sends a valid RTCMEM * signed with the CERT_RTCM_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_GEN_SSP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 12 */ testcase TC_IS_GPC_GEN_SSP_BV_01() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_GEN_SSP_BV_01(); } // End of testcase TC_IS_GPC_GEN_SSP_BV_01 /** * @desc Check that the IUT accepts the RTCMEM message permitted by the signing certificate *
* Pics Selection: PICS_RTCMEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a RTCMEM * signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_RTCMEM * } * then { * the IUT accepts the received RTCMEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_RCV_SSP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 9.3 */ testcase TC_IS_GPC_RCV_SSP_BV_01() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_RCV_SSP_BV_01(); } // End of testcase TC_IS_GPC_RCV_SSP_BV_01 /** * @desc Check that the IUT skips the RTCMEM message not permitted by the signing certificate *
* Pics Selection: PICS_RTCMEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a RTCMEM * signed with the certificate * containing psid * indicating ITS_AID_RTCMEM * and not containing appPermission item * } * then { * the IUT discards the received RTCMEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_RCV_SSP_BO_02 * @reference ETSI TS 103 301 v1.3.1 Clause 9.3 */ testcase TC_IS_GPC_RCV_SSP_BO_02() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_RCV_SSP_BO_02(); } // End of testcase TC_IS_GPC_RCV_SSP_BO_02 } // End of group security group eventReception { /** * @desc Check that the IUT can successfully process all mandatory fields of RTCMEM received *
* Pics Selection: PICS_RTCMEM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid RTCMEM * } * then { * the IUT forwards the RTCMEM content to upper layers * and the IUT forwards the RTCMEM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_GPC_RCV_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 9.3 */ testcase TC_IS_GPC_RCV_MSGF_BV_01() runs on ItsRtcmem system ItsRtcmemSystem { f_IS_GPC_RCV_MSGF_BV_01(); } // End of testcase TC_IS_GPC_RCV_MSGF_BV_01 } // End of group eventReception } // End of module ItsRtcmem_TestCases ats_ts103191-3-devel/ItsRtcmem_TestControl.ttcn 0000664 0000000 0000000 00000001732 14553501104 0021431 0 ustar 00root root 0000000 0000000 module ItsRtcmem_TestControl { // ATS RTCMEM import from ItsRtcmem_TestCases all; // LibIts import from LibItsRtcmem_Pics all; // Test Execution control { if (PICS_RTCMEM_GENERATION) { execute(TC_IS_GPC_GEN_MSGF_BV_01()); execute(TC_IS_GPC_GEN_EVGN_BV_01()); execute(TC_IS_GPC_GEN_EVGN_BV_02()); execute(TC_IS_GPC_GEN_COM_BV_02()); if (PICS_SHORT_RANGE) { execute(TC_IS_GPC_GEN_COM_BV_03()); } if (PICS_IS_IUT_SECURED) { execute(TC_IS_GPC_GEN_SEC_BV_01()); execute(TC_IS_GPC_GEN_SEC_BV_02()); } } if (PICS_RTCMEM_RECEPTION) { execute(TC_IS_GPC_RCV_MSGF_BV_01()); if (PICS_IS_IUT_SECURED) { execute(TC_IS_GPC_RCV_SSP_BV_01()); execute(TC_IS_GPC_RCV_SSP_BO_02()); } } } // End of 'control' statement } // End of module ItsRtcmem_TestControl ats_ts103191-3-devel/ItsRtcmem_TpFunctions.ttcn 0000664 0000000 0000000 00000053233 14553501104 0021430 0 ustar 00root root 0000000 0000000 module ItsRtcmem_TpFunctions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from RTCMEM_PDU_Descriptions language "ASN.1:1997" all; // LibItsRtcmem import from LibItsRtcmem_TestSystem all; import from LibItsRtcmem_Functions all; import from LibItsRtcmem_Templates all; import from LibItsRtcmem_TypesAndValues all; import from LibItsRtcmem_Pics all; import from LibItsRtcmem_Pixits all; group messageFormat { /** * @desc TP Function for TC_IS_GPC_GEN_MSGF_BV_01 */ function f_IS_GPC_GEN_MSGF_BV_01() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemInd( mw_rtcmemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_MSGF_BV_01 } // End of group messageFormat group eventGeneration { function f_IS_GPC_GEN_EVGN_BV_01() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemInd( mw_rtcmemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_EVGN_BV_01 function f_IS_GPC_GEN_EVGN_BV_02() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemInd( mw_rtcmemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": INFO: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } } // End of 'alt' statement // Test Body f_utTerminateEvent(m_utTriggerTermination(10)); tc_noac.start; rtcmemPort.clear; alt { [] rtcmemPort.receive( mw_rtcmemInd( mw_rtcmemPdu )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: IUT stops sending RTCMEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // End of 'alt' statement // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_EVGN_BV_02 } // End of group eventGeneration group communication { function f_IS_GPC_GEN_COM_BV_02() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemIndWithBtpParameters( mw_rtcmemPdu, 2013, 0 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_COM_BV_02 function f_IS_GPC_GEN_COM_BV_03() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION or not PICS_SHORT_RANGE) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION and PICS_SHORT_RANGE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemIndWithGnParameters( mw_rtcmemPdu, -, 4 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_COM_BV_03 } // End of group communication group security { function f_IS_GPC_GEN_SEC_BV_01() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemIndWithSecurityParameters( mw_rtcmemPdu, -, c_its_aid_GPC )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received secured RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); tc_noac.start; rtcmemPort.clear; alt { [] rtcmemPort.receive( mw_rtcmemInd( mw_rtcmemPdu )) { tc_noac.stop; log("*** " & testcasename() & ": INCON: Successfully received RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } [] tc_ac.timeout { log("*** " & testcasename() & ": INFO: IUT stops sending RTCMEM. ***"); } } // End of 'alt' statement f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_SEC_BV_01 function f_IS_GPC_GEN_SSP_BV_01() runs on ItsRtcmem { // Local variables // Test control if (not PICS_RTCMEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") })); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] rtcmemPort.receive( mw_rtcmemIndWithSecurityParameters( mw_rtcmemPdu, oct2bit('010000'O), c_its_aid_GPC )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received secured RTCMEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_GEN_SSP_BV_01 function f_IS_GPC_RCV_SSP_BV_01() runs on ItsRtcmem { // Local variables var RtcmemReq v_rtcmemReq; var integer i; // Test control if (not PICS_RTCMEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_RTCMEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Use default certificate // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_rtcmemReq := valueof( m_rtcmemReq( m_rtcmemPdu( m_defaultRtcmem( 123, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") } ) ) ) ); rtcmemPort.send(v_rtcmemReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_rtcmemReq.msgOut, vc_utEvents[i].rtcmemMsg); i := i + 1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": FAIL: RTCMEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { log("*** " & testcasename() & ": PASS: RTCMEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } // Postamble f_utTerminateEvent(m_utTriggerTermination(10)); f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_RCV_SSP_BV_01 function f_IS_GPC_RCV_SSP_BO_02() runs on ItsRtcmem { // Local variables var RtcmemReq v_rtcmemReq; var integer i; // Test control if (not PICS_RTCMEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_RTCMEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("CERT_TS_RTCMEM_BO_02_AT"); // not containing appPermission item // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_rtcmemReq := valueof( m_rtcmemReq( m_rtcmemPdu( m_defaultRtcmem( 123, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") } ) ) ) ); rtcmemPort.send(v_rtcmemReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_rtcmemReq.msgOut, vc_utEvents[i].rtcmemMsg); i := i + 1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": FAIL: RTCMEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { log("*** " & testcasename() & ": PASS: RTCMEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_RCV_SSP_BO_02 } // End of group security group eventReception { /** * @desc TP Function for TC_IS_GPC_RCV_MSGF_BV_01 */ function f_IS_GPC_RCV_MSGF_BV_01() runs on ItsRtcmem { // Local variables var RtcmemReq v_rtcmmReq; var integer i; // Test control if (not PICS_RTCMEM_RECEPTION) { log("*** " & testcasename() & ": PICS_RTCMEM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_rtcmmReq := valueof( m_rtcmemReq( m_rtcmemPdu( m_defaultRtcmem( 123, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") } ) ) ) ); rtcmemPort.send(v_rtcmmReq); f_sleep(PX_TNOAC); for(i:=0; i < lengthof(vc_utEvents) and not match(v_rtcmmReq.msgOut, vc_utEvents[i].rtcmemMsg); i:=i+1) { // empty on purpose } if(i < lengthof(vc_utEvents)) { log("*** " & testcasename() & ": PASS: RTCMEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: RTCMEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_GPC_RCV_MSGF_BV_01 } // End of group eventReception } // End of module ItsRtcmem_TpFunctions ats_ts103191-3-devel/ItsSpatem_TestCases.ttcn 0000664 0000000 0000000 00000261635 14553501104 0021063 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF484 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsMapemSpatem/ItsSpatem_TestCases.ttcn $ * $Id: ItsSpatem_TestCases.ttcn 2646 2016-12-16 07:35:58Z garciay $ * @desc Testcases for TLM Service * @reference ETSI TS 103 301 v1.3.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 ItsSpatem_TestCases { // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; // LibItsMapemSpatem import from ItsSpatem_TpFunctions all; testcase TC_IS_TLM_xxx_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_TC_IS_TLM_xxx_BV_01(); } group spateMessageDissemination { group spateMessageFormat { /** * @desc Check that protocolVersion is set to 1 and messageID is set to 4 *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid SPATEM * containing ITS PDU header * containing protocolVersion * indicating value '1' * and containing messageID * indicating value '4' * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 5.3 */ testcase TC_IS_TLM_GEN_MSGF_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_01(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_01 /** * @desc An IUT shall include the unique identifier for the intersection as part of * the signal phase and timing message broadcast *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id * indicating unique intersection identifier * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_02 * @reference CEN ISO/TS 19091 [4], clauses 6.7.3, G */ testcase TC_IS_TLM_GEN_MSGF_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_02(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_02 /** * @desc Check that TLM service generates a SPAT message with the revision data element * synchronized with the revision data element in the intersection configuration * of the roadway geometric information (MAP) *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the Iast broadcastet MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing revision * indicating (R) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * containing id of type IntersectionReferenceID * indicating ID * } * then { * the IUT sends a valid SPATEM * containing the elements of type IntersectionState * containing revision * indicating R * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_03 * @reference CEN ISO/TS 19091 [4], clause G.4 */ testcase TC_IS_TLM_GEN_MSGF_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_03(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_03 /** * @desc An IUT shall include a timestamp as part of the signal phase and timing message broadcast. *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing moy * indicating the minute of the year when message was generated * containing timeStamp * indicating the millisecond of the current minute * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_04 * @reference CEN ISO/TS 19091 [4], clauses 6.7.5, G */ testcase TC_IS_TLM_GEN_MSGF_BV_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_04(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_04 /** * @desc An IUT shall include signalGroupe for each intersection if this signalGroup is defined in the * intersection configuration of the roadway geometric information (MAP) *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * containing id of type IntersectionReferenceID * indicating ID * } * then { * the IUT sends a valid SPATEM * containing elements of type IntersectionState * containing spat * containing intersections * containing as many elements of type IntersectionState as needed * containing states * containing as many elements of type MovementState as needed * containing signalGroup * indicating SG * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_05 * @reference CEN ISO/TS 19091 [4], clause 6.7.6 */ testcase TC_IS_TLM_GEN_MSGF_BV_05 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_05(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_05 /** * @desc For each vehicular manoeuvre at a signalized intersection, an IUT shall include the current * movement state. *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * and containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing states * containing elements of type MovementState * containing signalGroup * indicating SG * containing state-time-speed * containing elements of type MovementEvent * not containing timing * or containing timing * indicating time interval containing current time * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_06 * @reference CEN ISO/TS 19091 [4], clauses 6.7.8 */ testcase TC_IS_TLM_GEN_MSGF_BV_06 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_06(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_06 /** * @desc For each pedestrian manoeuvre at a signalized intersection, an IUT shall include the current * movement state. *
* Pics Selection: PICS_SPATEM_GENERATION and PICS_PEDESTRIAN_MANOEUVRES * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing crosswalk * or containing sidewalk * and containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing states * containing elements of type MovementState * containing signalGroup * indicating SG * containing state-time-speed * containing elements of type MovementEvent * not containing timing * or containing timing * indicating time interval containing current time * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_07 * @reference CEN ISO/TS 19091 [4], clauses 6.7.9 */ testcase TC_IS_TLM_GEN_MSGF_BV_07 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_MSGF_BV_07(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_07 /** * @desc For each active manoeuvre an IUT shall include the earliest time point when the manoeuvre * state is predicted to change *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * and containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing states * containing elements of type MovementState * containing signalGroup * indicating SG * and containing state-time-speed * containing elements of type MovementEvent * containing timing * containing minEndTime * indicating time point when state can be changed * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_08 * @reference CEN ISO/TS 19091 [4], clause 6.7.11 */ testcase TC_IS_TLM_GEN_MSGF_BV_08 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_08(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_08 /** * @desc For each manoeuvre at a signalized intersection, an IUT shall include: * - the next expected movement states pertaining to that manoeuvre * - the time point for when the succeeding manoeuvre state is predicted to change * - the start time for each pending manoeuvre *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * and containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing states * containing elements of type MovementState * containing signalGroup * indicating SG * and containing state-time-speed * containing elements of type MovementEvent [1..N] * containing timing * containing minEndTime * indicating the earliest time point when state ends * and optionally containing startTime * indicating time point when state starts * and containing nextTime * indicating time point when the manoeuvre will next be permitted * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_09 * @reference CEN ISO/TS 19091 [4], clauses 6.7.13, 6.7.14 */ testcase TC_IS_TLM_GEN_MSGF_BV_09 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_09(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_09 /** * @desc Check that SPAT message prioritization is encoded using regional extension. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_SPATEM_PRIORITIZATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the IUT received CAM * containing stationId * indicating (PrioSID) * triggerring the prioritization request * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * containing prioritization response * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing regional * containing element of type IntersectionState-addGrpC * containing activePrioritizations * containing stationID * indicating PrioSID * and containing priorState * indicating prioritization request status * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_10 * @reference CEN ISO/TS 19091 [4], clauses G.5.1.4 and G.8.2.5.2 */ testcase TC_IS_TLM_GEN_MSGF_BV_10 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_10(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_10 /** * @desc For each manoeuvre at a signalized intersection, an IUT shall indicate if one or * more pedestrians have been detected in the pedestrian crossing. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_SPATEM_PEDESTRIAN_MANOEUVRES * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * and containing connectsTo * containing elements of type Connection * containing connectionID (CONN_ID) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * indicating presence of pedestrians on the signalized intersection * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing maneuverAssistList * containing elements of type ConnectionManeuverAssist * containing connectionID * indicating CONN_ID * and containing pedBicycleDetect * indicating true * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_12 * @reference CEN ISO/TS 19091 [4], clauses 6.7.16 */ testcase TC_IS_TLM_GEN_MSGF_BV_11 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_11(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_11 /** * @desc An IUT shall transmit information about the optimal speed for vehicles on each lane *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_OPTIMAL_SPEED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * and containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing states * containing elements of type MovementState * containing signalGroup * indicating SG * and containing state-time-speed * containing elements of type MovementEvent * containing speeds * containing element of type AdvisorySpeed * containing type * indicating ecoDrive or transit * and containing speed * indicating optimal speed * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_12 * @reference CEN ISO/TS 19091 [4], clauses 6.7.18 */ testcase TC_IS_TLM_GEN_MSGF_BV_12 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_12(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_12 /** * @desc An IUT shall transmit information about the signal timing progression speed along the * roadway. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * and containing connectsTo * containing elements of type Connection * containing signalGroup * indicating (SG) * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing states * containing elements of type MovementState * containing signalGroup * indicating SG * and containing state-time-speed * containing elements of type MovementEvent * containing speeds * containing element of type AdvisorySpeed * containing type * indicating greenwave * and containing speed * indicating the signal timing progression speed * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_13 * @reference CEN ISO/TS 19091 [4], clauses 6.7.19 */ testcase TC_IS_TLM_GEN_MSGF_BV_13 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_13(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_13 /** * @desc An IUT shall transmit the length of the queue and the length of available * vehicular storage on each egress lane. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_EGRESS_QUEUE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * and the last broadcasted MAPEM is * containing id of type IntersectionReferenceID * indicating ID * and containing elements of type IntersectionGeometry * containing laneSet * containing elements of type GenericLane * containing laneAttributes * containing laneType * containing vehicle * } * Expected behaviour: * ensure that { * when { * the TLM service is requested to send a SPATEM * } * then { * the IUT sends a valid SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing id of type IntersectionReferenceID * indicating ID * and containing maneuverAssistList * containing elements of type ConnectionManeuverAssist * containing queueLength * indicating current length of the queue * and containing availableStorageLength * indicating available space for the line queue * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_MSGF_BV_13 * @reference CEN ISO/TS 19091 [4], clauses 6.7.20, 6.7.21 */ testcase TC_IS_TLM_GEN_MSGF_BV_14 () runs on ItsMtc { f_IS_TLM_GEN_MSGF_BV_14(); } // End of testcase TC_IS_TLM_GEN_MSGF_BV_14 } // End of group spateMessageFormat group spateEventGeneration { /** * @desc Check that TLM Service generates a new SPATEM on reception of a valid AppSPATEM _Start request *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT has not sent any SPATEM yet * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSPATEM_Start request from the application layer * } * then { * the IUT sends a valid SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_EVGN_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 5.4.2 */ testcase TC_IS_TLM_GEN_EVGN_BV_01() runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_EVGN_BV_01(); } // End of testcase TC_IS_TLM_GEN_EVGN_BV_01 /** * @desc Check that TLM Service generates SPATEM are time ordered *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT has sent a SPATEM * } * Expected behaviour: * ensure that { * when { * several SPATEM are generated * } * then { * the IUT sends SPATEM in time order * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_EVGN_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 5.4.2 */ testcase TC_IS_TLM_GEN_EVGN_BV_02() runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_EVGN_BV_02(); } // End of testcase TC_IS_TLM_GEN_EVGN_BV_02 /** * @desc Check that TLM Service terminates on reception of a valid AppSPATEM _Stop request *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSPATEM _Stop request from the application layer * } * then { * the IUT stops sending SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_EVGN_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 5.4.2 */ testcase TC_IS_TLM_GEN_EVGN_BV_03() runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_EVGN_BV_03(); } // End of testcase TC_IS_TLM_GEN_EVGN_BV_03 /** * @desc Check that TLM Service generates a new SPATEM on reception of a valid AppSPATEM_Trigger request *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSPATEM _Trigger request from the application layer * } * then { * the IUT sends a valid SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_EVGN_BV_04 * @reference ETSI TS 103 301 v1.3.1 Clause 5.4.2 */ testcase TC_IS_TLM_GEN_EVGN_BV_04() runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_EVGN_BV_04(); } // End of testcase TC_IS_TLM_GEN_EVGN_BV_04 } // End of group spateEventGeneration group spateCommunication { /** * @desc Check that TLM Service provides the destination area in SPATEM *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid SPATEM * containg spat * containing regional * containing at least on region * indicating a regionId * and indication a regExtValue * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_COM_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_COM_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_COM_BV_01(); } // End of testcase TC_IS_TLM_GEN_COM_BV_01 /** * @desc Check that SPATEM uses BTP_B packet. Check that the destination port for SPATEM is set to 2004 *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_SHORT_RANGE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid SPATEM * encapsulated in a BTP-B packet * containing a destination port value set to 2004 * and containing a destination port info value set to 0 * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_COM_BV_02 * @reference ETSI TS 103 301 [2], clauses 10.2 and 5.4.3.2 */ testcase TC_IS_TLM_GEN_COM_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_COM_BV_02(); } // End of testcase TC_IS_TLM_GEN_COM_BV_02 /** * @desc Check that TLM service encapsulates SPATEM in a GBC with the HeaderType field set to the value of 4 *
* Pics Selection: PICS_SPATEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid SPATEM * encapsulated in a GBC packet * containing a correctly formatted Common Header * containing HeaderType field * indicating the value '4' * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_COM_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_COM_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_COM_BV_03(); } // End of testcase TC_IS_TLM_GEN_COMM_BV_03 } // End of group spateCommunication } // End of group spateMessageDissemination group spateSecurityParameters { /** * @desc Check that TLM service uses certificate containing valid ITS AID to sign SPATEM messages. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid SPATEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SEC_BV_01 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SEC_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SEC_BV_01(); } // End of testcase TC_IS_TLM_GEN_SEC_BV_01 /** * @desc Check that TLM service uses generic security profile to sign SPATEM message and does * not include additional security header elements *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT sending SPATEM * } * Expected behaviour: * ensure that { * when { * a SPATEM is generated * } * then { * the IUT sends a valid SPATEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_SPATEM * and containing generationTime * indicating realistic generation time * and optionally containing generationLocation * and not containing other header items * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SEC_BV_02 * @reference ETSI TS 103 301 [2], clause 12 */ testcase TC_IS_TLM_GEN_SEC_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SEC_BV_02(); } // End of testcase TC_IS_TLM_GEN_SEC_BV_02 /** * @desc Check that TLM service uses certificate containing valid Service Specific Permissions of * type BitmapSsp to sign SPATEM messages and the SSP version is set to 1 *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * not containing intersection states * and not containing prioritization * and not containing manoeuvre assist information * } * then { * the IUT sends a SPATEM * signed with the CERT_SPAT_SSP_NONE * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 4.5.1 */ testcase TC_IS_TLM_GEN_SSP_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BV_01(); } // End of testcase TC_IS_TLM_GEN_SSP_BV_01 /** * @desc Check that TLM service sends a SPAT message containing IntersectionState without * prioritization and manoeuvre assist information when it is permitted by the signing certificate *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_ALL * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 8 set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * not containing prioritization and manoeuvre assist information * } * then { * the IUT sends a SPATEM * signed with the CERT_SPAT_SSP_ALL * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BV_02 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BV_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BV_02(); } // End of testcase TC_IS_TLM_GEN_SSP_BV_02 /** * @desc Check that TLM service does not send a SPAT message containing IntersectionState if it is * not permitted by the certificate *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_NONE * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing intersections state * } * then { * the IUT does not send a SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BO_03 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BO_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BO_03(); } // End of testcase TC_IS_TLM_GEN_SSP_BO_03 /** * @desc Check that TLM service sends a SPAT message containing public transport prioritization * response when it is permitted by the signing certificate . *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_ALL * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 9 set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing public transport prioritization respond * } * then { * the IUT sends a SPATEM * signed with the CERT_SPAT_SSP_ALL * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BV_04 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BV_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BV_04(); } // End of testcase TC_IS_TLM_GEN_SSP_BV_04 /** * @desc Check that TLM service does not send a SPAT message containing IntersectionState if it is * not permitted by the certificate. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 9 set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing public transport prioritization respond * } * then { * the IUT does not send a SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BO_05 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BO_05 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BO_05(); } // End of testcase TC_IS_TLM_GEN_SSP_BO_05 /** * @desc Check that TLM service sends a SPAT message containing Intersection maneuver assisting * information when it is permitted by the signing certificate *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_ALL * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 10 set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing spat.intersections.IntersectionState.maneuverAssistList * } * then { * the IUT sends a SPATEM * signed with the CERT_SPAT_SSP_ALL * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BV_06 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BV_06 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BV_06(); } // End of testcase TC_IS_TLM_GEN_SSP_BV_06 /** * @desc Check that TLM service sends a SPAT message containing movement state maneuver * assisting information when it is permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_ALL * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 10 set to 1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing spat.intersections.IntersectionState.states.MovementState.maneuverAssistList * } * then { * the IUT sends a SPATEM * signed with the CERT_SPAT_SSP_ALL * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BV_07 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BV_07 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BV_07(); } // End of testcase TC_IS_TLM_GEN_SSP_BV_07 /** * @desc Check that TLM service does not send a SPAT message containing intersection maneuver * assisting information if it is not permitted by the certificate. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 10 set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing spat.intersections.IntersectionState.maneuverAssistList * } * then { * the IUT does not send a SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BO_08 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BO_08 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BO_08(); } // End of testcase TC_IS_TLM_GEN_SSP_BO_08 /** * @desc Check that TLM service does not send a SPAT message containing movement state * maneuver assisting information if it is not permitted by the certificate. *
* Pics Selection: PICS_SPATEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SPATEM with the certificate CERT_SPAT_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 10 set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SPATEM * containing spat.intersections.IntersectionState.states.MovementState.maneuverAssistList * } * then { * the IUT sends a SPATEM * the IUT does not sends a SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_SSP_BO_09 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_GEN_SSP_BO_09 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_SSP_BO_09(); } // End of testcase TC_IS_TLM_GEN_SSP_BO_09 } //end group spateSecurityParameters group spateTransmissionRateReq { /** * @desc Check that the IUT transmits SPATEM with valid transmission rate. *
* Pics Selection: PICS_SPATEM_GENERTION AND PICS_SPATEM_TRANSMISSION_RATE * Initial conditions: * with { * the IUT being in the "SPATEM initial state" * the IUT has sent SPATEM message at TIME_1 * } * Expected behaviour: * ensure that { * when { * UIT is triggered to send a next SPATEM * } * then { * the IUT sends SPATEM at TIME_2 * indicating DELTA = TIME_2 - TIME_1 * where DELTA is less than 2 second and more then 100ms * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_GEN_RATE_BV_01 * @reference CEN ISO/TS 19091 [4], clauses 6.17 */ testcase TC_IS_TLM_GEN_RATE_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_GEN_RATE_BV_01(); } // End of testcase TC_IS_TLM_GEN_RATE_BV_01 } // End of group spateTransmissionRateReq group spateMessageProcessing { /** * @desc Check that the IUT can successfully process all mandatory fields of SPATEM received *
* Pics Selection: PICS_SPATEM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having receive a valid SPATEM * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid SPATEM * } * then { * the IUT forwards the SPATEM content to upper layers * and the IUT forwards the SPATEM content to other facilities * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 5.3 */ testcase TC_IS_TLM_RCV_MSGF_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_MSGF_BV_01(); } // End of testcase TC_IS_TLM_RCV_MSGF_BV_01 /** * @desc Check that the IUT accepts the SPATEM message permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * not containing intersections * containing any elements of type IntersectionState * containing states * not containing any element * and not containing regional * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * } * then { * the IUT accepts the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SEC_BV_01 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SEC_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SEC_BV_01(); } // End of testcase TC_IS_TLM_RCV_SEC_BV_01 /** * @desc Check that the IUT discards the SPATEM message not permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing states * not containing any element * and not containing regional * and signed with the certificate * not containing appPermission item * containing psid * indicating ITS_AID_SPATEM * } * then { * the IUT skips the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SEC_BO_01 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SEC_BO_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SEC_BO_01(); } // End of testcase TC_IS_TLM_RCV_SEC_BO_01 /** * @desc Check that the IUT accepts the SPATEM message containing IntersectionState without * additional information permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing states * not containing elements of type MovementState * containing maneuverAssistList * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 8 set to 1 * } * then { * the IUT accepts the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SSP_BV_01 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SSP_BV_01 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SSP_BV_01(); } // End of testcase TC_IS_TLM_RCV_SSP_BV_01 /** * @desc Check that the IUT skips the SPATEM message containing IntersectionState without * additional information not permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing states * not containing elements of type MovementState * containing maneuverAssistList * and not containing maneuverAssistList * and not containing regional * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 8 set to 0 * } * then { * the IUT skips the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SSP_BO_02 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SSP_BO_02 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SSP_BO_02(); } // End of testcase TC_IS_TLM_RCV_SSP_BO_02 /** * @desc Check that the IUT accepts the SPATEM message containing IntersectionState with public * transport prioritization response permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing states * not containing elements of type MovementState * containing maneuverAssistList * and not containing maneuverAssistList * and containing regional * containing element of type IntersectionState-aggGrpC * containing activePrioritizations * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 9 set to 1 * } * then { * the IUT accepts the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SSP_BV_03 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SSP_BV_03 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SSP_BV_03(); } // End of testcase TC_IS_TLM_RCV_SSP_BV_03 /** * @desc Check that the IUT skips the SPATEM message containing IntersectionState with public * transport prioritization response not permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing states * not containing elements of type MovementState * containing maneuverAssistList * and not containing maneuverAssistList * and containing regional * containing element of type IntersectionState-aggGrpC * containing activePrioritizations * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 9 set to 0 * } * then { * the IUT skips the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SSP_BO_04 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SSP_BO_04 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SSP_BO_04(); } // End of testcase TC_IS_TLM_RCV_SSP_BO_04 /** * @desc Check that the IUT accepts the SPATEM message containing IntersectionState with * manoeuvre assist information permitted by the signing certificate. *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing maneuverAssistList * and not containing regional * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 10 set to 1 * } * then { * the IUT accepts the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SSP_BV_05 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SSP_BV_05 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SSP_BV_05(); } // End of testcase TC_IS_TLM_RCV_SSP_BV_05 /** * @desc Check that the IUT skips the SPATEM message containing IntersectionState with * manoeuvre assist information permitted by the signing certificate *
* Pics Selection: PICS_SPATEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SPATEM * containing spat * containing intersections * containing elements of type IntersectionState * containing maneuverAssistList * and not containing regional * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SPATEM * and containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating bit at position 10 set to 0 * } * then { * the IUT skips the received SPATEM * } * } ** * @version 1.1.1 * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLM_RCV_SSP_BO_06 * @reference ETSI TS 103 301 [2], clause 5.4.3.2 */ testcase TC_IS_TLM_RCV_SSP_BO_06 () runs on ItsMapemSpatem system ItsMapemSpatemSystem { f_IS_TLM_RCV_SSP_BO_06(); } // End of testcase TC_IS_TLM_RCV_SSP_BO_06 } // End of group spateMessageProcessing } // End of module ItsSpatem_TestCases ats_ts103191-3-devel/ItsSpatem_TpFunctions.ttcn 0000664 0000000 0000000 00000407017 14553501104 0021435 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 /TTF002 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsMapemSpatem/ItsSpatem_TpFunctions.ttcn $ * $Id: ItsSpatem_TpFunctions.ttcn,v 1.4 2018/12/06 17:59:36 dte Exp $ * @desc SPATEM TP functions * @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 ItsSpatem_TpFunctions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; import from LibItsMapemSpatem_Functions all; import from LibItsMapemSpatem_Templates all; import from LibItsMapemSpatem_TypesAndValues all; import from LibItsMapemSpatem_Pics all; function f_TC_IS_TLM_xxx_BV_01 () runs on ItsMapemSpatem { var octetstring v_os := '020400013db00018800085dc8100001e7800444000321450005523c002a8043840018900020b79de8c1c418064c78c07981e0d4a808047b94b941ccb4474cd5ac58df09911feeacb4c89ad487e6b7cdd0a7de2fd6bdfec6786ee22eea496e6afd96f1462a451292339071786fbf918ca11b08b913472'O; var bitstring v_bs := oct2bit(v_os); var SPATEM v_spatem; if (decvalue(v_bs, v_spatem) == 0) { log("Spatem #1: ", v_spatem); v_os := '020400013db00018800085dc8100001e77fb7d8000321430460f22c2307802a840018900020b79ddb60e938064c78c07981e0d4a808054602ffa352f526f59f3d14b35c6b5728663ee2229c7b865fb96c45765c8c9f34d56030279b078247c94c5aa3456053e21675f8d037b0a467df414eb3f2ca720'O; v_bs := oct2bit(v_os); if (decvalue(v_bs, v_spatem) == 0) { log("Spatem #2: ", v_spatem); v_os := '020400013db00018800085dc8100001e77fbbc1000321450005523c002a8043840018900020b79ddc556b48064c78c07981e0d4a808067e9afcdea14074c82dd4d98b5d1fbaecc0bc57ede228bb71db35aa8438ef03c3a229a1b886630f0aad89fdfc169536407b653142f60f2998753ae1b2c540f6e'O; v_bs := oct2bit(v_os); if (decvalue(v_bs, v_spatem) == 0) { log("Spatem #3: ", v_spatem); setverdict(pass); } else { log("Error"); setverdict(fail); } } else { log("Error"); setverdict(fail); } } else { log("Error"); setverdict(fail); } } group spateMessageDissemination { group spateMessageFormat { /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_01 */ function f_IS_TLM_GEN_MSGF_BV_01 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for SPATEM sent tc_ac.start(2.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_01 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_02 */ function f_IS_TLM_GEN_MSGF_BV_02 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for SPATEM sent tc_ac.start(2.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( ?, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status - //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_02 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_03 */ function f_IS_TLM_GEN_MSGF_BV_03 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for SPATEM sent tc_ac.start(2.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( -, //IntersectionReferenceID p_id ?, //MsgCount p_revision -, //IntersectionStatusObject p_status - //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_03 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_04 */ function f_IS_TLM_GEN_MSGF_BV_04 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for SPATEM sent tc_ac.start(2.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState_moyAndTimeStamp} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_04 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_05 */ function f_IS_TLM_GEN_MSGF_BV_05 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for SPATEM sent tc_ac.start(2.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( -, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status {*, mw_movementState, *} //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_05 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_06 */ function f_IS_TLM_GEN_MSGF_BV_06 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, ? ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status { *, mw_movementState( ?,//SignalGroupID, ? //MovementEventList, ), * } //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_06 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_07 */ function f_IS_TLM_GEN_MSGF_BV_07 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status { *, mw_movementState( ?,//SignalGroupID, ? //MovementEventList, ), * } //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_07 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_08 */ function f_IS_TLM_GEN_MSGF_BV_08 () runs on ItsMtc { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status { *, mw_movementState( ?,//SignalGroupID, { mw_movementEvent( //MovementEventList, -, mw_timeChangeDetails( //timing ? //minEndTime ) ) } ), * } //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_08 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_09 */ function f_IS_TLM_GEN_MSGF_BV_09 () runs on ItsMtc { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status { *, mw_movementState( ?,//SignalGroupID, { mw_movementEvent( //MovementEventList, -, mw_timeChangeDetails( //timing ?, //minEndTime *, //startTime ? //nextTime ) ) } ), * } //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_09 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_10 */ function f_IS_TLM_GEN_MSGF_BV_10 () runs on ItsMtc { // Local variables var ItsMapemSpatem v_mapem; var ItsMapemSpatem v_spatem; // Test control if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_PRIORITIZATION)) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_PRIORITIZATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf02Up(); // Preamble // Start components v_mapem := f_getComponent(c_compMap); v_spatem := f_getComponent(c_compSpat); v_mapem.start(f_IS_TLM_GEN_MSGF_BV_10_MAPEM()); v_spatem.start(f_IS_TLM_GEN_MSGF_BV_10_SPATEM()); // Synchronization f_serverSync2ClientsAndStop({c_prDone, c_tbDone}); // Cleanup f_cf02Down(); } // End of function f_IS_TLM_GEN_MSGF_BV_10 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_10_CAM */ function f_IS_TLM_GEN_MSGF_BV_10_MAPEM () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; var IntersectionReferenceID v_id; // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( {mw_intersectionGeometry( ?,//IntersectionReferenceId -, -, {mw_roadLane( -,//laneID ?,//laneAttributes -,//p_ingressApproach -,//egressApproach ? //connectsTo )} )} ) )), v_mapem ); v_id := v_mapem.msgIn.map_.intersections[0].id; log("IntersectionReferenceID = ", v_id); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } // End of function f_IS_TLM_GEN_MSGF_BV_10_MAPEM /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_10_SPATEM */ function f_IS_TLM_GEN_MSGF_BV_10_SPATEM () runs on ItsMapemSpatem { // Local variables // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for SPATEM sent tc_ac.start(2.0); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState_regional( ?, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status -, ? //regional )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); } // End of function f_IS_TLM_GEN_MSGF_BV_10_SPATEM /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_11 */ function f_IS_TLM_GEN_MSGF_BV_11 () runs on ItsMtc { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_SPATEM_PEDESTRIAN_MANOEUVRES) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_SPATEM_PEDESTRIAN_MANOEUVRES required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_utTriggerEvent(m_utTriggerEvent(tlmPedestrianDetected)); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState_maneuverAssistList( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject, -, { *, mw_connectionManeuverAssist( ?, // connectionID ? // pedBicycleDetect ), * } ) } ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_11 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_12 */ function f_IS_TLM_GEN_MSGF_BV_12 () runs on ItsMtc { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_OPTIMAL_SPEED)) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_OPTIMAL_SPEED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile1)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status { *, mw_movementState( ?,//SignalGroupID, { mw_movementEvent( //MovementEventList, -, -, { mw_advisorySpeed( //speeds (ecoDrive, transit), //type ? //speed ) } ) } ), * } //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_12 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_13 */ function f_IS_TLM_GEN_MSGF_BV_13 () runs on ItsMtc { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED)) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile2)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status { *, mw_movementState( ?,//SignalGroupID, { mw_movementEvent( //MovementEventList, -, -, { mw_advisorySpeed( //speeds greenwave, //type ? //speed ) } ) } ), * } //MovementList p_states )} ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_13 /** * @desc TP Function for TC_IS_TLM_GEN_MSGF_BV_14 */ function f_IS_TLM_GEN_MSGF_BV_14 () runs on ItsMtc { // Local variables var MapemInd v_mapem; var SpatemInd v_spatem; // Test control if (not (PICS_SPATEM_GENERATION and PICS_SPATEM_HAS_EGRESS_QUEUE)) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION AND PICS_SPATEM_HAS_EGRESS_QUEUE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile3)); // Wait for MAPEM sent f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_mapem( { mw_intersectionGeometry( -, -, -, { *, mw_roadLane(-, mw_laneAttributes_crosswak), * } ) } ))), v_mapem ); // Wait for SPATEM sent f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem )), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_intersections( {mw_IntersectionState_maneuverAssistList( v_mapem.msgIn.map_.intersections[0].id, //IntersectionReferenceID p_id -, //MsgCount p_revision -, //IntersectionStatusObject p_status -, //MovementList p_states { *, mw_connectionManeuverAssist_queueAndAvailableStorageLength, * } ) } ) ) )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SAPTEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_MSGF_BV_14 } // End of group spateMessageFormat group spateEventGeneration { /** * @desc TP Function for f_IS_TLM_GEN_EVGN_BV_01 */ function f_IS_TLM_GEN_EVGN_BV_01() runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received well-formed SPATEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a SPATEM with incorrect information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_EVGN_BV_01 /** * @desc TP Function for f_IS_TLM_GEN_EVGN_BV_02 */ function f_IS_TLM_GEN_EVGN_BV_02() runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ) ), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); // FIXME Add parameters to update default profile or create a MamSpatUpdate message tc_ac.start; alt { [] mapemSpatemPort.receive(v_spatem) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: The same SPATEM was received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received a new well-formed SPATE message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_EVGN_BV_02 /** * @desc TP Function for f_IS_TLM_GEN_EVGN_BV_03 */ function f_IS_TLM_GEN_EVGN_BV_03() runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ) ), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); mapemSpatemPort.clear; tc_noac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem ))) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: No more SPATEM messages were expected. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: TLM Service terminated. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_EVGN_BV_03 /** * @desc TP Function for f_IS_TLM_GEN_EVGN_BV_04 */ function f_IS_TLM_GEN_EVGN_BV_04() runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); tc_noac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem ))) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Initial conditions do not expect SPATEM messages. ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No SPATEM messages received. ***"); } } f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received a new well-formed SPATE message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_EVGN_BV_04 } // End of group spateEventGeneration group spateCommunication { /** * @desc TP Function for f_IS_TLM_GEN_COM_BV_01 */ function f_IS_TLM_GEN_COM_BV_01 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatem_with_region_id ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM using GBC. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_COM_BV_01 /** * @desc TP Function for f_IS_TLM_GEN_COM_BV_02_01 */ function f_IS_TLM_GEN_COM_BV_02_01 () runs on ItsMapemSpatem { // Local variables const UInt8 c_gnNhBtpB := 2; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithGnParameters( mw_spatemPdu, c_gnNhBtpB )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected SPATEM encapsultated in BTP-B packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive(mw_spatemIndWithGnParameters(mw_spatemPdu(mw_defaultSpatem), omit)) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: no GN NH information in SpatemInd ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } [] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not encapsulated in BTP-B packet ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_COM_BV_02_01 /** * @desc TP Function for f_IS_TLM_GEN_COM_BV_02 */ function f_IS_TLM_GEN_COM_BV_02 () runs on ItsMapemSpatem { // Local variables const UInt16 c_gnNhBtpBPort := 2004; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithBtpParameters( mw_spatemPdu, c_gnNhBtpBPort, 0 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected SPATEM encapsultated in BTP packet with port value 2004 received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not addressed to the correct destination port. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_COM_BV_02 /** * @desc TP Function for f_IS_TLM_GEN_COM_BV_03 */ function f_IS_TLM_GEN_COM_BV_03 () runs on ItsMapemSpatem { // Local variables const UInt8 c_gnHtGbc := 4; // Test control if (not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithGnParameters( mw_spatemPdu( mw_spatemWellFormatted ), -, c_gnHtGbc )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected SPATEM encapsulated in GBC packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_spatemIndWithGnParameters( mw_spatemPdu( mw_spatemWellFormatted ), -, omit )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Eno GN HT information in SpatemInd. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected SPATEM received, but not encapsulated in GBC packet. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_COM_BV_03 } // End of group spateCommunication } // End of group spateMessageDissemination group spateSecurityParameters { /** * @desc TP Function for TC_IS_TLM_GEN_SEC_BV_01 */ function f_IS_TLM_GEN_SEC_BV_01 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem ) ), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, -, c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SEC_BV_01 /** * @desc TP Function for TC_IS_TLM_GEN_SEC_BV_02 */ function f_IS_TLM_GEN_SEC_BV_02 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem ) ), v_spatem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, -, c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SEC_BV_02 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BV_01 */ function f_IS_TLM_GEN_SSP_BV_01 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('010000'O), c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BV_01 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BV_02 */ function f_IS_TLM_GEN_SSP_BV_02 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_ALL"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('018000'O), c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BV_02 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BO_03 */ function f_IS_TLM_GEN_SSP_BO_03 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('010000'O), c_its_aid_SPAT )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No SPAT message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BO_03 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BV_04 */ function f_IS_TLM_GEN_SSP_BV_04 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_ALL"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('014000'O), c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BV_04 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BO_05 */ function f_IS_TLM_GEN_SSP_BO_05 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('010000'O), c_its_aid_SPAT )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No SPAT message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BO_05 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BV_06 */ function f_IS_TLM_GEN_SSP_BV_06 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_ALL"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('012000'O), c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BV_06 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BV_07 */ function f_IS_TLM_GEN_SSP_BV_07 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_ALL"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('012000'O), c_its_aid_SPAT )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BV_07 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BO_08 */ function f_IS_TLM_GEN_SSP_BO_08 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('010000'O), c_its_aid_SPAT )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No SPAT message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BO_08 /** * @desc TP Function for TC_IS_TLM_GEN_SSP_BO_09 */ function f_IS_TLM_GEN_SSP_BO_09 () runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; // Test control if (not PICS_SPATEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState("CERT_SPAT_SSP_NONE"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(spatProfile0)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemIndWithSecurityParameters( mw_spatemPdu, oct2bit('010000'O), c_its_aid_SPAT )) { tc_noac.stop; log("*** " & testcasename() & ": FAIL: Unexpected secured SPATEM received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: No SPAT message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_SSP_BO_09 /** * @desc TP Function for TC_IS_TLM_GEN_RATE_BV_01 */ function f_IS_TLM_GEN_RATE_BV_01() runs on ItsMapemSpatem { // Local variables var SpatemInd v_spatem; timer t_minTransInterval := PICS_T_GEN_SPATEM_MIN * 0.90; timer t_maxTransInterval := PICS_T_GEN_SPATEM_MAX * 1.10; // Test control if (not PICS_SPATEM_GENERATION or not PICS_SPATEM_TRANSMISSION_RATE) { log("*** " & testcasename() & ": PICS_SPATEM_GENERATION and PICS_SPATEM_TRANSMISSION_RATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitSpateMessage( mw_spatemInd( mw_spatemPdu( mw_defaultSpatem ) ), v_spatem ); t_minTransInterval.start; t_maxTransInterval.start; f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu )) { tc_ac.stop; if (t_minTransInterval.running) { log("*** " & testcasename() & ": PASS: Successfully received SPATEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPAT message was received before t_minTransInterval expiry. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } } [] t_minTransInterval.timeout { repeat; } [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": FAIL: SPAT message was not received within the t_minTransInterval/t_maxTransInterval expiration ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_GEN_RATE_BV_01 }// end group spateSecurityParameters group spateMessageProcessing { /** * @desc TP Function for f_IS_TLM_RCV_MSGF_BV_01 */ function f_IS_TLM_RCV_MSGF_BV_01 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem))); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (valueof(v_spatemReq.msgOut) , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSpatemEvents) ) { log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_MSGF_BV_01 /** * @desc TP Function for TC_IS_TLM_RCV_SEC_BV_01 */ function f_IS_TLM_RCV_SEC_BV_01 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem))); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSpatemEvents) ) { log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SEC_BV_01 /** * @desc TP Function for TC_IS_TLM_RCV_SEC_BO_01 */ function f_IS_TLM_RCV_SEC_BO_01 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("TLM_RCV_SEC_BO_01"); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq(m_spatemPdu(m_defaultSpatem))); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); if (0 == lengthof(vc_utSpatemEvents) ) { log("*** " & testcasename() & ": PASS: SPATEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SEC_BO_01 /** * @desc TP Function for TC_IS_TLM_RCV_SSP_BV_01 */ function f_IS_TLM_RCV_SSP_BV_01 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq( m_spatemPdu( m_spatem( {m_intersection} ) ) )); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSpatemEvents) ) { log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SSP_BV_01 /** * @desc TP Function for TC_IS_TLM_RCV_SSP_BO_02 */ function f_IS_TLM_RCV_SSP_BO_02 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq( m_spatemPdu( m_spatem( {m_intersection} ) ) )); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if(lengthof(vc_utSpatemEvents)==0) { log("*** " & testcasename() & ": PASS: SPATEM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SSP_BO_02 /** * @desc TP Function for TC_IS_TLM_RCV_SSP_BV_03 */ function f_IS_TLM_RCV_SSP_BV_03 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq( m_spatemPdu( m_spatem( {m_intersection_regional} ) ) )); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSpatemEvents) ) { log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SSP_BV_03 /** * @desc TP Function for TC_IS_TLM_RCV_SSP_BO_04 */ function f_IS_TLM_RCV_SSP_BO_04 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq( m_spatemPdu( m_spatem( {m_intersection_regional} ) ) )); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if(lengthof(vc_utSpatemEvents)==0) { log("*** " & testcasename() & ": PASS: SPATEM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SSP_BO_04 /** * @desc TP Function for TC_IS_TLM_RCV_SSP_BV_05 */ function f_IS_TLM_RCV_SSP_BV_05 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq( m_spatemPdu( m_spatem( {m_intersection_maneuverAssistList( { m_connectionManeuverAssist(2) } )} ) ) )); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSpatemEvents) ) { log("*** " & testcasename() & ": PASS: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was not transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SSP_BV_05 /** * @desc TP Function for TC_IS_TLM_RCV_SSP_BO_06 */ function f_IS_TLM_RCV_SSP_BO_06 () runs on ItsMapemSpatem { // Local variables var SpatemReq v_spatemReq; var integer i; if (not PICS_SPATEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SPATEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_spatemReq := valueof(m_spatemReq( m_spatemPdu( m_spatem( {m_intersection_maneuverAssistList( { m_connectionManeuverAssist(2) } )} ) ) )); mapemSpatemPort.send(v_spatemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSpatemEvents) and not match (v_spatemReq.msgOut , vc_utSpatemEvents[i].spateMsg); i := i + 1) { // empty on purpose } if(lengthof(vc_utSpatemEvents)==0) { log("*** " & testcasename() & ": PASS: SPATEM was NOT transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SPATEM was transmitted to upper layer***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLM_RCV_SSP_BO_06 } // End of group spateMessageProcessing } // End of module ItsSpatem_TpFunctions ats_ts103191-3-devel/ItsSremSsem_TestControl.ttcn 0000664 0000000 0000000 00000010054 14553501104 0021735 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsSremSsem/ItsSremSsem_TestControl.ttcn $ * $Id: ItsSremSsem_TestControl.ttcn 2639 2016-12-14 09:22:07Z garciay $ * @desc Test Control file for TLC * @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 ItsSremSsem_TestControl { // ATS SREM import from ItsSrem_TestCases all; import from ItsSsem_TestCases all; // LibIts import from LibItsSremSsem_Pics all; // Test Execution control { if (PICS_SREM_GENERATION) { execute(TC_IS_TLCR_GEN_MSGF_BV_01()); execute(TC_IS_TLCR_GEN_EVGN_BV_01()); execute(TC_IS_TLCR_GEN_EVGN_BV_02()); execute(TC_IS_TLCR_GEN_EVGN_BV_03()); execute(TC_IS_TLCR_GEN_EVGN_BV_04()); execute(TC_IS_TLCR_GEN_EVGN_BV_05()); execute(TC_IS_TLCR_GEN_EVUP_BV_01()); if (PICS_SREM_CANCELATION) { execute(TC_IS_TLCR_GEN_CANC_BV_01()); } execute(TC_IS_TLCR_GEN_COM_BV_01()); if (PICS_SHORT_RANGE) { execute(TC_IS_TLCR_GEN_COM_BV_02()); } if (PICS_IS_IUT_SECURED) { execute(TC_IS_TLCR_GEN_SEC_BV_01()); execute(TC_IS_TLCR_GEN_SSP_BV_01()); execute(TC_IS_TLCR_GEN_SSP_BV_02()); execute(TC_IS_TLCR_GEN_SSP_BV_02_X()); execute(TC_IS_TLCR_GEN_SEC_BO_03()); execute(TC_IS_TLCR_GEN_SEC_BO_04()); } if (PICS_SREM_TRANSMISSION_RATE) { execute(TC_IS_TLCR_GEN_RATE_TI_01()); } } if (PICS_SREM_RECEPTION) { execute(TC_IS_TLCR_RCV_MSGF_BV_01()); if (PICS_IS_IUT_SECURED) { execute(TC_IS_TLCR_RCV_SSP_BV_01()); execute(TC_IS_TLCR_RCV_SSP_BO_01()); execute(TC_IS_TLCR_RCV_SSP_BO_02()); } } if (PICS_SSEM_RECEPTION) { execute(TC_IS_TLCS_RCV_MSGF_BV_01()); execute(TC_IS_TLCS_RCV_MSGF_BV_04()); } if (PICS_SREM_GENERATION and PICS_SSEM_GENERATION) { execute(TC_IS_TLCS_RCV_MSGF_BV_01()); execute(TC_IS_TLCS_GEN_MSGF_BV_02()); execute(TC_IS_TLCS_GEN_MSGF_BV_03()); execute(TC_IS_TLCS_GEN_COM_BV_01()); if (PICS_SHORT_RANGE) { execute(TC_IS_TLCS_GEN_COM_BV_02()); } execute(TC_IS_TLCS_GEN_EVUP_BV_01()); execute(TC_IS_TLCS_GEN_EVUP_BV_02()); } if (PICS_SSEM_GENERATION) { if (PICS_IS_IUT_SECURED) { execute(TC_IS_TLCS_GEN_SEC_BV_01()); execute(TC_IS_TLCS_GEN_SSP_BV_01()); } if (PICS_SSEM_TRATEMENT_DELAY) { execute(TC_IS_TLCS_GEN_RATE_TI_01()); } if (PICS_SSEM_TRANSMISSION_RATE) { execute(TC_IS_TLCS_GEN_RATE_TI_02()); } execute(TC_IS_TLCS_GEN_REP_01()); execute(TC_IS_TLCS_GEN_REP_02()); } if (PICS_SSEM_RECEPTION) { execute(TC_IS_TLCS_RCV_MSGF_BV_04()); if (PICS_IS_IUT_SECURED) { execute(TC_IS_TLCS_RCV_SSP_BV_05()); execute(TC_IS_TLCS_RCV_SSP_SO_05()); } } } } // End of module ItsSremSsem_TestControl ats_ts103191-3-devel/ItsSrem_TestCases.ttcn 0000664 0000000 0000000 00000113626 14553501104 0020534 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsSremSsem/ItsSrem_TestCases.ttcn $ * $Id: ItsSrem_TestCases.ttcn 2646 2016-12-16 07:35:58Z garciay $ * @desc Testcases for TLC Service * @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 ItsSrem_TestCases { // LibItsSremSsem import from LibItsSremSsem_TestSystem all; // ItsSremSsem import from ItsSrem_TpFunctions all; group sremGeneration { group sreMessageFormat { /** * @desc Check that protocolVersion is set to 1 and messageID is set to 9 *
* Pics Selection: PICS_SREM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new SREM * } * then { * the IUT sends a valid SREM * containing ITS PDU header * containing protocolVersion * indicating value '1' * and containing messageID * indicating value '9' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_RLT_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCR_GEN_MSGF_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_MSGF_BV_01(); } // End of testcase TC_IS_TLCR_GEN_MSGF_BV_01 } // End of group sreMessageFormat group sreEventGeneration { /** * @desc Check that IVI Service generates a new SREM on reception of a valid AppSREM_Trigger request *
* Pics Selection: PICS_SREM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSREM_Trigger request from the application layer * } * then { * the IUT sends a valid SREM * containing srm * containing requests * containing an item of type SignalRequestPackage * containing request * containing id * indicating the target intersection TI * and containing inBoundLane * indicating the approach information AI * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_EVGN_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_EVGN_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_EVGN_BV_01(); } // End of testcase TC_IS_TLCR_GEN_EVGN_BV_01 /** * @desc Check that the IUT generates SREM containing requestor information *
* Pics Selection: PICS_SREM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several SREM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * } * then { * the IUT sends a valid SREM * containing srm * containing requestor * containing type * containing role * indicating the IUT role * containing position * containing position * indicating the current IUT position * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_EVGN_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_EVGN_BV_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_EVGN_BV_02(); } // End of testcase TC_IS_TLCR_GEN_EVGN_BV_02 /** * @desc Check that the IUT generates SREM containing public transport information *
* Pics Selection: PICS_SREM_GENERATION and PICS_PUBLIC_TRANSPORT * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several SREM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * } * then { * the IUT sends a valid SREM * containing srm * containing requestor * containing type * containing role * indicating 'publicTransport' * and containing transitStatus * indicating the PTV status * and containing transitOccupancy * indicating the PTV loading level * and containing transitSchedule * indicating the difference in minutes between the scheduled and current location of the PTV * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_EVGN_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_EVGN_BV_03 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_EVGN_BV_03(); } // End of testcase TC_IS_TLCR_GEN_EVGN_BV_03 /** * @desc Check that the IUT generates SREM containing timing information *
* Pics Selection: PICS_SREM_GENERATION and PICS_SREM_HAS_TIMING * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several SREM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * } * then { * the IUT sends a valid SREM * containing srm * containing requests * containing an item of type SignalRequestPackage * containing minute and second * indicating the estimated duration between the current time and the moment * when IUT arrives to the intersection stopping point (TIME_1) * and containing duration * indicating the duration as seconds * when the request remains active after the TIME_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_EVGN_BV_03 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_EVGN_BV_04 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_EVGN_BV_04(); } // End of testcase TC_IS_TLCR_GEN_EVGN_BV_04 /** * @desc Check that the IUT identifies SREM with a unique request identifier *
* Pics Selection: PICS_SREM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generated several SREM * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a new SREM * } * then { * the IUT sends a valid SREM * containing srm * containing requests[0] * containing requestID * indicating an unused value * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_EVGN_BV_05 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_EVGN_BV_05 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_EVGN_BV_05(); } // End of testcase TC_IS_TLCR_GEN_EVGN_BV_05 } // End of group sreEventGeneration group sreEventUpdate { /** * @desc Check that the IUT increments the sequenceNumber when a SREM update is generated *
* Pics Selection: PICS_SREM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generate a SREM * containing srm * containing sequenceNumber * indicating SREM_SN_1 * and containing requests[0] * containing request * containing requestID * indicating SREM_RID_1 * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSREM_update request * } * then { * the IUT sends a valid SREM * containing srm * containing sequenceNumber * indicating SREM_SN_1+ 1 * and containing requests[0] * containing request * containing requestID * indicating SREM_RID_1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_EVUP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_EVUP_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_EVUP_BV_01(); } // End of testcase TC_IS_TLCR_GEN_EVUP_BV_01 } // End of group sreEventUpdate group sreEventCancelation { /** * @desc Check that the IUT increments the sequenceNumber when a SREM update is generated *
* Pics Selection: PICS_SREM_GENERATION and PICS_SREM_CANCELATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having generate a SREM * containing srm * containing sequenceNumber * indicating SREM_SN_1 * and containing requests[0] * containing request * containing requestID * indicating SREM_RID_1 * } * Expected behaviour: * ensure that { * when { * the IUT receives an AppSREM_cancel request * } * then { * the IUT sends a valid SREM * containing srm * containing requestor * containing id * indicating the vehicule ID (VID) * and containing requests * containing an item of type SignalRequestPackage * containing request * containing id * indicating the target intersection TI * and containing requestID * indicating value (ReqID) * and containing requestType * indicating 'priorityCancellation' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_CANC_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 */ testcase TC_IS_TLCR_GEN_CANC_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_CANC_BV_01(); } // End of testcase TC_IS_TLCR_GEN_CANC_BV_01 } // End of group sreEventCancelation group sreCommunication { /** * @desc Check that SREM uses BTP_B packet * Check that the destination port for IVIM is set to 2007 *
* Pics Selection: PICS_SREM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SREM * } * Expected behaviour: * ensure that { * when { * a SREM is generated * } * then { * the IUT sends a valid SREM * encapsulated in a BTP-B packet * containing a destination port value set to '2007' * and containing a destination port info value set to '0' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_COM_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.3 */ testcase TC_IS_TLCR_GEN_COM_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_COM_BV_01(); } // End of testcase TC_IS_TLCR_GEN_COM_BV_01 /** * @desc Check that TLM service encapsulates SREM in a GBC with the HeaderType field set to the value of 4 *
* Pics Selection: PICS_SREM_GENERATION and PICS_SHORT_RANGE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SREM * } * Expected behaviour: * ensure that { * when { * a SREM is generated * } * then { * the IUT sends a valid SREM * encapsulated in a GBC packet * containing a correctly formatted Common Header * containing HeaderType field * indicating the value '4' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_COM_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.3 */ testcase TC_IS_TLCR_GEN_COM_BV_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_COM_BV_02(); } // End of testcase TC_IS_TLCR_GEN_COM_BV_02 } // End of group sreCommunication group sreSecurity { /** * @desc Check that TLC service uses certificate containing valid ITS AID to sign SREM messages *
* Pics Selection: PICS_SREM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending SREM * } * Expected behaviour: * ensure that { * when { * a SREM is generated * } * then { * the IUT sends a valid SREM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * containing psid * indicating ITS_AID_SREM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_SEC_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.2 */ testcase TC_IS_TLCR_GEN_SEC_BV_01() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_SEC_BV_01(); } // End of testcase TC_IS_TLCR_GEN_SEC_BV_01 /** * @desc Check that TLC service uses certificate containing valid Service Specific Permissions of type BitmapSsp to sign SREM messages and the SSP version is set to 2 *
* Pics Selection: PICS_SREM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending SREM with the certificate CERT_SRM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SREM * containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * containing srm * containing requestor.type.role * indicating 'basicVehicle' * and not containing requests * } * then { * the IUT sends a valid SREM * signed with the CERT_SRM_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_SSP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.2 */ testcase TC_IS_TLCR_GEN_SSP_BV_01() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_SSP_BV_01(); } // End of testcase TC_IS_TLCR_GEN_SSP_BV_01 /** * @desc Check that TLC service uses certificate containing valid Service Specific Permissions to sign SRM requests *
* Pics Selection: PICS_SREM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending SREM with the certificate CERT_SRM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SREM * containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * containing srm * containing requestor.type.role * indicating 'basicVehicle' * and not containing requests * } * then { * the IUT sends a valid SREM * signed with the CERT_SRM_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_SSP_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.2 */ testcase TC_IS_TLCR_GEN_SSP_BV_02() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_SSP_BV_02(); } // End of testcase TC_IS_TLCR_GEN_SSP_BV_02 /** * @desc Check that TLC service uses certificate containing valid SSP permissions to sign SREM messages from different role ITS-S *
* Pics Selection: PICS_SREM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending SREM with the certificate CERT_SRM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SREM * containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * containing srm * containing requestor.type.role * indicating 'basicVehicle' * and not containing requests * } * then { * the IUT sends a valid SREM * signed with the CERT_SRM_SSP_NONE * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_SSP_BV_02_X * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.2 */ testcase TC_IS_TLCR_GEN_SSP_BV_02_X() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_SSP_BV_02_X(); } // End of testcase TC_IS_TLCR_GEN_SSP_BV_02_X /** * @desc Check that the IUT skips the SREM message containing request without additional information not permitted by the signing certificate *
* Pics Selection: PICS_SREM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending SREM with the certificate CERT_SRM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SREM * containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT receives SREM with the certificate CERT_SRM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SREM * containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * then { * the IUT discards the received SREM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_SEC_BO_03 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCR_GEN_SEC_BO_03() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_SEC_BO_03(); } // End of testcase TC_IS_TLCR_GEN_SEC_BO_03 /** * @desc Check that TLC service does not send SREM with priority request without possession of the certificate with prioritized SREM signing permissions *
* Pics Selection: PICS_SREM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT sending SREM with the certificate CERT_SRM_SSP_REQ * containing appPermission item * containing psid * indicating ITS_AID_SREM * containing bitmapSSP * indicating octet at position 0 set to 0x01 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SREM * containing srm * containing requests * and containing requestor * containing type * containing role * indicating ROLE_X * } * then { * the IUT discards the received SREM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_SEC_BO_04 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.2 */ testcase TC_IS_TLCR_GEN_SEC_BO_04() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_SEC_BO_04(); } // End of testcase TC_IS_TLCR_GEN_SEC_BO_04 } // End of group sreSecurity group sreMessageRate { /** * @desc Check that TLC service transmits the request with the valid rate *
* Pics Selection: PICS_SREM_GENERATION AND PICS_SREM_TRANSMISSION_RATE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT has sent previous SREM message at TIME_SREM_1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to repeat a SREM * } * then { * the IUT sends SREM at TIME_SREM_2 * where TIME_SREM_2 - TIME_SREM_1 is not less than 500ms * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_GEN_RATE_TI_01 * @reference ETSI TS 103 301 v1.3.1 Clause 6.14.1 */ testcase TC_IS_TLCR_GEN_RATE_TI_01() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_GEN_RATE_TI_01(); } // End of testcase TC_IS_TLCR_GEN_RATE_TI_01 } // End of group sreMessageRate } // End of group sremGeneration group sremReception { group sremReceptionMessageFormat { /** * @desc Check that the IUT can successfully process all mandatory fields of SREM received (TLC-S) *
* Pics Selection: PICS_SREM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT having receive a valid SREM * } * then { * the IUT forwards the SSEM content to upper layers * and the IUT forwards the SSEM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_RCV_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCR_RCV_MSGF_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_RCV_MSGF_BV_01(); } // End of testcase TC_IS_TLCR_RCV_MSGF_BV_01 } // End of group sremReceptionMessageFormat group sremReceptionSecurity { /** * @desc Check that the secured IUT accepts the SREM message without requests and without specific requestor role *
* Pics Selection: PICS_SREM_RECEPTION and PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT having receive a valid SREM * containing srm * containing requestor.type.role * indicating 'basicVehicle' * and not containing requests * and signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SREM * } * then { * the IUT accepts the received SREM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_RCV_SSP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCR_RCV_SSP_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_RCV_SSP_BV_01(); } // End of testcase TC_IS_TLCR_RCV_SSP_BV_01 /** * @desc Check that the secured IUT skips the SREM message without requests and without specific requestor role if signing certificate does not allow it *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SREM * containing srm * containing requests * and containing requestor * containing type * containing role * indicating 'basicVehicle' * and not containing requests * and signed with the certificate CERT_NONE * not containing appPermission item * containing psid * indicating ITS_AID_SREM * } * then { * the IUT discards the received SREM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_RCV_SSP_BO_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCR_RCV_SSP_BO_01() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_RCV_SSP_BO_01(); } // End of testcase TC_IS_TLCR_RCV_SSP_BO_01 /** * @desc Check that the secured IUT skips the SREM message with request and without specific requestor role if it is not allowed by the signing certificate *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SREM * containing srm * containing requests * and containing requestor * containing type * containing role * indicating 'basicVehicle' * and containing requests * and signed with the certificate CERT_SRM_SSP_NONE * containing appPermission item * containing psid * indicating ITS_AID_SREM * and containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * then { * the IUT discards the received SREM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCR_RCV_SSP_BO_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCR_RCV_SSP_BO_02() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCR_RCV_SSP_BO_02(); } // End of testcase TC_IS_TLCR_RCV_SSP_BO_02 } // End of group sremReceptionSecurity } // End of group sremReception } // End of module ItsSrem_TestCases ats_ts103191-3-devel/ItsSrem_TpFunctions.ttcn 0000664 0000000 0000000 00000225560 14553501104 0021113 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF525 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsSremSsem/ItsSrem_TpFunctions.ttcn $ * $Id: ItsSrem_TpFunctions.ttcn,v 1.2 2018/05/31 15:57:11 dte Exp $ * @desc SREM TP functions * @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 ItsSrem_TpFunctions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsSremSsem import from LibItsSremSsem_TestSystem all; import from LibItsSremSsem_Functions all; import from LibItsSremSsem_Templates all; import from LibItsSremSsem_TypesAndValues all; import from LibItsSremSsem_Pics all; import from LibItsSremSsem_Pixits all; group sremGeneration { group sreMessageDissemination { group sreMessageFormat { /** * @desc TP Function for TC_IS_TLCR_GEN_MSGF_BV_01 */ function f_IS_TLCR_GEN_MSGF_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM log("################### Rsp= ", v_sremInd.msgIn.srm); f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_MSGF_BV_01 } // End of group sreMessageFormat group sreEventGeneration { /** * @desc TP Function for TC_IS_TLCR_GEN_EVGN_BV_01 */ function f_IS_TLCR_GEN_EVGN_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted( -, { mw_signalRequestPackage( mw_signalRequest( mw_intersectionReferenceID(PX_INTERSECTION_ID), ?, priorityRequest )) } ) ))) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM containing requestor information. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_EVGN_BV_01 /** * @desc TP Function for TC_IS_TLCR_GEN_EVGN_BV_02 */ function f_IS_TLCR_GEN_EVGN_BV_02 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted( mw_requestorDescription( ?, -, mw_requestor_position ), { mw_signalRequestPackage( mw_signalRequest( mw_intersectionReferenceID(PX_INTERSECTION_ID), ?, priorityRequest )) } )))) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_EVGN_BV_02 /** * @desc TP Function for TC_IS_TLCR_GEN_EVGN_BV_03 */ function f_IS_TLCR_GEN_EVGN_BV_03 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_PUBLIC_TRANSPORT) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_PUBLIC_TRANSPORT required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(publicTransport, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted( mw_requestorDescription( ?, mw_requestorType(publicTransport), -, ?, ?, ? ), { mw_signalRequestPackage( mw_signalRequest( mw_intersectionReferenceID(PX_INTERSECTION_ID), ?, priorityRequest )) } )))) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_EVGN_BV_03 /** * @desc TP Function for TC_IS_TLCR_GEN_EVGN_BV_04 */ function f_IS_TLCR_GEN_EVGN_BV_04 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_PUBLIC_TRANSPORT) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_PUBLIC_TRANSPORT required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(publicTransport, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted( mw_requestorDescription, { mw_signalRequestPackage( mw_signalRequest( mw_intersectionReferenceID(PX_INTERSECTION_ID), ?, priorityRequest )) }, ? ) ))) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_EVGN_BV_04 /** * @desc TP Function for TC_IS_TLCR_GEN_EVGN_BV_05 */ function f_IS_TLCR_GEN_EVGN_BV_05 () runs on ItsSremSsem { // Local variables var template (value) UtSremTriggerList v_utTriggers := { m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID), m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID), m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID) } var boolean v_success := true; var RequestIDList v_requestIDList; var SremInds v_sremInds := {}; var integer i; // Test control if (not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble for (i := 0; i < lengthof(v_utTriggers) - 1; i := i + 1) { f_utTriggerEvent(valueof(v_utTriggers[i])); f_awaitSreMessage(mw_sremInd(mw_sremPdu(mw_sremWellFormatted)), v_sremInds[i]); v_requestIDList[i] := v_sremInds[i].msgIn.srm.requests[0].request.requestID; } f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body log("*** " & testcasename() & ": DEBUG: i=", i, ". ***"); f_utTriggerEvent(valueof(v_utTriggers[i])); f_awaitSreMessage(mw_sremInd(mw_sremPdu(mw_sremWellFormatted)), v_sremInds[i]); v_requestIDList[i] := v_sremInds[i].msgIn.srm.requests[0].request.requestID; //check the action id for (i := 0; i < lengthof(v_requestIDList) - 1; i := i + 1) { if (v_requestIDList[lengthof(v_requestIDList) - 1] == v_requestIDList[i]) { v_success := false; } } log("*** " & testcasename() & ": DEBUG: lengthof(v_requestIDList)=", lengthof(v_requestIDList), ". ***"); if (v_success==true) { log("*** " & testcasename() & ": PASS: RequestID field indicating unused value. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: RequestID field indicating used value. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } for (i := 0; i < lengthof(v_sremInds); i := i + 1) { // Send SSEM f_sendSseMessage(v_sremInds[i].msgIn.srm); } // Postamble log("*** " & testcasename() & ": DEBUG: lengthof(v_requestIDList)=", lengthof(v_requestIDList), ". ***"); for (i := 0; i < lengthof(v_requestIDList); i := i + 1) { f_utCancelationEvent(m_UtSremCancelationEvent(v_requestIDList[i])); f_awaitSreMessageCancellation(v_requestIDList[i]); } f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_EVGN_BV_05 } // End of group sreEventGeneration group sreEventUpdate { /** * @desc TP Function for TC_IS_TLCR_GEN_EVUP_BV_01 */ function f_IS_TLCR_GEN_EVUP_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; var MsgCount v_sequenceNumber; // Test control if (not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); f_awaitSreMessage(mw_sremInd(mw_sremPdu(mw_sremWellFormatted)), v_sremInd); f_sendSseMessage(v_sremInd.msgIn.srm); v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; v_sequenceNumber := v_sremInd.msgIn.srm.sequenceNumber; f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utUpdateEvent(m_utUpdateEvent(v_requestID, PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted( -, { mw_signalRequestPackage( mw_signalRequest( mw_intersectionReferenceID(PX_INTERSECTION_ID), v_requestID, priorityRequestUpdate )) }, (v_sequenceNumber + 1) mod 128 // See MsgCount declaration ) ))) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); if (not match(v_requestID, v_sremInd.msgIn.srm.requests[0].request.requestID)) { log("*** " & testcasename() & ": FAIL: requestID mismatch. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } else { log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_EVUP_BV_01 } // End of group sreEventUpdate group sreEventCancelation { /** * @desc TP Function for TC_IS_TLCR_GEN_CANC_BV_01 */ function f_IS_TLCR_GEN_CANC_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_SREM_CANCELATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_SREM_CANCELATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); f_awaitSreMessage(mw_sremInd(mw_sremPdu(mw_sremWellFormatted)), v_sremInd); f_sendSseMessage(v_sremInd.msgIn.srm); v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu( mw_sremWellFormatted(-, { mw_signalRequestPackage( mw_signalRequest( mw_intersectionReferenceID(PX_INTERSECTION_ID), v_requestID, priorityCancellation )) } ) ))) -> value v_sremInd { tc_ac.stop; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully cancel SREM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_CANC_BV_01 } // End of group sreEventCancelation group sreCommunication { /** * @desc TP Function for TC_IS_TLCR_GEN_COM_BV_01 */ function f_IS_TLCR_GEN_COM_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithBtpParameters( mw_sremPdu( mw_sremWellFormatted ), 2007, 0 )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Expected SREM encapsultated in BTP-B packet with port value 2007 received received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_COM_BV_01 /** * @desc TP Function for TC_IS_TLCR_GEN_COM_BV_02 */ function f_IS_TLCR_GEN_COM_BV_02 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_SHORT_RANGE) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_SHORT_RANGE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithGnParameters( mw_sremPdu, -, 4 )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Expected short range SRE message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_COM_BV_02 } // End of group sreCommunication group sreSecurity { /** * @desc TP Function for TC_IS_TLCR_GEN_SEC_BV_01 */ function f_IS_TLCR_GEN_SEC_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu, -, c_its_aid_TLC )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_SEC_BV_01 /** * @desc TP Function for TC_IS_TLCR_GEN_SSP_BV_01 */ function f_IS_TLCR_GEN_SSP_BV_01 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SRM_SSP_NONE"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu, oct2bit('020000'O), c_its_aid_TLC )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_SSP_BV_01 /** * @desc TP Function for TC_IS_TLCR_GEN_SSP_BV_02 */ function f_IS_TLCR_GEN_SSP_BV_02 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SRM_SSP_NONE"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu( mw_sremWellFormatted( mw_requestorDescription( ?, mw_requestorType(PX_SREM_CERTIFICATE_X_ROLE) ))), oct2bit('020000'O), c_its_aid_TLC )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_SSP_BV_02 /** * @desc TP Function for TC_IS_TLCR_GEN_SSP_BV_02_X */ function f_IS_TLCR_GEN_SSP_BV_02_X () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, PX_SREM_CERTIFICATE_X); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_SREM_CERTIFICATE_X_ROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu( mw_sremWellFormatted( mw_requestorDescription( ?, mw_requestorType(PX_SREM_CERTIFICATE_X_ROLE) ))), oct2bit(PX_SREM_CERTIFICATE_X_SSP), c_its_aid_TLC )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_SSP_BV_02_X /** * @desc TP Function for TC_IS_TLCR_GEN_SEC_BO_03 */ function f_IS_TLCR_GEN_SEC_BO_03 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SRM_SSP_NONE"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_noac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu, -, c_its_aid_TLC )) -> value v_sremInd { tc_noac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": FAIL: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: Message was discarded successfully. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_SEC_BO_03 /** * @desc TP Function for TC_IS_TLCR_GEN_SEC_BO_04 */ function f_IS_TLCR_GEN_SEC_BO_04 () runs on ItsSremSsem { // Local variables var FncRetCode v_ret; var SremInd v_sremInd; var RequestID v_requestID; // Test control if (not PICS_SREM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SRM_SSP_REQ"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(PX_SREM_CERTIFICATE_X_ROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_noac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu, -, c_its_aid_TLC )) -> value v_sremInd { tc_noac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": FAIL: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: Message was discarded successfully. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_SEC_BO_04 } // End of group sreSecurity group sreMessageRate { /** * @desc TP Function for TC_IS_TLCR_GEN_RATE_TI_01 */ function f_IS_TLCR_GEN_RATE_TI_01 () runs on ItsSremSsem { // Local variables var RequestID v_requestID; var SremInd v_sremInd; timer t_minTransInterval := PICS_T_GENSREMMIN * 0.90; timer t_maxTransInterval := PICS_T_GENSREMMIN * 1.10; // Test control if (not PICS_SREM_GENERATION or not PICS_SREM_TRANSMISSION_RATE) { log("*** " & testcasename() & ": PICS_SREM_GENERATION and PICS_SREM_TRANSMISSION_RATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); f_awaitSreMessage(mw_sremInd(mw_sremPdu(mw_sremWellFormatted)), v_sremInd); t_minTransInterval.start; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body sremSsemPort.clear; tc_ac.start; alt { [] sremSsemPort.receive(mw_sremInd( mw_sremPdu )) -> value v_sremInd { var FncRetCode v_result; tc_ac.stop; if (t_minTransInterval.running) { t_minTransInterval.stop; log("*** " & testcasename() & ": FAIL: SRE message was received before t_minTransInterval expiration ***"); v_result := e_error; } else { t_maxTransInterval.stop; log("*** " & testcasename() & ": PASS: SRE message was received within the t_minTransInterval/t_maxTransInterval expiration ***"); v_result := e_success; } // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); f_selfOrClientSyncAndVerdict(c_tbDone, v_result); } [] t_minTransInterval.timeout { repeat; } [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": FAIL: SRE message was not received within the t_minTransInterval/t_maxTransInterval expiration ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: SRE message not received ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_utCancelationEvent(m_UtSremCancelationEvent(v_requestID)); f_awaitSreMessageCancellation(v_requestID); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_GEN_RATE_TI_01 } // End of group sreMessageRate } // End of group sreMessageDissemination } // End of group sremGeneration group sremReception { group sremReceptionMessageFormat { /** * @desc TP Function for TC_IS_TLCR_RCV_MSGF_BV_01 */ function f_IS_TLCR_RCV_MSGF_BV_01 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; var integer i; if (not PICS_SREM_RECEPTION) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_sremReq := valueof(m_sremReq(m_sremPdu(m_defaultSrem))); sremSsemPort.send(v_sremReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSremEvents) and not match (v_sremReq.msgOut , vc_utSremEvents[i].sreMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSremEvents) ) { log("*** " & testcasename() & ": PASS: SREM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SREM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_RCV_MSGF_BV_01 } // End of group sremReceptionMessageFormat group sremReceptionSecurity { /** * @desc TP Function for TC_IS_TLCR_RCV_SSP_BV_01 */ function f_IS_TLCR_RCV_SSP_BV_01 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; var integer i; if (not PICS_SREM_RECEPTION or not PICS_IS_IUT_SECURED ) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSremEvents) and not match (v_sremReq.msgOut , vc_utSremEvents[i].sreMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSremEvents) ) { log("*** " & testcasename() & ": PASS: SREM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SREM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_RCV_SSP_BV_01 /** * @desc TP Function for TC_IS_TLCR_RCV_SSP_BO_01 */ function f_IS_TLCR_RCV_SSP_BO_01 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; var integer i; if (not PICS_SREM_RECEPTION or not PICS_IS_IUT_SECURED ) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("CERT_NONE"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq) ; f_sleep(PX_TAC); if (lengthof(vc_utSremEvents) == 0) { log("*** " & testcasename() & ": PASS: SREM was discared ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SREM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_RCV_SSP_BO_01 /** * @desc TP Function for TC_IS_TLCR_RCV_SSP_BO_02 */ function f_IS_TLCR_RCV_SSP_BO_02 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; var integer i; if (not PICS_SREM_RECEPTION or not PICS_IS_IUT_SECURED ) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp("CERT_SRM_SSP_NONE"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( PX_SREM_CERTIFICATE_X_ROLE ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID, 17, priorityRequestTypeReserved, { lane := 2 } ) ) } )))); sremSsemPort.send(v_sremReq) ; f_sleep(PX_TAC); if (lengthof(vc_utSremEvents) == 0) { log("*** " & testcasename() & ": PASS: SREM was discared ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SREM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCR_RCV_SSP_BO_02 } // End of group sremReceptionSecurity } // End of group sremReception } // End of module ItsSrem_TpFunctions ats_ts103191-3-devel/ItsSsem_TestCases.ttcn 0000664 0000000 0000000 00000072270 14553501104 0020534 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsSremSsem/ItsSsem_TestCases.ttcn $ * $Id: ItsSsem_TestCases.ttcn 2646 2016-12-16 07:35:58Z garciay $ * @desc Testcases for TLC Service * @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 ItsSsem_TestCases { // LibItsSremSsem import from LibItsSremSsem_TestSystem all; // ItsSremSsem import from ItsSsem_TpFunctions all; group ssemGeneration { group sseMessageFormat { /** * @desc Check that the IUT can generate the SSEM as a response to the received SREM *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT having receive a valid SREM * } * then { * the IUT generates a SSEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_RCV_MSGF_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCS_RCV_MSGF_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_RCV_MSGF_BV_01(); } // End of testcase TC_IS_TLCS_RCV_MSGF_BV_01 /** * @desc Check that protocolVersion is set to 1 and messageID is set to 10 (TLC-S) *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT having receive a valid SREM * } * then { * the IUT sends a valid SSEM * containing ITS PDU header * containing protocolVersion * indicating value '1' * and containing messageID * indicating value '10' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_MSGF_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCS_GEN_MSGF_BV_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_MSGF_BV_02(); } // End of testcase TC_IS_TLCS_GEN_MSGF_BV_02 /** * @desc Check that the IUT generates the SSEM containing SREM identifiers *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT having receive a valid SREM * containing srm * containing requestor * containing id * indicating VID * and containing requests * containing an item of type SignalRequestPackage * containing request * containing id * indicating the target intersection TI * and containing requestID * indicating ReqID * and containing requestType * indicating 'priorityRequest' * } * then { * the IUT sends a valid SSEM * containing ssm * containing status * containing an item of type SignalStatus * containing id * indicating the target intersection TI * and containing sigStatus * containing an item of type SignalStatusPackage * containing requester * containing requester * containing id * indicating VID * and containing request * indicating ReqID * and containing sequenceNumber * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_MSGF_BV_03 * @reference CEN ISO TS 19091 [4], clauses 6.11.3, 6.11.6 */ testcase TC_IS_TLCS_GEN_MSGF_BV_03 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_MSGF_BV_03(); } // End of testcase TC_IS_TLCS_GEN_MSGF_BV_03 } // End of group sseMessageFormat group sseCommunication { /** * @desc Check that SSEM uses BTP_B packet * Check that the destination port for IVIM is set to 2008 *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "initial state" * } * Expected behaviour: * ensure that { * when { * the IUT having receive a valid SREM * } * then { * the IUT sends a valid SSEM * encapsulated in a BTP-B packet * containing a destination port value set to '2008' * and containing a destination port info value set to '0' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_COM_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clauses 10.2 and 8.4.3.3 */ testcase TC_IS_TLCS_GEN_COM_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_COM_BV_01(); } // End of testcase TC_IS_TLCS_GEN_COM_BV_01 /** * @desc Check that TLM service encapsulates SSEM in a GBC with the HeaderType field set to the value of 4 *
* Pics Selection: PICS_SSEM_GENERATION and PICS_SHORT_RANGE * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT sending SSEM * } * Expected behaviour: * ensure that { * when { * a SSEM is generated * } * then { * the IUT sends a valid SSEM * encapsulated in a GBC packet * containing a correctly formatted Common Header * containing HeaderType field * indicating the value '4' * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_COM_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.3 */ testcase TC_IS_TLCS_GEN_COM_BV_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_COM_BV_02(); } // End of testcase TC_IS_TLCS_GEN_COM_BV_02 } // End of group sseCommunication group sseEventUpdate { /** * @desc Check that the IUT increments the sequenceNumber when a SSEM update is generated *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * and the IUT having generate a SSEM * containing ssm * containing sequenceNumber * indicating (SSEM_SN) * and containing status * containing an item of type SignalStatus * containing id * indicating the target intersection TI * and containing sigStatus * containing an item of type SignalStatusPackage * containing requester * containing requester * containing id * indicating (VID) * and containing request * indicating (ReqID) * and sequenceNumber * indicating (ReqSN) * } * Expected behaviour: * ensure that { * when { * the IUT receives an SREM * containing ssm * containing requestor * containing id * indicating VID * and containing requests * containing an item of type SignalRequestPackage * containing request * containing id * indicating the target intersection TI * and containing requestID * indicating ReqID * and containing requestType * indicating 'priorityRequestUpdate' * } * then { * the IUT sends a valid SSEM * containing ssm * containing sequenceNumber * indicating (SSEM_SN + 1) * and containing status * containing an item of type SignalStatus * containing id * indicating the target intersection TI * and containing sigStatus * containing an item of type SignalStatusPackage * containing requester * containing requester * containing id * indicating VID * and containing request * indicating ReqID * and sequenceNumber * indicating ReqSN + 1 * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_EVUP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 * @reference CEN ISO TS 19091, clauses 6.11.2 */ testcase TC_IS_TLCS_GEN_EVUP_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_EVUP_BV_01(); } // End of testcase TC_IS_TLCS_GEN_EVUP_BV_01 /** * @desc Check that the IUT does not increments the sequenceNumber when a SSEM is not repeated without changes *
* Pics Selection: PICS_SREM_RECEPTION AND PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * and the IUT having generate a SSEM * containing ssm * containing sequenceNumber * indicating (SSEM_SN) * and containing status * indicating (SSEM_STATUS) * } * Expected behaviour: * ensure that { * when { * the IUT is triggered to repeat the SSEM * } * then { * the IUT sends a valid SSEM * containing ssm * containing sequenceNumber * indicating (SSEM_SN + 1) * and containing status * indicating (SSEM_STATUS) * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_EVUP_BV_02 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.1 * @reference CEN ISO TS 19091, clauses 6.11.2 */ testcase TC_IS_TLCS_GEN_EVUP_BV_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_EVUP_BV_02(); } // End of testcase TC_IS_TLCS_GEN_EVUP_BV_02 } // End of group sseEventUpdate group sseSecurity { /** * @desc Check that TLC service uses certificate containing valid ITS AID to sign SSEM messages *
* Pics Selection: PICS_SSEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "SSEM initial state" * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SSEM * } * then { * the IUT sends a valid SSEM * containing a correctly formatted Security Header as a EtsiTs103097Data structure * containing signedData.tbsData.headerInfo * indicating ITS_AID_SSEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_SEC_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 8.4.3.2 */ testcase TC_IS_TLCS_GEN_SEC_BV_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_SEC_BV_01(); } // End of testcase TC_IS_TLCS_GEN_SEC_BV_01 /** * @desc Check that TLC service uses certificate containing valid Service Specific Permissions of type BitmapSsp to sign SSEM messages and the SSP version is set to 2 *
* Pics Selection: PICS_SSEM_GENERATION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT is operating in secured mode * and the IUT is authorized to sign SSEM with the certificate CERT_SSM * containing appPermission item * containing psid * indicating ITS_AID_SSEM * containing bitmapSSP * indicating octet at position 0 set to 0x02 * and indicating other bits set to 0 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to generate a SSEM * } * then { * the IUT sends a valid SSEM * signed with the CERT_SSM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_SSP_BV_01 * @reference ETSI TS 103 301 v1.3.1 Clause 4.5.1 */ testcase TC_IS_TLCS_GEN_SSP_BV_01() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_SSP_BV_01(); } // End of testcase TC_IS_TLCS_GEN_SSP_BV_01 } // End of group sseSecurity group sseMessageRate { /** * @desc Check that TLM service can process signal preferential treatment requests within the maximum response time *
* Pics Selection: PICS_SSEM_GENERATION AND PICS_SSEM_TRATEMENT_DELAY * Initial conditions: * with { * the IUT being in the "SSEM initial state" * } * Expected behaviour: * ensure that { * when { * the IUT has received SREM message at TIME_SREM * } * then { * the IUT sends SSEM at TIME_SSEM * where TIME_SSEM - TIME_SREM is less than 100ms * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_RATE_TI_01 * @reference CEN ISO TS 19091 [4], clauses 6.14.2 */ testcase TC_IS_TLCS_GEN_RATE_TI_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_RATE_TI_01(); } // End of testcase TC_IS_TLCS_GEN_RATE_TI_01 /** * @desc Check that TLM service broadcast the signal status message in response to a signal request message with the valid rate *
* Pics Selection: PICS_SSEM_GENERATION AND PICS_SSEM_TRANSMISSION_RATE * Initial conditions: * with { * the IUT being in the "SSEM initial state" * and the IUT has sent previous SSEM message at TIME_SSEM_1 * } * Expected behaviour: * ensure that { * when { * the IUT is requested to repeat a SSEM * } * then { * the IUT sends SSEM at TIME_SSEM_2 * where TIME_SSEM_2 - TIME_SSEM_1 is not less than 100ms and not more than 2s * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_RATE_TI_02 * @reference CEN ISO TS 19091 [4], clauses 6.14.2 */ testcase TC_IS_TLCS_GEN_RATE_TI_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_RATE_TI_02(); } // End of testcase TC_IS_TLCS_GEN_RATE_TI_02 } // End of group sseMessageRate group sseMessageRepetition { /** * @desc Check that TLM service broadcast the signal status message in response to a signal request message until the requestor leaves the intersection *
* Pics Selection: PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * and the IUT has received SREM * containing srm.requestor.id * indicating VID * and the IUT has already sent SSEM * } * Expected behaviour: * ensure that { * when { * the IUT received the SREM * containing stationID * indicating VID * and indicating position inside or approaching the intersection * } * then { * the IUT sends the SSEM * containing srm.requestor.id * indicating VID * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_REP_01 * @reference CEN ISO TS 19091 Clauses 6.14.4 */ testcase TC_IS_TLCS_GEN_REP_01 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_REP_01(); } // End of testcase TC_IS_TLCS_GEN_REP_01 /** * @desc Check that TLM service stops to broadcast the signal status message in response to a signal request message when the requestor left the intersection *
* Pics Selection: PICS_SSEM_GENERATION * Initial conditions: * with { * the IUT being in the "SSEM initial state" * and the IUT has received SREM * containing srm.requestor.id * indicating VID * and the IUT has already sent SSEM * } * Expected behaviour: * ensure that { * when { * the IUT during 2 sec has not received the SREM * containing stationID * indicating VID * } * then { * the IUT stops sending the SSEM * containing srm.requestor.id * indicating VID * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_GEN_REP_02 * @reference CEN ISO TS 19091 Clauses 6.14.4 */ testcase TC_IS_TLCS_GEN_REP_02 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_GEN_REP_02(); } // End of testcase TC_IS_TLCS_GEN_REP_02 } // End of group sseMessageRepetition } // End of group ssemGeneration group ssemReception { group sseMessageProcessing { /** * @desc Check that the IUT can successfully process all mandatory fields of SSEM received (ITS-S) *
* Pics Selection: PICS_SSEM_RECEPTION * Initial conditions: * with { * the IUT being in the "initial state" * and the IUT having send a valid SREM * } * Expected behaviour: * ensure that { * when { * the IUT receives a valid SSEM * } * then { * the IUT forwards the SSEM content to upper layers * and the IUT forwards the SSEM content to other facilities * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_RCV_MSGF_BV_04 * @reference ETSI TS 103 301 v1.3.1 Clause 8.3 */ testcase TC_IS_TLCS_RCV_MSGF_BV_04 () runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_RCV_MSGF_BV_04(); } // End of testcase TC_IS_TLCS_RCV_MSGF_BV_04 } // End of group sseMessageProcessing group sseSecurity { /** * @desc Check that the IUT accepts the SSEM message permitted by the signing certificate *
* Pics Selection: PICS_SSEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * the IUT having send a valid SREM * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SSEM * signed with the certificate * containing appPermission item * containing psid * indicating ITS_AID_SSEM * } * then { * the IUT accepts the received SSEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_RCV_SSP_BV_05 * @reference ETSI TS 103 301 v1.3.1 Clause 4.5.1 */ testcase TC_IS_TLCS_RCV_SSP_BV_05() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_RCV_SSP_BV_05(); } // End of testcase TC_IS_TLCS_RCV_SSP_BV_05 /** * @desc Check that the IUT discards the SSEM message not permitted by the signing certificate *
* Pics Selection: PICS_SSEM_RECEPTION AND PICS_IS_IUT_SECURED * Initial conditions: * with { * the IUT being in the "initial state" * the IUT having send a valid SREM * and the IUT is operating in secured mode * } * Expected behaviour: * ensure that { * when { * the IUT receives a SSEM * signed with the certificate CERT_NONE * not containing appPermission item * containing psid * indicating ITS_AID_SSEM * } * then { * the IUT discards the received SSEM * } * } ** * @see ETSI TS 103 191-2 v1.3.1 TP_IS_TLCS_RCV_SSP_SO_05 * @reference ETSI TS 103 301 v1.3.1 Clause 4.5.1 */ testcase TC_IS_TLCS_RCV_SSP_SO_05() runs on ItsSremSsem system ItsSremSsemSystem { f_IS_TLCS_RCV_SSP_SO_05(); } // End of testcase TC_IS_TLCS_RCV_SSP_SO_05 } // End of group sseSecurity } // End of group ssemReception } // End of module ItsSsem_TestCases ats_ts103191-3-devel/ItsSsem_TpFunctions.ttcn 0000664 0000000 0000000 00000262713 14553501104 0021115 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF525 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/ITS/tags/20170222_STF527_Final/ttcn/AtsSremSsem/ItsSsem_TpFunctions.ttcn $ * $Id: ItsSsem_TpFunctions.ttcn,v 1.2 2018/05/31 15:57:11 dte Exp $ * @desc SREM TP functions * @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 ItsSsem_TpFunctions { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsSremSsem import from LibItsSremSsem_TestSystem all; import from LibItsSremSsem_Functions all; import from LibItsSremSsem_Templates all; import from LibItsSremSsem_TypesAndValues all; import from LibItsSremSsem_Pics all; import from LibItsSremSsem_Pixits all; group ssemGeneration { group sseMessageFormat { /** * @desc TP Function for TC_IS_TLCS_RCV_MSGF_BV_01 */ function f_IS_TLCS_RCV_MSGF_BV_01 () runs on ItsSremSsem { // Local variables // Test control if (not PICS_SREM_RECEPTION) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Send SREM sremSsemPort.send( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); tc_ac.start; alt { [] sremSsemPort.receive(mw_ssemInd) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_RCV_MSGF_BV_01 /** * @desc TP Function for TC_IS_TLCS_GEN_MSGF_BV_02 */ function f_IS_TLCS_GEN_MSGF_BV_02 () runs on ItsSremSsem { // Local variables // Test control if (not PICS_SREM_RECEPTION or not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Send SREM sremSsemPort.send( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_MSGF_BV_02 function f_IS_TLCS_GEN_MSGF_BV_03 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; // Test control if (not PICS_SREM_RECEPTION or not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Send SREM v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID ) ) ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_MSGF_BV_03 } // End of group sseMessageFormat group sseEventGeneration { function f_IS_TLCS_GEN_EVUP_BV_01 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; // Test control if (not PICS_SREM_RECEPTION or not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ) ) ))))) { tc_ac.stop; log("*** " & testcasename() & ": INFO: Successfully received firt SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } } // Test Body // Send SREM update v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequestUpdate, { lane := 2 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER + 1, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER + 1 ) ) ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_EVUP_BV_01 function f_IS_TLCS_GEN_EVUP_BV_02 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; // Test control if (not PICS_SREM_RECEPTION or not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SREM_RECEPTION and PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ) ) ))))) { tc_ac.stop; log("*** " & testcasename() & ": INFO: Successfully received firt SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } } // Test Body // Send SREM update v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ) ) ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_EVUP_BV_02 } // End of group sseEventGeneration group sseCommunication { /** * @desc TP Function for TC_IS_TLCS_GEN_COM_BV_01 */ function f_IS_TLCS_GEN_COM_BV_01 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; // Test control if (not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Send SREM v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemIndWithBtpParameters( mw_ssemPdu( mw_ssemWellFormatted ), 2008, 0 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected SSEM encapsultated in BTP-B packet with port value 2007 received received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_COM_BV_01 /** * @desc TP Function for TC_IS_TLCS_GEN_COM_BV_02 */ function f_IS_TLCS_GEN_COM_BV_02 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; // Test control if (not PICS_SSEM_GENERATION or not PICS_SHORT_RANGE) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION and PICS_SHORT_RANGE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Send SREM v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemIndWithGnParameters( mw_ssemPdu, -, 4 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected short range SSE message received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_COM_BV_02 } // End of group sseCommunication group sseSecurity { /** * @desc TP Function for TC_IS_TLCS_GEN_SEC_BV_01 */ function f_IS_TLCS_GEN_SEC_BV_01 () runs on ItsSremSsem { // Local variables // Test control if (not PICS_SSEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body sremSsemPort.send( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ))))); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemIndWithSecurityParameters( mw_ssemPdu, -, c_its_aid_TLS )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_SEC_BV_01 /** * @desc TP Function for TC_IS_TLCS_GEN_SSP_BV_01 */ function f_IS_TLCS_GEN_SSP_BV_01 () runs on ItsSremSsem { // Local variables // Test control if (not PICS_SSEM_GENERATION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SSM"); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body sremSsemPort.send( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ))))); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemIndWithSecurityParameters( mw_ssemPdu, oct2bit('020000'O), c_its_aid_TLS )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_SSP_BV_01 } // End of group sseSecurity group sseMessageRate { /** * @desc TP Function for TC_IS_TLCS_GEN_RATE_TI_01 */ function f_IS_TLCS_GEN_RATE_TI_01 () runs on ItsSremSsem { // Local variables timer t_minTransInterval := PICS_T_RATE_GENSSEMMIN * 0.90; timer t_maxTransInterval := PICS_T_RATE_GENSSEMMAX * 1.10; // Test control if (not PICS_SSEM_GENERATION or not PICS_SSEM_TRATEMENT_DELAY) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION and PICS_SSEM_TRATEMENT_DELAY required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body sremSsemPort.send( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ))))); t_minTransInterval.start; t_maxTransInterval.start; tc_ac.start; alt { [] sremSsemPort.receive(mw_ssemInd( mw_ssemPdu )) { var FncRetCode v_result; tc_ac.stop; if (t_minTransInterval.running) { t_minTransInterval.stop; log("*** " & testcasename() & ": FAIL: SSE message was received before t_minTransInterval expiration ***"); v_result := e_error; } else { t_maxTransInterval.stop; log("*** " & testcasename() & ": PASS: SSE message was received within the t_minTransInterval/t_maxTransInterval expiration ***"); v_result := e_success; } f_selfOrClientSyncAndVerdictPreamble(c_tbDone, v_result); } [] t_minTransInterval.timeout { repeat; } [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": FAIL: SSE message was not received within the t_minTransInterval/t_maxTransInterval expiration ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: SSE message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_RATE_TI_01 /** * @desc TP Function for TC_IS_TLCS_GEN_RATE_TI_02 */ function f_IS_TLCS_GEN_RATE_TI_02 () runs on ItsSremSsem { // Local variables timer t_minTransInterval := PICS_T_RATE_GENSSEMMIN * 0.90; timer t_maxTransInterval := PICS_T_RATE_GENSSEMMAX * 1.10; // Test control if (not PICS_SSEM_GENERATION or not PICS_SSEM_TRANSMISSION_RATE) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION and PICS_SSEM_TRANSMISSION_RATE required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body sremSsemPort.send( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ))))); t_minTransInterval.start; t_maxTransInterval.start; tc_ac.start; alt { [] sremSsemPort.receive(mw_ssemInd( mw_ssemPdu )) { var FncRetCode v_result; tc_ac.stop; if (t_minTransInterval.running) { t_minTransInterval.stop; log("*** " & testcasename() & ": FAIL: SSE message was received before t_minTransInterval expiration ***"); v_result := e_error; } else { t_maxTransInterval.stop; log("*** " & testcasename() & ": PASS: SSE message was received within the t_minTransInterval/t_maxTransInterval expiration ***"); v_result := e_success; } f_selfOrClientSyncAndVerdictPreamble(c_tbDone, v_result); } [] t_minTransInterval.timeout { repeat; } [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": FAIL: SSE message was not received within the t_minTransInterval/t_maxTransInterval expiration ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_error); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: SSE message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_RATE_TI_02 /** * @desc TP Function for TC_IS_TLCS_GEN_REP_01 */ function f_IS_TLCS_GEN_REP_01 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; var SsemInd v_ssem; // Test control if (not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ))))))) -> value v_ssem { tc_ac.stop; log("*** " & testcasename() & ": INFO: SSE message was received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: SSE message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } // Test Body v_sremReq.msgOut.srm.requests[0].request.inBoundLane := { lane := 2 }; v_sremReq.msgOut.srm.requests[0].request.outBoundLane := { lane := 2 }; sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ))))))) { tc_ac.stop; log("*** " & testcasename() & ": INFO: SSE message was received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: SSE message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } // Postamble f_sendSreMessageForCancellation(); f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_REP_01 /** * @desc TP Function for TC_IS_TLCS_GEN_REP_02 */ function f_IS_TLCS_GEN_REP_02 () runs on ItsSremSsem { // Local variables var SremReq v_sremReq; var SsemInd v_ssem; timer t_maxTransInterval := PICS_T_RATE_GENSSEMMAX * 1.10; // Test control if (not PICS_SSEM_GENERATION) { log("*** " & testcasename() & ": PICS_SSEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble v_sremReq := valueof( m_sremReq( m_sremPdu( m_srem( m_requestorDescription( m_vehicleID( f_getIutStationId() ), m_requestorType( basicVehicle ) ), { m_signalRequestPackage( m_signalRequest( m_intersectionReferenceID( PX_INTERSECTION_ID ), PX_REQUEST_ID, priorityRequest, { lane := 1 } ) ) } )))); sremSsemPort.send(v_sremReq); tc_ac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ))))))) -> value v_ssem { tc_ac.stop; log("*** " & testcasename() & ": INFO: SSE message was received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: SSE message not received ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); } } // Test Body t_maxTransInterval.start; alt { [] t_maxTransInterval.timeout { log("*** " & testcasename() & ": INFO: 2 seconds expired ***"); } } // Test Body tc_noac.start; alt { [] sremSsemPort.receive( mw_ssemInd( mw_ssemPdu( mw_ssemWellFormatted( -, mw_signalStatus( PX_SEQUENCE_NUMBER, m_intersectionReferenceID( PX_INTERSECTION_ID ), mw_signalStatusPackage( mw_requester( m_vehicleID( f_getIutStationId() ), PX_REQUEST_ID, PX_SEQUENCE_NUMBER ))))))) { log("*** " & testcasename() & ": FAIL: SSEM was transmitted after 2 seconds without receiving SREM***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] tc_noac.timeout { log("*** " & testcasename() & ": PASS: SSEM was not transmitted ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_GEN_REP_02 } // End of group sseMessageRate } // End of group ssemGeneration { group ssemReception { group sseMessageProcessing { /** * @desc TP Function for TC_IS_TLCS_RCV_MSGF_BV_04 */ function f_IS_TLCS_RCV_MSGF_BV_04 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; var SsemReq v_ssemReq; var integer i; if (not PICS_SSEM_RECEPTION) { log("*** " & testcasename() & ": PICS_SSEM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremInd( mw_sremPdu )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": INFO: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } } // Test Body f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSsemEvents) and not match (vc_utSsemEvents[i].sseMsg, mw_ssemPdu); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSsemEvents) ) { log("*** " & testcasename() & ": PASS: SSEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SSEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_RCV_MSGF_BV_04 } // End of group sseMessageProcessing group sseSecurity { /** * @desc TP Function for TC_IS_TLCS_RCV_SSP_BV_05 */ function f_IS_TLCS_RCV_SSP_BV_05 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; var SsemReq v_ssemReq; var integer i; if (not PICS_SSEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SSEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SRM_SSP_REQ"); // Preamble f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu, -, c_its_aid_TLC )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": INFO: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } } // Test Body f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSsemEvents) and not match (vc_utSsemEvents[i].sseMsg, mw_ssemPdu); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utSsemEvents) ) { log("*** " & testcasename() & ": PASS: SSEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SSEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_RCV_SSP_BV_05 /** * @desc TP Function for TC_IS_TLCS_RCV_SSP_SO_05 */ function f_IS_TLCS_RCV_SSP_SO_05 () runs on ItsSremSsem { // Local variables var SremInd v_sremInd; var RequestID v_requestID; var SsemReq v_ssemReq; var integer i; if (not PICS_SSEM_RECEPTION or not PICS_IS_IUT_SECURED) { log("*** " & testcasename() & ": PICS_SSEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(-, "CERT_SRM_SSP_REQ"); // Preamble f_utTriggerEvent(m_utTriggerEvent(PX_BASICVEHICLEROLE, PX_REQUESTIMPORTANCELEVEL, PX_INTERSECTION_ID)); tc_ac.start; alt { [] sremSsemPort.receive( mw_sremIndWithSecurityParameters( mw_sremPdu, -, c_its_aid_TLC )) -> value v_sremInd { tc_ac.stop; v_requestID := v_sremInd.msgIn.srm.requests[0].request.requestID; // Send SSEM f_sendSseMessage(v_sremInd.msgIn.srm); log("*** " & testcasename() & ": INFO: Successfully received SREM PDU header. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***"); f_selfOrClientSyncAndVerdict(c_prDone, e_timeout); } } // Test Body f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utSsemEvents) and not match (vc_utSsemEvents[i].sseMsg, mw_ssemPdu); i := i + 1) { // empty on purpose } if (lengthof(vc_utSsemEvents) == 0) { log("*** " & testcasename() & ": PASS: SSEM was discarded ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: SSEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_TLCS_RCV_SSP_SO_05 } // End of group sseSecurity } // End of group ssemReception } // End of module ItsSsem_TpFunctions ats_ts103191-3-devel/LICENSE 0000664 0000000 0000000 00000002704 14553501104 0015275 0 ustar 00root root 0000000 0000000 Copyright 2022 ETSI Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ats_ts103191-3-devel/README.md 0000664 0000000 0000000 00000000113 14553501104 0015537 0 ustar 00root root 0000000 0000000 # IS TS 103 191-3 ATS for ETSI TS 103301 as defined in ETSI TS 103 191-3 ats_ts103191-3-devel/lib/ 0000775 0000000 0000000 00000000000 14553501104 0015033 5 ustar 00root root 0000000 0000000 ats_ts103191-3-devel/lib/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn 0000664 0000000 0000000 00000007075 14553501104 0024566 0 ustar 00root root 0000000 0000000 //This module contains TTCN-3 values for ASN.1 named numbers, aligned with TTWorkbench name convention module LibItsCommon_ASN1_ISDSRC_NamedNumbers { import from DSRC language "ASN.1:1997" all; group IS_DSCR_constants { group LaneParameter_constants { const LaneAttributes_Barrier LaneAttributes_Barrier_median_RevocableLane_ := '0000000000000000'B; const LaneAttributes_Bike LaneAttributes_Bike_bikeRevocableLane_ := '0000000000000000'B; const LaneAttributes_Crosswalk LaneAttributes_Crosswalk_crosswalkRevocableLane_ := '0000000000000000'B; const LaneAttributes_Parking LaneAttributes_Parking_parkingRevocableLane_ := '0000000000000000'B; const LaneAttributes_Sidewalk LaneAttributes_Sidewalk_sidewalk_RevocableLane_ := '0000000000000000'B; const LaneAttributes_Striping LaneAttributes_Striping_stripeToConnectingLanesRevocableLane_ := '0000000000000000'B; const LaneAttributes_TrackedVehicle LaneAttributes_TrackedVehicle_spec_RevocableLane_ := '0000000000000000'B; const LaneAttributes_Vehicle LaneAttributes_Vehicle_isVehicleRevocableLane_ := '00000000'B; const LaneDirection LaneDirection_ingressPath_ := '00'B; const LaneDirection LaneDirection_egressPath_ := '01'B; } //end LaneParameter_constants group Intersection_constants { const IntersectionStatusObject IntersectionStatusObject_manualControlIsEnabled_ := '0000000000000000'B; const IntersectionStatusObject IntersectionStatusObject_stopTimeIsActivated_ := '0000000000000001'B; const IntersectionStatusObject IntersectionStatusObject_failureFlash_ := '0000000000000010'B; const IntersectionStatusObject IntersectionStatusObject_preemptIsActive_ := '0000000000000011'B; const IntersectionStatusObject IntersectionStatusObject_signalPriorityIsActive_ := '0000000000000100'B; const IntersectionStatusObject IntersectionStatusObject_fixedTimeOperation_ := '0000000000000101'B; const IntersectionStatusObject IntersectionStatusObject_trafficDependentOperation_ := '0000000000000110'B; const IntersectionStatusObject IntersectionStatusObject_standbyOperation_ := '0000000000000111'B; const IntersectionStatusObject IntersectionStatusObject_failureMode_ := '0000000000001000'B; const IntersectionStatusObject IntersectionStatusObject_off_ := '0000000000001001'B; const IntersectionStatusObject IntersectionStatusObject_recentMAPmessageUpdate_ := '0000000000001010'B; const IntersectionStatusObject IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed_ := '0000000000001011'B; const IntersectionStatusObject IntersectionStatusObject_noValidMAPisAvailableAtThisTime_ := '0000000000001100'B; const IntersectionStatusObject IntersectionStatusObject_noValidSPATisAvailableAtThisTime_ := '0000000000001101'B; } // End of group Intersection_constants group requestor_description { const TransitVehicleStatus TransitVehicleStatus_loading_ := '10000000'B; const TransitVehicleStatus TransitVehicleStatus_anADAuse_ := '01000000'B; const TransitVehicleStatus TransitVehicleStatus_aBikeLoad_ := '00100000'B; const TransitVehicleStatus TransitVehicleStatus_doorOpen_ := '00010000'B; const TransitVehicleStatus TransitVehicleStatus_charging_ := '00001000'B; const TransitVehicleStatus TransitVehicleStatus_atStopLine_ := '00000100'B; } // End of of group requestor_description } // End of group IS_DSCR_constants } // End of module LibItsCommon_ASN1_ISDSRC_NamedNumbers ats_ts103191-3-devel/lib/LibItsIvim_ASN1_IVInamedNumbers.ttcn 0000664 0000000 0000000 00000004661 14553501104 0023601 0 ustar 00root root 0000000 0000000 //This module contains TTCN-3 values for ASN.1 named numbers, aligned with TTWorkbench name convention module LibItsIvim_ASN1_IVInamedNumbers { import from IVI language "ASN.1:1997" all; group IVI_constants { const Direction Direction_sameDirection_ := 0; const Direction Direction_oppositeDirection_ := 1; const Direction Direction_bothDirections_ := 2; const Direction Direction_valueNotUsed_ := 3; const IviStatus IviStatus_new_ := 0; const IviStatus IviStatus_update_ := 1; const IviStatus IviStatus_cancellation_ := 2; const IviStatus IviStatus_negation_ := 3; const IviType IviType_immediateDangerWarningMessages_ := 0; const IviType IviType_regulatoryMessages_ := 1; const IviType IviType_trafficRelatedInformationMessages_ := 2; const IviType IviType_pollutionMessages_ := 3; const IviType IviType_notTrafficRelatedInformationMessages_ := 4; const LaneType LaneType_traffic_ := 0; const LaneType LaneType_through_ := 1; const LaneType LaneType_reversible_ := 2; const LaneType LaneType_acceleration_ := 3; const LaneType LaneType_deceleration_ := 4; const LaneType LaneType_leftHandTurning_ := 5; const LaneType LaneType_rightHandTurning_ := 6; const LaneType LaneType_dedicatedVehicle_ := 7; const LaneType LaneType_bus_ := 8; const LaneType LaneType_taxi_ := 9; const LaneType LaneType_hov_ := 10; const LaneType LaneType_hot_ := 11; const LaneType LaneType_pedestrian_ := 12; const LaneType LaneType_bikeLane_ := 13; const LaneType LaneType_median_ := 14; const LaneType LaneType_striping_ := 15; const LaneType LaneType_trackedVehicle_ := 16; const LaneType LaneType_parking_ := 17; const LaneType LaneType_emergency_ := 18; const LaneType LaneType_verge_ := 19; const LaneStatus LaneStatus_open_ := 0; const LaneStatus LaneStatus_closed_ := 1; const LaneStatus LaneStatus_mergeR_ := 2; const LaneStatus LaneStatus_mergeL_ := 3; const LaneStatus LaneStatus_mergeLR_ := 4; const LaneStatus LaneStatus_provisionallyOpen_ := 5; const LaneStatus LaneStatus_diverging_ := 6; } // end IVI_constants } // End of module LibItsIvim_ASN1_IVInamedNumbers ats_ts103191-3-devel/lib/LibItsIvim_EncdecDeclarations.ttcn 0000664 0000000 0000000 00000004273 14553501104 0023540 0 ustar 00root root 0000000 0000000 module LibItsIvim_EncdecDeclarations { // LibIts import from IVIM_PDU_Descriptions language "ASN.1:1997" all; // LibItsIvim import from LibItsIvim_TypesAndValues all; external function fx_enc_IvimReq (IvimReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} external function fx_dec_IvimReq (inout bitstring b, out IvimReq p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_dec_IvimInd (inout bitstring b, out IvimInd p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_IVIM (IVIM p) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_IVIM (inout bitstring b, out IVIM p) return integer with {extension "prototype(sliding) decode(PER)"} /* external function fx_enc_IVIM (IVIM p) return octetstring with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} */ external function fx_enc_UtIvimInitialize (UtIvimInitialize p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} /* external function fx_enc_UtIvimChangePosition (UtIvimChangePosition p) return bitstring with {extension "prototype(convert) encode(UpperTester)"}*/ external function fx_enc_UtIvimTrigger (UtIvimTrigger p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_enc_UtIvimUpdate (UtIvimUpdate p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_enc_UtIvimTermination (UtIvimTermination p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_dec_UtIvimResults (inout bitstring b, out UtIvimResults p) return integer with {extension "prototype(sliding) decode(UpperTester)"} external function fx_dec_UtIvimEventInd (inout bitstring b, out UtIvimEventInd p) return integer with {extension "prototype(sliding) decode(UpperTester)"} } // End of module LibItsIvim_EncdecDeclarations ats_ts103191-3-devel/lib/LibItsIvim_Pics.ttcn 0000664 0000000 0000000 00000006565 14553501104 0020732 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/IVIM/LibItsIvim_Pics.ttcn $ * $Id: LibItsIvim_Pics.ttcn 1312 2016-12-14 09:21:45Z garciay $ * @desc IVIM PICS * @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 LibItsIvim_Pics { /** * @desc Is the IUT running in secured mode? * @see ETSI TS 103 191-1 Table A.1 */ modulepar boolean PICS_IS_IUT_SECURED := false; /** * @desc Support for IVIM generation * @see ETSI TS 103 191-1 Table A.3 */ modulepar boolean PICS_IVIM_GENERATION := true; /** * @desc Support for IVIM update * @see ETSI TS 103 191-1 Table A.3 */ modulepar boolean PICS_IVIM_UPDATE := true; /** * @desc Support for IVIM cancellation * @see ETSI TS 103 191-1 Table A.3 */ modulepar boolean PICS_IVIM_CANCELLATION := true; /** * @desc Support for IVIM NEGATION * @see ETSI TS 103 191-1 Table A.3 */ modulepar boolean PICS_IVIM_NEGATION := true; /** * @desc Support for IVIM RECEPTION * @see ETSI TS 103 191-1 Table A.3 */ modulepar boolean PICS_IVIM_RECEPTION := true; /** * @desc Minimum time interval between IVIM generations (in seconds). * Default value, as per base standard: 4s * @see ETSI TS 103 191-1 Table A.4 */ modulepar float PICS_T_GENIVIMMIN := 4.0; /** * @desc Maximum time interval between IVIM generations (in seconds). * Default value, as per base standard: 10.0s * @see ETSI TS 103 191-1 Table A.4 */ modulepar float PICS_T_GENIVIMMAX := 10.000; /** * @desc Support for IVIM fragmentation * @see TODO */ modulepar boolean PICS_IVIM_FRAGMENTATION := false; /** * @desc Support for IVIM general container * @see TODO */ modulepar boolean PICS_IVIM_HAS_GENERAL_CONTAINER := false; /** * @desc Support for IVIM has layout container * @see TODO */ modulepar boolean PICS_IVIM_HAS_LAYOUT_CONTAINER := false; /** * @desc Support for IVIM has road cfg container * @see TODO */ modulepar boolean PICS_IVIM_HAS_ROAD_CFG_CONTAINER := false; /** * @desc Support for IVIM has text container * @see TODO */ modulepar boolean PICS_IVIM_HAS_TEXT_CONTAINER := false; /** * @desc Support for IVIM rscode viennaconv * @see TODO */ modulepar boolean PICS_IVIM_RSCODE_VIENNACONV := false; /** * @desc Support for IVIM rscode ISO14823 * @see TODO */ modulepar boolean PICS_IVIM_RSCODE_ISO14823 := false; /** * @desc Support for IVIM rscode saej2540 * @see TODO */ modulepar boolean PICS_IVIM_RSCODE_SAEJ2540 := false; /** * @desc Support for IVIM rscode anz catalogue * @see TODO */ modulepar boolean PICS_IVIM_RSCODE_ANY_CATALOGUE := false; } // End of module LibItsIvim_Pics ats_ts103191-3-devel/lib/LibItsIvim_Pixits.ttcn 0000664 0000000 0000000 00000006270 14553501104 0021305 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/IVIM/LibItsIvim_Pixits.ttcn $ * $Id: LibItsIvim_Pixits.ttcn 1315 2016-12-15 13:25:41Z garciay $ * @desc IVIM PIXITS * @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 LibItsIvim_Pixits { // LibIts import from EfcDsrcGeneric language "ASN.1:1997" all; import from EfcDsrcApplication language "ASN.1:1997" all; import from IVI language "ASN.1:1997" all; import from ITS_Container language "ASN.1:1997" all; /** * @desc IUT Provider identifier * Provider description used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar Provider PX_PROVIDER := { countryCode := '0000000000'B, providerIdentifier := 0 } /** * @desc IUT IVI identifier * IVI identification number * @see ETSI TS 103 191-3 Table B.8 */ modulepar integer PX_IVI_ID := 2; /** * @desc IUT ZoneId 1 identifier * ZoneId 1 used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar Zid PX_ZONEID_1 := 1; /** * @desc IUT ZoneId 2 identifier * ZoneId 2 used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar Zid PX_ZONEID_2 := 2; /** * @desc IUT LaneId identifier * LaneId used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar LanePosition PX_LANE := 1; //innermostDrivingLane(1) /** * @desc IUT RelavanceZoneId identifier * RelavanceZoneId used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar Zid PX_RELAVANCE_ZONEID := 1; /** * @desc IUT DetectionZoneId identifier * DetectionZoneId used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar Zid PX_DETECTION_ZONEID := 1; /** * @desc IUT DriverAwarenesZoneId identifier * DriverAwarenesZoneId used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar Zid PX_DRIVER_AWARENES_ZONEID := 1; /** * @desc IUT LayoutId identifier * LayoutId used in IVIM messages sent by the tester * @see ETSI TS 103 191-3 Table B.8 */ modulepar integer PX_LAYOUTID := 1; /** * @desc IUT RScode integer variant * see TpFunction to set the correct value * used in f_IS_IVI_RCV_SSP_BO_03 and f_IS_IVI_RCV_SSP_BO_04 * //add others if needed * @see ETSI TS 103 191-3 Table B.8 */ modulepar integer PX_RSCODE_VA := 1; } // End of module LibItsIvim_Pixits ats_ts103191-3-devel/lib/LibItsIvim_Templates.ttcn 0000664 0000000 0000000 00000157702 14553501104 0021772 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/IVIM/LibItsIvim_Templates.ttcn $ * $Id: LibItsIvim_Templates.ttcn 1316 2017-01-03 09:03:43Z garciay $ * @desc Module containing base template definitions for IVIM * @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 LibItsIvim_Templates { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibHelpers import from LibHelpers_Functions all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from IVIM_PDU_Descriptions language "ASN.1:1997" all; import from IVI language "ASN.1:1997" all; import from EfcDsrcApplication language "ASN.1:1997" all; import from AVIAEINumberingAndDataStructures language "ASN.1:1997" all; import from CITSapplMgmtIDs language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; import from LibItsCommon_Pixits all; import from LibItsCommon_ASN1_NamedNumbers all; // LibItsIvim import from LibItsIvim_TypesAndValues all; import from LibItsIvim_Pixits all; import from LibItsIvim_ASN1_IVInamedNumbers all; group asn1Constants { } // End of group asn1Constants group primitivesTemplates { /** * @desc Send template for IVI Message (IvimPort Primitive) * @param p_iviMsg The IVI Message to be sent */ template (value) IvimReq m_ivimReq( in template (value) IVIM p_iviMsg ) := { msgOut := p_iviMsg } // End of template m_ivimReq /** * @desc Receive template for IVI Message (IvimPort Primitive) * @param p_iviMsg The expected IVI Message */ template (present) IvimInd mw_ivimInd( template (present) IVIM p_iviMsg := ? ) := { msgIn := p_iviMsg, recvTime := ?, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * } // End of template mw_ivimInd /** * @desc Receive template for IVI Message (IvimPort Primitive) * @param p_iviMsg The expected IVI 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 IvimInd mw_ivimIndWithGnParameters( template (present) IVIM p_iviMsg := ?, template UInt8 p_gnNextHeader := *, template UInt8 p_gnHeaderType := *, template UInt8 p_gnHeaderSubtype := *, template UInt32 p_gnLifetime := *, template UInt8 p_gnTrafficClass := * ) modifies mw_ivimInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } // End of template mw_ivimIndWithGnParameters /** * @desc Receive template for IVI Message (IvimPort Primitive) * @param p_iviMsg The expected IVI 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 IvimInd mw_ivimIndWithBtpParameters( template (present) IVIM p_iviMsg := ?, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_ivimInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo } // End of template mw_ivimIndWithBtpParameters /** * @desc Receive template for IVI Message (IvimPort Primitive) * @param p_iviMsg The expected IVI Message * @param p_ssp SSP security parameter * @param p_its_aid ITS-AID value */ template IvimInd mw_ivimIndWithSecurityParameters( template (present) IVIM p_iviMsg := ?, template Bit256 p_ssp := *, template UInt32 p_its_aid := * ) modifies mw_ivimInd := { ssp := p_ssp, its_aid := p_its_aid } // End of template mw_ivimIndWithSecurityParameters group utPrimitives { /** * @desc Send template for Upper Tester event initialization */ template (value) UtIvimInitialize m_ivimStructureInitialize( in HashedId8 p_hashedId8 := '0000000000000000'O ) := { hashedId8 := p_hashedId8 } // End of template m_ivimStructureInitialize /** * @desc Send template for Upper Tester Trigger event * @param p_repetitionInterval Repetition interval (Default: 4 seconds) * @param p_validFrom Valid From value (Default: omit) * @param p_validTo Valid To value (Default: omit) * @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit) * @param p_optional_ Optional field (Default: omit) */ template (value) UtIvimTrigger m_utTriggerEvent( template (omit) TimestampIts p_repetitionInterval := c_duration_4sec * 1000, // TimeStampIts in millseconds template (omit) TimestampIts p_validFrom := omit, template (omit) TimestampIts p_validTo := omit, template (omit) ZidList p_zoneIds := omit, template (omit) LanePosition p_laneNumber := omit, template (omit) RelavanceZidList p_relavanceZoneIds := omit, template (omit) DetectionZidList p_detectionZoneIds := omit, template (omit) DriverAwarenesZidList p_driverAwarenesZoneIds := omit, template (omit) VarLengthNumber p_itsRrid := omit, template (omit) Direction p_directionGic := omit, template (omit) integer p_layoutId := omit ) := { validFrom := p_validFrom, validTo := p_validTo, repetitionInterval := p_repetitionInterval, zoneIds := p_zoneIds, laneNumber := p_laneNumber, relavanceZoneIds := p_relavanceZoneIds, detectionZoneIds := p_detectionZoneIds, driverAwarenesZoneIds := p_driverAwarenesZoneIds, itsRrid := p_itsRrid, directionGic := p_directionGic, layoutId := p_layoutId } // End of template m_utTriggerEvent /** * @desc Send template for Upper Tester event update * @param p_iviIdentificationNumber The p_iviIVI identification number * @param p_timeStamp Time stamp value (Default: 2 seconds) * @param p_validFrom Valid From value (Default: omit) * @param p_validTo Valid To value (Default: omit) * @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit) */ template (omit) UtIvimUpdate m_utIvimUpdateEvent( template (value) IviIdentificationNumber p_iviIdentificationNumber, template (omit) TimestampIts p_timeStamp := c_duration_2sec * 1000, // TimeStampIts in millseconds template (omit) TimestampIts p_validFrom := omit, template (omit) TimestampIts p_validTo := omit, template (omit) IviManagementContainer.connectedIviStructures p_connectedIviStructures := omit ) := { iviIdentificationNumber := p_iviIdentificationNumber, validFrom := p_validFrom, validTo := p_validTo, timeStamp := p_timeStamp, connectedIviStructures := p_connectedIviStructures } // End of template m_utIvimUpdateEvent /** * @desc Send template for Upper Tester event cancellation * @param p_actionId The action id */ template (value) UtIvimTermination m_utEventCancellation( template (value) IviIdentificationNumber p_iviIdentificationNumber ) := { iviIdentificationNumber := p_iviIdentificationNumber } // End of template m_utEventCancellation } // End of group utPrimitives } // End of group primitivesTemplates group headerTemplates { /** * @desc Default send template for ITS PDU header * @param p_stationID The source station ID (Default: test system station id) * @param p_protocolVersion The protocol version (Default: current IVI protocol version) * @param p_messageID The message Id (Default: IVI message id) */ template (value) ItsPduHeader m_itsPduHeader( template (value) StationID p_stationID := f_getTsStationId(), template (value) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (value) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } // End of template m_itsPduHeader /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current IVI protocol version) * @param p_messageID The expected message id (Default: IVI message id) */ template (present) ItsPduHeader mw_itsPduHeader( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } // End of template mw_itsPduHeader template (present) StationID mw_anyStationId := ?; } // End of group headerTemplates group ivimPduTemplates { /** * @desc Send template for IVIM PDU * @param p_ivim The IVI Message */ template (value) IVIM m_ivimStructurePdu( template (value) IviStructure p_ivim ) := { header := m_itsPduHeader, ivi := p_ivim } // End of template m_ivimStructurePdu /** * @desc Default receive template for IVIM PDU * @param p_itsPduHeader The expected ITS PDU header (Default: any) * @param p_ivim The expected IVI Message (Default: any) */ template (present) IVIM mw_anyIvimPdu( template (present) ItsPduHeader p_itsPduHeader := ?, template (present) IviStructure p_ivim := ? ) := { header := p_itsPduHeader, ivi := p_ivim } // End of template mw_anyIvimPdu /** * @desc Receive template for IVIM PDU * @param p_ivim The expected IVI Message * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current IVI protocol version) * @param p_messageID The expected message id (Default: IVI message id) */ template (present) IVIM mw_ivimPdu( template (present) IviStructure p_ivim := ?, template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_ ) := { header := mw_itsPduHeader(p_stationID, p_protocolVersion, p_messageID), ivi := p_ivim } // End of template mw_ivimPdu } // End of group ivimPduTemplates group iviStructureTemplates { /** * @desc Send template for IVI Message * @param p_mandatory The Management Container * @param p_optional_ A list of IVI Container (Default: omit) */ template (omit) IviStructure m_ivimStructure( in template (value) IviManagementContainer p_mandatory, in template (omit) IviStructure.optional_ p_optional_ := omit ) := { mandatory := p_mandatory, optional_ := p_optional_ } // End of template m_ivimStructure /** * @desc Receive template for IVI Message * @param p_mandatory The Management Container * @param p_optional_ A list of IVI Container (Default: omit) */ template (present) IviStructure mw_ivimStructure( template (present) IviManagementContainer p_mandatory := ?, template IviStructure.optional_ p_optional_ := * ) := { mandatory := p_mandatory, optional_ := p_optional_ } // End of template mw_ivimStructure /** * @desc Send template for DEN Message for event termination. * @param p_iviIdentificationNumber The IVIM identification number */ template (value) IviStructure m_ivimStructureCancellation( in template (value) IviIdentificationNumber p_iviIdentificationNumber ) := { mandatory := valueof(m_iviManagementContainer(f_getProvider(), valueof(p_iviIdentificationNumber), IviStatus_cancellation_)), optional_ := omit } // End of template m_ivimStructureCancellation } // End of group iviStructureTemplates group iviManagementContainerGroup { /** * @desc Send template for IVIManagement container * @param p_serviceProviderId The IUT provider description * @param p_iviIdentificationNumber The IVIM identification number * @param p_iviStatus The IVIM status */ template (omit) IviManagementContainer m_iviManagementContainer( in template (value) Provider p_serviceProviderId, in template (value) IviIdentificationNumber p_iviIdentificationNumber, in template (value) IviStatus p_iviStatus, in template (omit) IviManagementContainer.connectedIviStructures p_connectedIviStructures := omit, in template (omit) ConnectedDenms p_connectedDenms := omit, in template (omit) IviManagementContainer.timeStamp p_timeStamp := f_getCurrentTime() ) := { serviceProviderId := p_serviceProviderId, iviIdentificationNumber := p_iviIdentificationNumber, timeStamp := p_timeStamp, validFrom := omit, validTo := omit, connectedIviStructures := p_connectedIviStructures, iviStatus := p_iviStatus, connectedDenms := p_connectedDenms } // End of template m_iviManagementContainer /** * @desc Receive template for IVIManagement container * @param p_serviceProviderId The IUT provider description * @param p_iviIdentificationNumber The IVIM identification number * @param p_iviStatus The IVIM status */ template (present) IviManagementContainer mw_iviManagementContainer( template (present) Provider p_serviceProviderId := ?, template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, template (present) IviStatus p_iviStatus := ? ) := { serviceProviderId := p_serviceProviderId, iviIdentificationNumber := p_iviIdentificationNumber, timeStamp := *, validFrom := *, validTo := *, connectedIviStructures := *, iviStatus := p_iviStatus } // End of template mw_iviManagementContainer /** * @desc Receive template for IVIManagement container * @param p_serviceProviderId The IUT provider description * @param p_iviIdentificationNumber The IVIM identification number * @param p_iviStatus The IVIM status * @param p_timeStamp Time stamp value */ template (present) IviManagementContainer mw_iviManagementContainer_timestamp( template (present) Provider p_serviceProviderId := ?, template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, template (present) IviStatus p_iviStatus := ?, template (present) TimestampIts p_timeStamp := ? ) modifies mw_iviManagementContainer := { timeStamp := p_timeStamp } // End of template mw_iviManagementContainer_timestamp /** * @desc Receive template for IVIManagement container * @param p_serviceProviderId The IUT provider description * @param p_iviIdentificationNumber The IVIM identification number * @param p_iviStatus The IVIM status * @param p_validTo Valid To value */ template (present) IviManagementContainer mw_iviManagementContainer_validTo( template (present) Provider p_serviceProviderId := ?, template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, template (present) IviStatus p_iviStatus := ?, template (present) TimestampIts p_validTo := ? ) modifies mw_iviManagementContainer := { validTo := p_validTo } // End of template mw_iviManagementContainer_validTo /** * @desc Receive template for IVIManagement container * @param p_serviceProviderId The IUT provider description * @param p_iviIdentificationNumber The IVIM identification number * @param p_iviStatus The IVIM status * @param p_validFrom Valid From value */ template (present) IviManagementContainer mw_iviManagementContainer_validFrom( template (present) Provider p_serviceProviderId := ?, template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, template (present) IviStatus p_iviStatus := ?, template (present) TimestampIts p_validFrom := ? ) modifies mw_iviManagementContainer := { validFrom := p_validFrom } // End of template mw_iviManagementContainer_validFrom /** * @desc Receive template for IVIManagement container * @param p_serviceProviderId The IUT provider description * @param p_iviIdentificationNumber The IVIM identification number * @param p_iviStatus The IVIM status * @param p_connectedIviStructures The IVIM connectedIviStructures */ template (present) IviManagementContainer mw_iviManagementContainer_connectedIviStructures( template (present) Provider p_serviceProviderId := ?, template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, template (present) IviStatus p_iviStatus := ?, template (present) IviManagementContainer.connectedIviStructures p_connectedIviStructures := ? ) modifies mw_iviManagementContainer := { connectedIviStructures := p_connectedIviStructures } // End of template mw_iviManagementContainer /** * @desc Receive template for Porvide identifier * @param p_countryCode Country code value * @param p_providerIdentifier Provider Identifier value */ template (present) Provider mw_provider( template (present) CountryCode p_countryCode := ?, template (present) AVIAEIIssuerIdentifier p_providerIdentifier := ? ) := { countryCode := p_countryCode, providerIdentifier := p_providerIdentifier } // End of template mw_provider } // End of group iviManagementContainerGroup group connectedIviStructuresGroup { } // End of group connectedIviStructuresGroup group iviContainerGroup { template (value) IviContainer m_iviContainer_geographicLocationContainer( in template (value) GeographicLocationContainer p_glc ) := { glc := p_glc } // End of template m_iviContainer_geographicLocationContainer template (present) IviContainer mw_iviContainer_geographicLocationContainer( template (present) GeographicLocationContainer p_glc := ? ) := { glc := p_glc } // End of template mw_iviContainer_geographicLocationContainer template (value) IviContainer m_iviContainer_generalIviContainer( in template (value) GeneralIviContainer p_giv ) := { giv := p_giv } // End of template m_iviContainer_generalIviContainer template (present) IviContainer mw_iviContainer_generalIviContainer( template (present) GeneralIviContainer p_giv := ? ) := { giv := p_giv } // End of template mw_iviContainer_generalIviContainer template (value) IviContainer m_iviContainer_roadConfigurationContainer( in template (value) RoadConfigurationContainer p_rcc ) := { rcc := p_rcc } // End of template m_iviContainer_roadConfigurationContainer template (present) IviContainer mw_iviContainer_roadConfigurationContainer( template (present) RoadConfigurationContainer p_rcc := ? ) := { rcc := p_rcc } // End of template mw_iviContainer_roadConfigurationContainer template (value) IviContainer m_iviContainer_textContainer( in template (value) TextContainer p_tc ) := { tc := p_tc } // End of template m_iviContainer_textContainer template (present) IviContainer mw_iviContainer_textContainer( template (present) TextContainer p_tc := ? ) := { tc := p_tc } // End of template mw_iviContainer_textContainer template (value) IviContainer m_iviContainer_layoutContainer( in template (value) LayoutContainer p_lac ) := { lac := p_lac } // End of template m_iviContainer_layoutContainer template (present) IviContainer mw_iviContainer_layoutContainer( template (present) LayoutContainer p_lac := ? ) := { lac := p_lac } // End of template mw_iviContainer_layoutContainer } // End of group iviContainerGroup group geographicLocationContainerGroup { template (value) GeographicLocationContainer m_geographicLocationContainer( in template (value) ReferencePosition p_referencePosition, in template (value) GeographicLocationContainer.parts p_parts ) := { referencePosition := p_referencePosition, referencePositionTime := omit, referencePositionHeading := omit, referencePositionSpeed := omit, parts := p_parts } // End of template m_geographicLocationContainer template (present) GeographicLocationContainer mw_geographicLocationContainer( template (present) ReferencePosition p_referencePosition := ?, template (present) GeographicLocationContainer.parts p_parts := ? ) := { referencePosition := p_referencePosition, referencePositionTime := *, referencePositionHeading := *, referencePositionSpeed := *, parts := p_parts } // End of template mw_geographicLocationContainer template (omit) GlcPart m_glcPart( in template (value) Zid p_zoneId, in template (omit) LanePosition p_laneNumber := omit, in template (omit) GlcPart.zoneExtension p_zoneExtension := omit, in template (omit) HeadingValue p_zoneHeading := omit, in template (omit) Zone p_zone := omit ) := { zoneId := p_zoneId, laneNumber := p_laneNumber, zoneExtension := p_zoneExtension, zoneHeading := p_zoneHeading, zone := p_zone } // End of template m_glcPart template GlcPart mw_glcPart( template (present) Zid p_zoneId := ?, template LanePosition p_laneNumber := *, template GlcPart.zoneExtension p_zoneExtension := *, template HeadingValue p_zoneHeading := *, template Zone p_zone := * ) := { zoneId := p_zoneId, laneNumber := p_laneNumber, zoneExtension := p_zoneExtension, zoneHeading := p_zoneHeading, zone := p_zone } // End of template mw_glcPart template (value) ReferencePosition m_referencePosition( in template (value) Latitude p_latitude := 10000, in template (value) Longitude p_longitude := 10000, in template (value) PosConfidenceEllipse p_position, in template (value) Altitude p_altitude ) := { latitude := p_latitude, longitude := p_longitude, positionConfidenceEllipse := p_position, altitude := p_altitude } // End of template m_referencePosition template (value) ReferencePosition m_referencePosition_sample( in template (value) Latitude p_latitude := 10000, in template (value) Longitude p_longitude := 10000 ) := { latitude := p_latitude, longitude := p_longitude, positionConfidenceEllipse := { semiMajorConfidence := 1000, semiMinorConfidence := 1000, semiMajorOrientation := 1000 }, altitude := { altitudeValue := 10000, altitudeConfidence := alt_000_01//unavailable } } // End of template m_referencePosition template Zone m_zone_segment( template (value) Segment p_segment := m_segment ) := { segment := p_segment } // End of template m_zone_segment template Zone m_zone_polygonalLine( template (value) PolygonalLine p_area := m_polygonalLine_deltaPositions ) := { area := p_area } // End of template m_zone_polygonalLine template Segment m_segment( template (value) PolygonalLine p_line := m_polygonalLine_deltaPositions, template (omit) IviLaneWidth p_laneWidth := omit ) := { line := p_line, laneWidth := p_laneWidth } // End of template m_segment template PolygonalLine m_polygonalLine_deltaPositions( template (value) PolygonalLine.deltaPositions p_deltaPositions := {m_deltaPosition} ) := { deltaPositions := p_deltaPositions } // End of template m_segment template DeltaPosition m_deltaPosition( template (value) DeltaLatitude p_deltaLatitude := 9997, template (value) DeltaLongitude p_deltaLongitude := 9998 ) := { deltaLatitude := p_deltaLatitude, deltaLongitude := p_deltaLongitude } // End of template m_segment } // End of group geographicLocationContainerGroup group generalIviContainerGroup { template (value) GicPart m_gicPart_basic( in template (value) IviType p_iviType, in template (value) GicPart.roadSignCodes p_roadSignCodes ) := { detectionZoneIds := omit, its_Rrid := omit, relevanceZoneIds := omit, direction := omit, driverAwarenessZoneIds := omit, minimumAwarenessTime := omit, applicableLanes := omit, iviType := p_iviType, iviPurpose := omit, laneStatus := omit, vehicleCharacteristics := omit, driverCharacteristics := omit, layoutId := omit, preStoredlayoutId := omit, roadSignCodes := p_roadSignCodes, extraText := omit } // End of template m_gicPart_basic template (value) GicPart m_gicPart_relavanceZoneId( in template (value) IviType p_iviType := IviType_regulatoryMessages_, in template (value) GicPart.roadSignCodes p_roadSignCodes := {m_rSCode_itisCodes}, in template (value) GicPart.relevanceZoneIds p_relevanceZoneIds := {PX_RELAVANCE_ZONEID} ) modifies m_gicPart_basic:= { relevanceZoneIds := p_relevanceZoneIds, iviType := p_iviType, roadSignCodes := p_roadSignCodes } // End of template m_gicPart_relavanceZoneId template (value) GicPart m_gicPart_relavanceZoneId_detectionZoneId_direction( in template (value) IviType p_iviType := IviType_regulatoryMessages_, in template (value) GicPart.roadSignCodes p_roadSignCodes := {m_rSCode_itisCodes}, in template (value) GicPart.relevanceZoneIds p_relevanceZoneIds := {PX_RELAVANCE_ZONEID}, in template (value) GicPart.detectionZoneIds p_detectionZoneIds := {PX_DETECTION_ZONEID}, in template (value) GicPart.direction p_direction := Direction_sameDirection_ ) modifies m_gicPart_basic:= { detectionZoneIds := p_detectionZoneIds, relevanceZoneIds := p_relevanceZoneIds, direction := p_direction, iviType := p_iviType, roadSignCodes := p_roadSignCodes } // End of template m_gicPart_relavanceZoneId_detectionZoneId_direction template (value) GicPart m_gicPart_laneStatus( in template (value) IviType p_iviType := IviType_regulatoryMessages_, in template (value) GicPart.roadSignCodes p_roadSignCodes := {m_rSCode_itisCodes}, in template (value) GicPart.laneStatus p_laneStatus := LaneStatus_open_ ) modifies m_gicPart_basic:= { iviType := p_iviType, laneStatus := p_laneStatus, roadSignCodes := p_roadSignCodes } // End of template m_gicPart_relavanceZoneId template (present) GicPart mw_gicPart_basic( template (present) IviType p_iviType := ?, template (present) GicPart.roadSignCodes p_roadSignCodes := ? ) := { detectionZoneIds := *, its_Rrid := *, relevanceZoneIds := *, direction := *, driverAwarenessZoneIds := *, minimumAwarenessTime := *, applicableLanes := *, iviType := p_iviType, iviPurpose := *, laneStatus := *, vehicleCharacteristics := *, driverCharacteristics := *, layoutId := *, preStoredlayoutId := *, roadSignCodes := p_roadSignCodes, extraText := * } // End of template mw_gicPart template (present) GicPart mw_gicPart_layoutId( template (present) IviType p_iviType := ?, template (present) GicPart.roadSignCodes p_roadSignCodes := ?, template (present) integer p_layoutId := ? ) modifies mw_gicPart_basic := { layoutId := p_layoutId } // End of template mw_gicPart_layoutId template (present) GicPart mw_gicPart_allZoneIdsAndItsRridAndDirection( template (present) IviType p_iviType := ?, template (present) GicPart.roadSignCodes p_roadSignCodes := ?, template GicPart.detectionZoneIds p_detectionZoneIds := *, template VarLengthNumber p_varLengthNumber := *, template GicPart.relevanceZoneIds p_relevanceZoneIds := *, template Direction p_direction := *, template GicPart.driverAwarenessZoneIds p_driverAwarenessZoneIds := * ) modifies mw_gicPart_basic := { detectionZoneIds := p_detectionZoneIds, its_Rrid := p_varLengthNumber, relevanceZoneIds := p_relevanceZoneIds, direction := p_direction, driverAwarenessZoneIds := p_driverAwarenessZoneIds } // End of template mw_gicPart template (present) RSCode mw_rSCode( template RSCode.layoutComponentId p_layoutComponentId := *, template (present) RSCode.code p_code := ? ) := { layoutComponentId := p_layoutComponentId, code := p_code } // End of template mw_rSCode template (present) RSCode mw_rSCode_viennaConvention( template RSCode.layoutComponentId p_layoutComponentId := * ) := { layoutComponentId := p_layoutComponentId, code := { viennaConvention := ? } } // End of template mw_rSCode_viennaConvention template (present) RSCode mw_rSCode_iso14823( template RSCode.layoutComponentId p_layoutComponentId := * ) := { layoutComponentId := p_layoutComponentId, code := { iso14823 := ? } } // End of template mw_rSCode_iso14823 template (present) RSCode mw_rSCode_itisCodes( template RSCode.layoutComponentId p_layoutComponentId := * ) := { layoutComponentId := p_layoutComponentId, code := { itisCodes := ? } } // End of template mw_rSCode_itisCodes template (present) RSCode mw_rSCode_anyCatalogue( template RSCode.layoutComponentId p_layoutComponentId := * ) := { layoutComponentId := p_layoutComponentId, code := { anyCatalogue := ? } } // End of template mw_rSCode_anyCatalogue template (value) RSCode m_rSCode_itisCodes := { layoutComponentId := omit, code := { itisCodes := 100 } } // End of template m_rSCode_itisCodes template (value) RSCode m_rSCode_viennaConvention := { layoutComponentId := omit, code := { viennaConvention := { roadSignClass := 1, // classB (1), roadSignCode := 2, //INTEGER (1..64), vcOption := 1, //a(1), validity := omit, value_ := omit, unit := omit } } } // End of template m_rSCode_viennaConvention template (value) RSCode m_rSCode_iso14823_trafficSignPictogram ( template (value) RSCode.code.iso14823.pictogramCode.serviceCategoryCode.trafficSignPictogram p_trafficSignPictogram := dangerWarning ):= { layoutComponentId := omit, code := { iso14823 := { pictogramCode := { countryCode := omit, serviceCategoryCode := { trafficSignPictogram := p_trafficSignPictogram }, pictogramCategoryCode := { nature := 2, serialNumber := 3 } }, attributes := omit } } } // End of template m_rSCode_iso14823_trafficSignPictogram template (value) RSCode m_rSCode_iso14823_publicFacilitiesPictogram := { layoutComponentId := omit, code := { iso14823 := { pictogramCode := { countryCode := omit, serviceCategoryCode := { publicFacilitiesPictogram := publicFacilities }, pictogramCategoryCode := { nature := 2, serialNumber := 3 } }, attributes := omit } } } // End of template m_rSCode_iso14823_publicFacilitiesPictogram template (value) RSCode m_rSCode_iso14823_ambientOrRoadConditionPictogram ( template (value) RSCode.code.iso14823.pictogramCode.serviceCategoryCode.ambientOrRoadConditionPictogram p_ambientOrRoadConditionPictogram := ambientCondition ):= { layoutComponentId := omit, code := { iso14823 := { pictogramCode := { countryCode := omit, serviceCategoryCode := { ambientOrRoadConditionPictogram := p_ambientOrRoadConditionPictogram }, pictogramCategoryCode := { nature := 2, serialNumber := 3 } }, attributes := omit } } } // End of template m_rSCode_iso14823_ambientOrRoadConditionPictogram } // End of group generalIviContainerGroup group layoutContainerGroup { template (value) LayoutContainer m_layoutContainer( in template (value) LayoutContainer.layoutComponents p_layoutComponents := {m_layoutComponent} ) := { layoutId := 1, height := omit, width := omit, layoutComponents := p_layoutComponents } // End of template m_tcPart_basic template (present) LayoutContainer mw_layoutContainer( template (present) LayoutContainer.layoutComponents p_layoutComponents := ? ) := { layoutId := ?, height := *, width := *, layoutComponents := p_layoutComponents } // End of template mw_tcPart_basic template (value) LayoutComponent m_layoutComponent := { layoutComponentId := 1, height := 10, width := 11, x := 12, y := 13, textScripting := 1 } // End of template m_layoutComponent } //end group layoutContainerGroup group roadConfigurationContainerGroup { template (value) RccPart m_rccPart( in template (value) ZoneIds p_relevanceZoneIds, in template (value) RoadType p_roadType, in template (value) LaneConfiguration p_laneConfiguration ) := { relevanceZoneIds := p_relevanceZoneIds, roadType := p_roadType, laneConfiguration := p_laneConfiguration } // End of template m_rccPart template (present) RccPart mw_rccPart( template (present) ZoneIds p_relevanceZoneIds := ?, template (present) RoadType p_roadType := ?, template (present) LaneConfiguration p_laneConfiguration := ? ) := { relevanceZoneIds := p_relevanceZoneIds, roadType := p_roadType, laneConfiguration := p_laneConfiguration } // End of template mw_rccPart template (present) LaneInformation mw_laneInformation( template (present) LanePosition p_lanePosition := ?, template (present) Direction p_direction := ?, template (present) LaneType p_laneType := ?, template (present) LaneStatus p_laneStatus := ? ) := { laneNumber := p_lanePosition, direction := p_direction, validity := *, //DTM laneType := p_laneType, laneTypeQualifier := *, //CompleteVehicleCharacteristics laneStatus := p_laneStatus, laneWidth := * //IviLaneWidth } template (value) LaneInformation m_laneInformation( template (value) LanePosition p_lanePosition := LanePosition_innerHardShoulder_, template (value) Direction p_direction := Direction_sameDirection_, template (value) LaneType p_laneType := LaneType_traffic_, template (value) LaneStatus p_laneStatus := LaneStatus_open_ ) := { laneNumber := p_lanePosition, direction := p_direction, validity := omit, //DTM laneType := p_laneType, laneTypeQualifier := omit, //CompleteVehicleCharacteristics laneStatus := p_laneStatus, laneWidth := omit //IviLaneWidth } } // End of group roadConfigurationContainerGroup group textContainerGroup { template (value) TcPart m_tcPart_basic( in template (value) TcPart.relevanceZoneIds p_relevanceZoneIds, in template (value) TcPart.data p_data ) := { detectionZoneIds := omit, relevanceZoneIds := p_relevanceZoneIds, direction := omit, driverAwarenessZoneIds := omit, minimumAwarenessTime := omit, applicableLanes := omit, layoutId := omit, preStoredlayoutId := omit, text := omit, data := p_data } // End of template m_tcPart_basic template (present) TcPart mw_tcPart_basic( template (present) TcPart.relevanceZoneIds p_relevanceZoneIds := ?, template (present) TcPart.data p_data := ? ) := { detectionZoneIds := *, relevanceZoneIds := p_relevanceZoneIds, direction := *, driverAwarenessZoneIds := *, minimumAwarenessTime := *, applicableLanes := *, layoutId := *, preStoredlayoutId := *, text := *, data := p_data } // End of template mw_tcPart_basic template (present) TcPart mw_tcPart_allZoneIds( template (present) TcPart.relevanceZoneIds p_relevanceZoneIds := ?, template (present) TcPart.data p_data := ?, template (present) TcPart.detectionZoneIds p_detectionZoneIds := ?, template (present) TcPart.driverAwarenessZoneIds p_driverAwarenessZoneIds := ? ) modifies mw_tcPart_basic := { detectionZoneIds := p_detectionZoneIds, driverAwarenessZoneIds := p_driverAwarenessZoneIds } // End of template mw_tcPart_allZoneIds template (present) TcPart mw_tcPart_direction( template (present) TcPart.relevanceZoneIds p_relevanceZoneIds := ?, template (present) TcPart.data p_data := ?, template (present) TcPart.direction p_direction := ? ) modifies mw_tcPart_basic := { relevanceZoneIds := p_relevanceZoneIds } // End of template mw_tcPart_direction template (present) TcPart mw_tcPart_text( template (present) TcPart.relevanceZoneIds p_relevanceZoneIds := ?, template (present) TcPart.data p_data := ?, template (present) TcPart.text p_text := ? ) modifies mw_tcPart_basic := { text := p_text } // End of template mw_tcPart_text template (present) TcPart mw_tcPart_layoutId( template (present) TcPart.relevanceZoneIds p_relevanceZoneIds := ?, template (present) TcPart.data p_data := ?, template (present) TcPart.layoutId p_layoutId := ? ) modifies mw_tcPart_basic := { layoutId := p_layoutId } // End of template mw_tcPart_layoutId template (present) Text mw_text := { layoutComponentId := *, language_ := ?, textContent := ? } } // End of group textContainerGroup group itsFunction { /** * @desc Gets the Provifr of test system * @return Test system's Provider value * @see PX_PROVIDER */ function f_getProvider() return Provider { return PX_PROVIDER; } // End of function f_getProvider } // End of group itsFunction } // End of module LibItsIvimTemplates ats_ts103191-3-devel/lib/LibItsIvim_TypesAndValues.ttcn 0000664 0000000 0000000 00000017336 14553501104 0022741 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/IVIM/LibItsIvim_TypesAndValues.ttcn $ * $Id: LibItsIvim_TypesAndValues.ttcn,v 1.4 2019/01/02 14:14:11 dte Exp $ * @desc Module containing type and value definitions for IVIM * @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 LibItsIvim_TypesAndValues { // LibCommon import from LibCommon_DataStrings all; import from LibCommon_BasicTypesAndValues all; // LibIts import from IVIM_PDU_Descriptions language "ASN.1:1997" all; import from IVI language "ASN.1:1997" all; import from ITS_Container language "ASN.1:1997" all; import from CITSapplMgmtIDs language "ASN.1:1997" all; group actionTypes { /** * @desc Indication of whether event cancellation has to be raised by the test system or iut */ type enumerated Trigger { e_ets(0), e_iut(1) } } // End ofgroup actionTypes group ivimConstants { const TimestampIts c_repetition_interval_deactivated := 0; const TimestampIts c_duration_2sec := 2; // FIXME Change them into milliseconds and remove *1000 factor in Tp & Template (default values) const TimestampIts c_duration_4sec := 4; const TimestampIts c_duration_6sec := 6; type record of float Times; } // End ofgroup ivimConstants group otherTypes { /** * @desc List of UtIvimTriggers used in behaviours */ type record of UtIvimTrigger UtIvimTriggerList; /** * @desc List of IviIdentificationNumbers used in behaviours */ type record of IviIdentificationNumber IviIdentificationNumberList; /** * @desc List of ZoneIds */ type record of Zid ZidList; /** * @desc List of RelavanceZoneIds */ type record of Zid RelavanceZidList; /** * @desc List of DetectionZoneIds */ type record of Zid DetectionZidList; /** * @desc List of DriverAwarenesZoneIds */ type record of Zid DriverAwarenesZidList; } group utPrimitives { /** * @desc Upper Tester message to initialize IUT * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ type record UtIvimInitialize { Oct8 hashedId8 } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester results message of the IVIM IUT * @member utIvimInitialize - * @member utIvimTriggerResult - * @member utIvimUpdateResult, - * @member utIvimTerminationResult - */ type union UtIvimResults { boolean utIvimInitializeResult, UtIvimTriggerResult utIvimTriggerResult, UtIvimUpdateResult utIvimUpdateResult, boolean utIvimTerminationResult } with { variant "" } // End of type UtIvimResults /** * @desc Upper Tester message to request triggering of an event at IUT */ type record UtIvimTrigger { TimestampIts validFrom optional, TimestampIts validTo optional, TimestampIts repetitionInterval optional, ZidList zoneIds optional, LanePosition laneNumber optional, RelavanceZidList relavanceZoneIds optional, DetectionZidList detectionZoneIds optional, DriverAwarenesZidList driverAwarenesZoneIds optional, VarLengthNumber itsRrid optional, Direction directionGic optional, integer layoutId optional } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester result message of request of triggering of an event at IUT */ type record UtIvimTriggerResult { boolean result, IviIdentificationNumber iviIdentificationNumber } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to update an event at IUT */ type record UtIvimUpdate { IviIdentificationNumber iviIdentificationNumber, TimestampIts validFrom optional, TimestampIts validTo optional, TimestampIts timeStamp optional, // FIXME Rename timeStamp into repetitionInterval as described in ETSI TR 103 099 Clause C.9.2 UpdateIvimEvent IviManagementContainer.connectedIviStructures connectedIviStructures optional } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester result message of an update request of an event on Ivim IUT */ type record UtIvimUpdateResult { boolean result, IviIdentificationNumber iviIdentificationNumber } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to request the termination of an event at IUT */ type record UtIvimTermination { IviIdentificationNumber iviIdentificationNumber } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester result message of termination of an event on Ivim IUT */ //type boolean UtIvimTerminationResult; /** * @desc Upper Tester message to check event/status on Ivim IUT */ type record UtIvimEventInd { IVIM iviMsg } with { encode (iviMsg) "LibItsIvim_asn1" } /** * @desc List of Upper Tester messages to check event/status on Ivim IUT */ type record of UtIvimEventInd UtIvimEventIndList; /** * @desc List of ActionID received in response to the Upper Tester triggered messages */ type record of ActionID UtIvimActionIDList; } with { encode "UpperTester" variant "" } group facilityPrimitives { group fa1Primitives { /** * @desc FA1 IVIM Indication Primitive * * @member ivimMsg */ type record IvimInd { IVIM msgIn, UInt64 recvTime, UInt8 gnNextHeader optional, UInt8 gnHeaderType optional, UInt8 gnHeaderSubtype optional, UInt32 gnLifetime optional, UInt8 gnTrafficClass optional, UInt16 btpDestinationPort optional, UInt16 btpInfo optional, Bit256 ssp optional, UInt32 its_aid optional } with { encode (msgIn) "PER" } /** * @desc FA1 IVIM Request Primitive * * @member ivimMsg */ type record IvimReq { IVIM msgOut } with { encode (msgOut) "PER" } } // End of group fa1Primitives } // End of group facilityPrimitives with { variant "" encode "LibIts_Interface" } // end interfacePrimitives } with { encode "LibItsIvim" } ats_ts103191-3-devel/lib/LibItsMapemSpatem_EncdecDeclarations.ttcn 0000664 0000000 0000000 00000001474 14553501104 0025045 0 ustar 00root root 0000000 0000000 module LibItsMapemSpatem_EncdecDeclarations { // LibIts import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; external function fx_enc_MAPEM (MAPEM pdu) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_MAPEM (inout bitstring b, out MAPEM p) return integer with {extension "prototype(sliding) decode(PER)"} external function fx_enc_SPATEM (SPATEM pdu) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_SPATEM (inout bitstring b, out SPATEM p) return integer with {extension "prototype(sliding) decode(PER)"} } // End of module LibItsMapemSpatem_EncdecDeclarations ats_ts103191-3-devel/lib/LibItsMapemSpatem_Pics.ttcn 0000664 0000000 0000000 00000007460 14553501104 0022232 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/MapemSpatem/LibItsMapemSpatem_Pics.ttcn $ * $Id: LibItsMapemSpatem_Pics.ttcn 1312 2016-12-14 09:21:45Z garciay $ * @desc MAPEM SPATEM PICS * @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 LibItsMapemSpatem_Pics { // LibCommon import from LibCommon_BasicTypesAndValues all; /** * @desc Is the IUT running in secured mode? * @see ETSI TS 103 191-1 Table A.1.1 */ modulepar boolean PICS_IS_IUT_SECURED := false; /** * @desc Support for MAPEM reception * @see ETSI TS 103 191-1 Table A.1.2 */ modulepar boolean PICS_ETSI_STRICT := false; /** * @desc Support for MAPEM reception * @see ETSI TS 103 191-1 Table A.1.3 */ modulepar boolean PICS_SHORT_RANGE := false; /** * @desc Support for MAPEM generation * @see ETSI TS 103 191-1 Table A.2 */ modulepar boolean PICS_MAPEM_GENERATION := true; /** * @desc Support for MAPEM reception * @see ETSI TS 103 191-1 Table A.2 */ modulepar boolean PICS_MAPEM_RECEPTION := true; /** * @desc Support for MAPEM reception * @see TODO */ modulepar boolean PICS_MAPEM_TRANSMISSION_RATE := false; /** * @desc Support for MAPEM pedestrians manoeuvres * @see TODO */ modulepar boolean PICS_PEDESTRIAN_MANOEUVRES := false; /** * @desc Support for MAPEM cars manoeuvres * @see TODO */ modulepar boolean PICS_SPECIALIZED_CARS_MANOEUVRES := false; /** * @desc Support for MAPEM width attribut * @see TODO */ modulepar boolean PICS_MAPEM_HAS_LANE_WIDTH := false; modulepar float PICS_T_GENMAPEMMIN := 0.5; modulepar float PICS_T_GENMAPEMMAX := 2.0; /** * @desc Support for SPATEM generation * @see ETSI TS 103 191-1 Table A.2 */ modulepar boolean PICS_SPATEM_GENERATION := true; /** * @desc Support for SPATEM reception * @see ETSI TS 103 191-1 Table A.2 */ modulepar boolean PICS_SPATEM_RECEPTION := true; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_PEDESTRIAN_MANOEUVRES := true; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_SPECIALIZED_MANOEUVRES := true; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_HAS_TIMING := false; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_PRIORITIZATION := false; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_HAS_OPTIMAL_SPEED := true; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_HAS_SIGNAL_PROGRESSION_SPEED := true; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_HAS_EGRESS_QUEUE := true; /** * @desc Support for SPATEM reception * @see TODO */ modulepar boolean PICS_SPATEM_TRANSMISSION_RATE := true; modulepar float PICS_T_GEN_SPATEM_MIN := 0.1; modulepar float PICS_T_GEN_SPATEM_MAX := 2.0; } // end LibItsSremSsem_Pics ats_ts103191-3-devel/lib/LibItsMapemSpatem_Pixits.ttcn 0000664 0000000 0000000 00000003565 14553501104 0022616 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF484 / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/MapemSpatem/LibItsMapemSpatem_Pixits.ttcn $ * $Id: LibItsMapemSpatem_Pixits.ttcn 1315 2016-12-15 13:25:41Z garciay $ * @desc MAPEM SPATEM PIXIT * @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 LibItsMapemSpatem_Pixits { // LibCommon import from LibCommon_DataStrings all; import from LibCommon_BasicTypesAndValues all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; // LibItsMapemSpatem import from LibItsMapemSpatem_TypesAndValues all; /** * @desc MsgCount for MAPEM sending * @see ETSI TS 103 191-3 Table B.7 */ modulepar MsgCount PX_MSG_ISSUE_REVISION := 10; /** * @desc MsgCount for IntersectionState DF sending * @see ETSI TS 103 191-3 Table B.7 */ modulepar MsgCount PX_INTERSECTIONSTATE_REVISION := 20; /** * @desc Id for IntersectionReferenceID DF sending * @see ETSI TS 103 191-3 Table B.7 */ modulepar IntersectionID PX_INTERSECTION_ID := 7; /** * @desc SignalGroup for MovementState DF sending * @see ETSI TS 103 191-3 Table B.7 */ modulepar SignalGroupID PX_SIGNAL_GROUP_ID := 128; /** * @desc 3D Reference point latitude * @see ETSI TS 103 191-3 Table B.7 */ modulepar Latitude PX_3D_REF_POINT_LATITUDE := 0; } // end LibItsMapemSpatem_Pixits ats_ts103191-3-devel/lib/LibItsMapemSpatem_Templates.ttcn 0000664 0000000 0000000 00000172046 14553501104 0023275 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF484 / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn $ * $Id: LibItsMapemSpatem_Templates.ttcn 1317 2017-01-26 07:05:19Z garciay $ * @desc Module containing base template definitions for MAPEM SPATEM * @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 LibItsMapemSpatem_Templates { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibHelpers import from LibHelpers_Functions all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; import from LibItsCommon_ASN1_NamedNumbers all; import from LibItsCommon_ASN1_ISDSRC_NamedNumbers all; // LibItsMapemSpatem import from LibItsMapemSpatem_TypesAndValues all; import from LibItsMapemSpatem_Pixits all; group primitivesTemplates { /** * @desc Send template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The MAPEM Message to be sent */ template (value) MapemReq m_mapemReq( in template (value) MAPEM p_mapemMsg ) := { msgOut := p_mapemMsg } /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The expected MAPEM Message */ template (present) MapemInd mw_mapemInd( template (present) MAPEM p_mapemMsg ) := { msgIn := p_mapemMsg, recvTime := ?, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * } /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The expected MAPEM 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 (present) MapemInd mw_mapemIndWithGnParameters( template (present) MAPEM p_mapemMsg, 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_mapemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg Expected MAPEM 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 (present) MapemInd mw_mapemIndWithBtpParameters( template (present) MAPEM p_mapemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_mapemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) * @param p_mapemMsg The expected MAPEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) MapemInd mw_mapemIndWithSecurityParameters( template (present) MAPEM p_mapemMsg, template (present) Bit24 p_ssp := ?, template (present) UInt32 p_its_aid := ? ) modifies mw_mapemInd := { ssp := p_ssp, its_aid := p_its_aid } /** * @desc Send template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The SPATEM Message to be sent */ template (value) SpatemReq m_spatemReq( in template (value) SPATEM p_spatemMsg ) := { msgOut := p_spatemMsg } /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The expected SPATEM Message */ template (present) SpatemInd mw_spatemInd( template (present) SPATEM p_spatemMsg ) := { msgIn := p_spatemMsg, recvTime := ?, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * }; /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The expected SPATEM 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 (present) SpatemInd mw_spatemIndWithGnParameters( template (present) SPATEM p_spatemMsg, 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_spatemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg Expected MAPEM 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 (present) SpatemInd mw_spatemIndWithBtpParameters( template (present) SPATEM p_spatemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_spatemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) * @param p_spatemMsg The expected SPATEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) SpatemInd mw_spatemIndWithSecurityParameters( template (present) SPATEM p_spatemMsg, template (present) Bit24 p_ssp := ?, template (present) UInt32 p_its_aid := ? ) modifies mw_spatemInd := { ssp := p_ssp, its_aid := p_its_aid } } group utPrimitives { /** * @desc Send template for Upper Tester event initialization * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ template (value) UtMapemSpatemInitialize m_mapemSpatemInitialize( in HashedId8 p_hashedId8 := '0000000000000000'O ) := { hashedId8 := p_hashedId8 } /** * @desc Send template for Upper Tester Trigger event */ template (omit) UtMapemSpatemTrigger m_utTriggerEvent( in Event p_event, in template (omit) IntersectionID p_intersectionID := omit, in template (omit) RegulatorySpeedLimit p_regulatorySpeedLimit := omit/*, in template (omit) Latitude p_latitude := omit*/ ) := { event := p_event, intersectionID := p_intersectionID, regulatorySpeedLimit := p_regulatorySpeedLimit/*, latitude := p_latitude*/ } } group mapSpatPduTemplates { /** * @desc Send template for MAPEM PDU * @param p_map The MAPEM Message */ template (value) MAPEM m_mapemPdu( in template (value) MapData p_map ) := { header := m_itsPduHeader( - , - ,LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_mapem_ ), map_ := p_map } /** * @desc Receive template for MAPEM PDU * @param p_map The MAPEM Message */ template (present) MAPEM mw_mapemPdu( template (present) MapData p_map := ? ) := { header := mw_itsPduHeaderMapem, map_ := p_map } /** * @desc Send template for SPATEM PDU * @param p_spat The SPATEM Message */ template (value) SPATEM m_spatemPdu( in template (value) SPAT p_spat ) := { header := m_itsPduHeader( - , - , LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_spatem_ ), spat := p_spat } /** * @desc Receive template for SPATEM PDU * @param p_spat The SPATEM Message */ template (present) SPATEM mw_spatemPdu( template (present) SPAT p_spat := ? ) := { header := mw_itsPduHeaderSpatem, spat := p_spat } } // End of group mapSpatPduTemplates group headerTemplates { /** * @desc Default send template for ITS PDU header * @param p_stationID The source station ID (Default: test system station id) * @param p_protocolVersion The protocol version (Default: current MAPEM SPATEM protocol version) * @param p_messageID The message Id (Default: MAPEM SPATEM id) */ template (value) ItsPduHeader m_itsPduHeader( in template (value) StationID p_stationID := f_getTsStationId(), in template (value) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, in template (value) ItsPduHeader.messageID p_messageID ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) * @param p_messageID The expected message id (Default: MAPEM SPATEM message id) */ template ItsPduHeader mw_itsPduHeader( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := ? ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) * @param p_messageID The expected message id (Default: MAPEM id) */ template (present) ItsPduHeader mw_itsPduHeaderMapem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_mapem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) * @param p_messageID The expected message id (Default: SPATEM id) */ template (present) ItsPduHeader mw_itsPduHeaderSpatem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_spatem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for the station id */ template (present) StationID mw_anyStationId := ?; } // End of group headerTemplates group mapemSpatemTemplates { template (omit) IntersectionReferenceID m_intersectionReferenceID( in template (value) IntersectionID p_intersectionID := 0, in template (omit) RoadRegulatorID p_roadRegulatorID := omit ) := { region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs id := p_intersectionID // a unique mapping to the intersection in question within the above region of use } template (omit) Connection m_connction( in template (value) ConnectingLane p_connectingLane, in template (omit) IntersectionReferenceID p_remoteIntersection := omit, in template (omit) SignalGroupID p_signalGroup := omit, in template (omit) RestrictionClassID p_userClass := omit, in template (omit) LaneConnectionID p_connectionID := omit ) := { connectingLane := p_connectingLane, // The index of the connecting lane and also the maneuver from the current lane to it remoteIntersection := p_remoteIntersection, // This entry is only used when the indicated connecting lane belongs to another intersection layout. signalGroup := p_signalGroup, // The matching signal group send by the SPAT message for this lane/maneuver. userClass := p_userClass, // The Restriction Class of users this applies to connectionID := p_connectionID // An optional connection index used to relate this lane connection to any dynamic clearance data in the SPAT } group mapemTemplates { group mapemTemplatesSend { /** * @desc Send template for MAPEM Message */ template (value) MapData m_defaultMapem := { timeStamp := omit, msgIssueRevision := PX_MSG_ISSUE_REVISION, layerType := omit, layerID := omit, intersections := omit, roadSegments := omit, dataParameters := omit, restrictionList := omit, regional := omit } /** * @desc Receive template for MAPEM Message */ template (omit) MapData m_mapem( in template (value) MsgCount p_msgIssueRevision, in template (omit) IntersectionGeometryList p_intersectionGeometryList := omit, in template (omit) RoadSegmentList p_roadSegments := omit ) modifies m_defaultMapem := { msgIssueRevision := p_msgIssueRevision, intersections := p_intersectionGeometryList, roadSegments := p_roadSegments } template (omit) IntersectionGeometry m_intersectionGeometry( in template (value) IntersectionReferenceID p_intersectionReferenceID, in template (value) MsgCount p_revision, in template (value) Position3D p_position3D, in template (value) LaneList p_laneList, in template (omit) LaneWidth p_laneWidth := 2000 ) := { name := omit, //For debug use only id := p_intersectionReferenceID, // A globally unique value set, consisting of a regionID and intersection ID assignment revision := p_revision, // Required default values about lane descriptions follow refPoint := p_position3D, // The reference from which subsequent data points are offset until a new point is used. laneWidth := p_laneWidth, // Reference width used by all subsequent lanes unless a new width is given speedLimits SpeedLimitList OPTIONAL, speedLimits := omit, laneSet := p_laneList, // Data about one or more lanes (all lane data is found here) preemptPriorityData := omit, // data about one or more regional preempt or priority zones regional := omit } template (value) Position3D m_position3D( in template (value) Latitude p_latitude, in template (value) Longitude p_longitude ) := { lat := p_latitude, // in 1/10th micro degrees long := p_longitude, // in 1/10th micro degrees elevation := omit, // in 10 cm units regional := omit } template (omit) GenericLane m_laneList( in template (value) LaneID p_laneID, in template (value) LaneAttributes p_laneAttributes, in template (value) NodeListXY p_nodeListXY, in template (omit) ConnectsToList p_connectsToList := omit, in template (omit) ApproachID p_ingressApproach := omit, in template (omit) ApproachID p_egressApproach := omit, in template (omit) AllowedManeuvers p_allowedManeuvers := omit ) := { laneID := p_laneID, // The unique ID number assigned to this lane object name := omit, // often for debug use only but at times used to name ped crossings ingressApproach := p_ingressApproach, // inbound Approach IDs to which this lane belongs egressApproach := p_egressApproach, // outbound Approach IDs to which this lane belongs laneAttributes := p_laneAttributes, // All Attribute information about the basic selected lane type maneuvers := p_allowedManeuvers, // the permitted maneuvers for this lane nodeList := p_nodeListXY, // Lane spatial path information as well as various Attribute information along the node path // Attributes found here are more general and may come and go over the length of the lane. connectsTo := p_connectsToList, // a list of other lanes and their signal group IDs each connecting lane and its signal group ID is given, therefore this element provides the information formerly in "signalGroups" in prior editions. overlays := omit, regional := omit } template (omit) RoadSegment m_roadSegment( in template (value) RoadSegmentReferenceID p_id, in template (value) MsgCount p_revision, in template (value) Position3D p_position3D, in template (value) RoadLaneSetList p_roadLaneSet, in template (omit) SpeedLimitList p_speedLimits := omit, in template (omit) LaneWidth p_laneWidth := 2000 ) := { name := omit, id := p_id, // a globally unique value for the segment revision := p_revision, // Required default values about the descriptions to follow refPoint := p_position3D, // the reference from which subsequent data points are offset until a new point is used. laneWidth := p_laneWidth, // Reference width used by all subsequent lanes unless a new width is given speedLimits := p_speedLimits, // Reference regulatory speed limits used by all subsequent lanes unless a new speed is given roadLaneSet := p_roadLaneSet, regional := omit } template (value) RegulatorySpeedLimit m_speedLimits( in template (value) SpeedLimitType p_speedLimitType, in template (value) Velocity p_velocity ) := { type_ := p_speedLimitType, // The type of regulatory speed which follows speed := p_velocity // The speed in units of 0.02 m/s } } // End of group mapemTemplatesSend group mapemTemplatesRecv { /** * @desc Receive template for MAPEM Message */ template (present) MapData mw_defaultMapem := { timeStamp := *, msgIssueRevision := ?, layerType := omit, layerID := omit, intersections := *, roadSegments := omit, dataParameters := omit, restrictionList := *, regional := * } /** * @desc Receive template for MAPEM Message with no LayerType */ template (present) MapData mw_mapem( template (present) IntersectionGeometryList p_intersections := ?, template RoadSegmentList p_roadSegments := * ) modifies mw_defaultMapem := { layerType := omit, layerID := omit, intersections := p_intersections, roadSegments := p_roadSegments } template (present) IntersectionReferenceID mw_intersectionReferenceID( template (present) IntersectionID p_intersectionID := ?, template RoadRegulatorID p_roadRegulatorID := * ) := { region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs id := p_intersectionID // a unique mapping to the intersection in question within the above region of use } template (present) IntersectionGeometry mw_intersectionGeometry( template (present) IntersectionReferenceID p_id := ?, template (present) MsgCount p_revision := ?, template (present) Position3D p_position3D := ?, template (present) LaneList p_laneList := ? ) := { name := *, //For debug use only id := p_id, // A globally unique value set, consisting of a regionID and intersection ID assignment revision := p_revision, // Required default values about lane descriptions follow refPoint := p_position3D, // The reference from which subsequent data points are offset until a new point is used. laneWidth := *, // Reference width used by all subsequent lanes unless a new width is given speedLimits := *, laneSet := p_laneList, // Data about one or more lanes (all lane data is found here) preemptPriorityData := omit, // data about one or more regional preempt or priority zones regional := * } template (present) Position3D mw_position3D( template (present) Latitude p_latitude := ?, template (present) Longitude p_longitude := ?, template Position3D.regional p_regional := * ) := { lat := p_latitude, // in 1/10th micro degrees long := p_longitude, // in 1/10th micro degrees elevation := omit, // in 10 cm units regional := p_regional } template (present) RoadSegment mw_roadSegment( template (present) RoadSegmentReferenceID p_id := ?, template (present) MsgCount p_revision := ?, template (present) Position3D p_position3D := ?, template (present) RoadLaneSetList p_roadLaneSet := ? ) := { name := *, id := p_id, // a globally unique value for the segment revision := p_revision, // Required default values about the descriptions to follow refPoint := p_position3D, // the reference from which subsequent data points are offset until a new point is used. laneWidth := *, // Reference width used by all subsequent lanes unless a new width is given speedLimits := *, // Reference regulatory speed limits used by all subsequent lanes unless a new speed is given roadLaneSet := p_roadLaneSet, regional := * } template (present) GenericLane mw_roadLane( template (present) LaneID p_laneID := ?, template (present) LaneAttributes p_laneAttributes := ?, template ApproachID p_ingressApproach := *, template ApproachID p_egressApproach := *, template ConnectsToList p_connectsTo := * ) := { laneID := p_laneID, name := *, ingressApproach := p_ingressApproach, egressApproach := p_egressApproach, laneAttributes := p_laneAttributes, maneuvers := omit, nodeList := ?, connectsTo := p_connectsTo, overlays := omit, regional := * } template (present) LaneAttributes mw_laneAttributes := { directionalUse := ?, sharedWith := ?, laneType := ?, regional := * } template (present) LaneAttributes mw_laneAttributes_crosswak( template (present) LaneAttributes_Crosswalk p_crosswalk := ? ) modifies mw_laneAttributes := { laneType := { crosswalk := p_crosswalk } } /** * @desc Receive template for MAPEM Message with no LayerType */ template (present) MapData mw_mapemLayerType( template (present) IntersectionGeometryList p_intersections := ?, template RoadSegmentList p_roadSegments := *, template (present) LayerID p_layerID := ? ) modifies mw_mapem := { layerType := omit, layerID := p_layerID } } // End of group mapemTemplatesRecv template (present) NodeXY mw_nodeXY( template (present) NodeOffsetPointXY p_delta := ?, template (present) NodeAttributeSetXY p_attributes := ? ) := { delta := p_delta, attributes := p_attributes } template (present) NodeAttributeSetXY mw_nodeAttributeSetXY_default := { localNode := *, disabled := *, enabled := *, data := *, dWidth := ?, dElevation := *, regional := * } } // End of group mapemTemplates group spatemTemplates { group spatemTemplatesSend { /** * @desc Send default template for SPAT Message */ template (value) SPAT m_defaultSpatem := { timeStamp := omit, name := omit, intersections := m_intersections, regional := omit } /** * @desc Send template for SPAT Message */ template (omit) SPAT m_spatem( in template (value) IntersectionStateList p_intersections, in template (omit) DescriptiveName p_name := omit ) modifies m_defaultSpatem:= { timeStamp := omit, name := p_name, intersections := p_intersections, regional := omit } template (value) IntersectionStateList m_intersections := { m_intersection }; template (value) IntersectionState m_intersection := { name := omit, // Human readable name for intersection to be used only in debug mode id := m_intersectionReferenceID, // A globally unique value set, consisting of a regionID and // intersection ID assignment provides a unique mapping to the intersection MAP in question which provides complete location and approach/move/lane data revision := PX_INTERSECTIONSTATE_REVISION, status := IntersectionStatusObject_manualControlIsEnabled_, // General status of the controller(s) moy := omit, // Minute of current UTC year used only with messages to be archived timeStamp := omit, // The mSec point in the current UTC minute that this message was constructed enabledLanes := { 1, 2 }, // A list of lanes where the RevocableLane bit has been set which are now active andtherefore part of the current intersection states := m_movements, // Each Movement is given in turn and contains its signal phase state, mapping to the lanes it applies to, and point in time it will end, and it may contain both active and future states maneuverAssistList := omit, // Assist data regional := omit } template (value) IntersectionState m_intersection_regional ( in template (omit) IntersectionState.regional p_regional := omit ) modifies m_intersection := { name := omit, // Human readable name for intersection to be used only in debug mode id := m_intersectionReferenceID, // A globally unique value set, consisting of a regionID and // intersection ID assignment provides a unique mapping to the intersection MAP in question which provides complete location and approach/move/lane data revision := PX_INTERSECTIONSTATE_REVISION, status := IntersectionStatusObject_manualControlIsEnabled_, // General status of the controller(s) moy := omit, // Minute of current UTC year used only with messages to be archived timeStamp := omit, // The mSec point in the current UTC minute that this message was constructed enabledLanes := { 1, 2 }, // A list of lanes where the RevocableLane bit has been set which are now active andtherefore part of the current intersection states := m_movements, // Each Movement is given in turn and contains its signal phase state, mapping to the lanes it applies to, and point in time it will end, and it may contain both active and future states maneuverAssistList := omit, // Assist data regional := p_regional } template (value) IntersectionState m_intersection_maneuverAssistList ( in template (omit) IntersectionState.maneuverAssistList p_maneuverAssistList := omit ) modifies m_intersection := { name := omit, // Human readable name for intersection to be used only in debug mode id := m_intersectionReferenceID, // A globally unique value set, consisting of a regionID and // intersection ID assignment provides a unique mapping to the intersection MAP in question which provides complete location and approach/move/lane data revision := PX_INTERSECTIONSTATE_REVISION, status := IntersectionStatusObject_manualControlIsEnabled_, // General status of the controller(s) moy := omit, // Minute of current UTC year used only with messages to be archived timeStamp := omit, // The mSec point in the current UTC minute that this message was constructed enabledLanes := { 1, 2 }, // A list of lanes where the RevocableLane bit has been set which are now active andtherefore part of the current intersection states := m_movements, // Each Movement is given in turn and contains its signal phase state, mapping to the lanes it applies to, and point in time it will end, and it may contain both active and future states maneuverAssistList := p_maneuverAssistList, // Assist data regional := omit } template (value) MovementList m_movements := { m_movement }; template (omit) MovementState m_movement := { movementName := omit, signalGroup := PX_SIGNAL_GROUP_ID, state_time_speed := m_movementEventList, maneuverAssistList := { m_connectionManeuverAssist(1) }, regional := omit } template (value) MovementEventList m_movementEventList := { m_movementEvent }; template (omit) MovementEvent m_movementEvent( in template (value) MovementPhaseState p_eventState := stop_Then_Proceed, in template (omit) TimeChangeDetails p_timing := omit, in template (omit) MovementEvent.speeds p_speeds := omit ) := { eventState := stop_Then_Proceed, // Consisting of: Phase state (the basic 11 states) and Directional, protected, or permissive state timing := p_timing, // Timing Data in UTC time stamps for event includes start and min/max end times of phase confidence and estimated next occurrence speeds := p_speeds, // Various speed advisories for use by general and specific types of vehicles supporting green-wave and other flow needs regional := omit } template (omit) ConnectionManeuverAssist m_connectionManeuverAssist( in template (value) LaneConnectionID p_connectionID, in template (omit) ZoneLength p_queueLength := omit, in template (omit) ZoneLength p_availableStorageLength := omit, in template (omit) WaitOnStopline p_waitOnStop := omit, in template (omit) PedestrianBicycleDetect p_pedBicycleDetect := omit ) := { connectionID := p_connectionID, queueLength := p_queueLength, availableStorageLength := p_availableStorageLength, waitOnStop := p_waitOnStop, pedBicycleDetect := p_pedBicycleDetect, regional := omit } template (omit) TimeChangeDetails m_itmeChangeDetails( in template (value) TimeMark p_minEndTime, in template (omit) TimeMark p_startTime := omit, in template (omit) TimeMark p_maxEndTime := omit, in template (omit) TimeMark p_likelyTime := omit, in template (omit) TimeIntervalConfidence p_confidence := omit, in template (omit) TimeMark p_nextTime := omit ) := { startTime := p_startTime, // When this phase 1st started minEndTime := p_minEndTime, // Expected shortest end time maxEndTime := p_maxEndTime, // Expected longest end time likelyTime := p_likelyTime, // Best predicted value based on other data confidence := p_confidence, // Applies to above time element only nextTime := p_nextTime // A rough estimate of time when this phase may next occur again used to support various ECO driving power management needs. } template (omit) AdvisorySpeed m_advisorySpeed( in template (value) AdvisorySpeedType p_type, in template (omit) SpeedAdvice p_speed := omit, in template (omit) SpeedConfidenceDSRC p_confidence := omit, in template (omit) ZoneLength p_distance := omit, in template (omit) RestrictionClassID p_class := omit ) := { type_ := p_type, // The type of advisory which this is. speed := p_speed, confidence := p_confidence, // A confidence value for the above speed distance := p_distance, // The distance indicates the region for which the advised speed is recommended, it is specified upstream from the stop bar along the connected egressing lane class := p_class, // The vehicle types to which it applies when absent, the AdvisorySpeed applies to all motor vehicle types regional := omit } } // End of group spatemTemplatesSend group spatemTemplatesRecv { /** * @desc Receive template for SPATEM Message */ template (present) SPAT mw_defaultSpatem := { timeStamp := *, name := *, intersections := ?, regional := * } template (present) SPAT mw_spatemWellFormatted modifies mw_defaultSpatem := { } template (present) SPAT mw_spatem_with_region_id( template (present) SPAT.regional p_regional := ? ) modifies mw_defaultSpatem := { regional := p_regional } template (present) SPAT mw_spatem_intersections( template (present) SPAT.intersections p_intersections := ? ) modifies mw_defaultSpatem := { intersections := p_intersections } template (present) IntersectionState mw_IntersectionState( template (present) IntersectionState.id p_id := ?, template (present) IntersectionState.revision p_revision := ?, template (present) IntersectionState.status p_status := ?, template (present) IntersectionState.states p_states := ? ) := { name := *, id := p_id, revision := p_revision, status := p_status, moy := *, timeStamp := *, enabledLanes := *, states := p_states, maneuverAssistList := *, regional := * } // end mw_IntersectionState template (present) IntersectionState mw_IntersectionState_regional( template (present) IntersectionState.id p_id := ?, template (present) IntersectionState.revision p_revision := ?, template (present) IntersectionState.status p_status := ?, template (present) IntersectionState.states p_states := ?, template (present) IntersectionState.regional p_regional := ? ) modifies mw_IntersectionState := { regional := p_regional } // end mw_IntersectionState template (present) IntersectionState mw_IntersectionState_maneuverAssistList( template (present) IntersectionState.id p_id := ?, template (present) IntersectionState.revision p_revision := ?, template (present) IntersectionState.status p_status := ?, template (present) IntersectionState.states p_states := ?, template (present) IntersectionState.maneuverAssistList p_maneuverAssistList := ? ) modifies mw_IntersectionState := { maneuverAssistList := p_maneuverAssistList } // end mw_IntersectionState template (present) IntersectionState mw_IntersectionState_moyAndTimeStamp( template (present) IntersectionState.id p_id := ?, template (present) IntersectionState.revision p_revision := ?, template (present) IntersectionState.status p_status := ?, template (present) IntersectionState.states p_states := ?, template (present) IntersectionState.moy p_moy := ?, template (present) IntersectionState.timeStamp p_timeStamp := ? ) modifies mw_IntersectionState:= { moy := p_moy, timeStamp := p_timeStamp }// end mw_IntersectionState_moyAndTimeStamp template (present) MovementState mw_movementState ( template (present) MovementState.signalGroup p_signalGroup := ?, template (present) MovementState.state_time_speed p_state_time_speed := ? ):= { movementName := *, //DescriptiveName OPTIONAL, signalGroup := p_signalGroup, //SignalGroupID, state_time_speed := p_state_time_speed, //MovementEventList, maneuverAssistList := *, //ManeuverAssistList OPTIONAL, regional := * //RegionalExtension {{Reg-MovementState}} OPTIONAL } template (present) MovementEvent mw_movementEvent( template (present) MovementPhaseState p_eventState := ?, template TimeChangeDetails p_timing := *, template MovementEvent.speeds p_speeds := * ) := { eventState := p_eventState, // Consisting of: Phase state (the basic 11 states) and Directional, protected, or permissive state timing := p_timing, // Timing Data in UTC time stamps for event includes start and min/max end times of phase confidence and estimated next occurrence speeds := p_speeds, // Various speed advisories for use by general and specific types of vehicles supporting green-wave and other flow needs regional := * } template (present) TimeChangeDetails mw_timeChangeDetails( template (present) TimeMark p_minEndTime := ?, template TimeMark p_startTime := *, template TimeMark p_nextTime := * ) := { startTime := p_startTime, minEndTime := p_minEndTime, maxEndTime := *, likelyTime := *, confidence := *, nextTime := p_nextTime } template (present) ConnectionManeuverAssist mw_connectionManeuverAssist( template (present) LaneConnectionID p_connectionID := ?, template (present) PedestrianBicycleDetect p_pedBicycleDetect := ? ) := { connectionID := p_connectionID, queueLength := *, availableStorageLength := *, waitOnStop := *, pedBicycleDetect := p_pedBicycleDetect, regional := * } template (present) ConnectionManeuverAssist mw_connectionManeuverAssist_queueAndAvailableStorageLength( template (present) LaneConnectionID p_connectionID := ?, template (present) ZoneLength p_queueLength := ?, template (present) ZoneLength p_availableStorageLength := ? ) := { connectionID := p_connectionID, queueLength := p_queueLength, availableStorageLength := p_availableStorageLength, waitOnStop := *, pedBicycleDetect := *, regional := * } template (present) AdvisorySpeed mw_advisorySpeed( in template (present) AdvisorySpeedType p_type, in template SpeedAdvice p_speed := *, in template SpeedConfidenceDSRC p_confidence := *, in template ZoneLength p_distance := *, in template RestrictionClassID p_class := * ) := { type_ := p_type, // The type of advisory which this is. speed := p_speed, confidence := p_confidence, // A confidence value for the above speed distance := p_distance, // The distance indicates the region for which the advised speed is recommended, it is specified upstream from the stop bar along the connected egressing lane class := p_class, // The vehicle types to which it applies when absent, the AdvisorySpeed applies to all motor vehicle types regional := * } } // End of group spatemTemplates } // End of group spatemTemplatesRecv } // End of group mapemSpatemTemplates } // End of module LibItsMapemSpatem_Templates ats_ts103191-3-devel/lib/LibItsMapemSpatem_TypesAndValues.ttcn 0000664 0000000 0000000 00000013354 14553501104 0024242 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF484 / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/MapemSpatem/LibItsMapemSpatem_TypesAndValues.ttcn $ * $Id: LibItsMapemSpatem_TypesAndValues.ttcn 1307 2016-12-13 07:51:14Z garciay $ * @desc Module containing types and values for MAPEM SPATEM * @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 LibItsMapemSpatem_TypesAndValues { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; import from EfcDsrcGeneric language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; group mapSpatConstants { const charstring c_compIut := "IUT"; const charstring c_compMTC := "MTC"; const charstring c_compMap := "PtcMap"; const charstring c_compSpat := "PtcSpat"; } // end group mapSpatConstants group utPrimitives { /** * @desc Upper Tester message to initialize IUT * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ type record UtMapemSpatemInitialize { Oct8 hashedId8 } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester results message of the MAPEM/SPATEM IUT * @member utMapemSpatemInitialize - * @member utMapemSpatemTriggerResult - */ type union UtMapemSpatemResults { boolean utMapemSpatemInitializeResult, boolean utMapemSpatemTriggerResult } with { variant "" } // End of type UtMapemSpatemResults /** * @desc Upper Tester message to request triggering of an event at IUT */ type record UtMapemSpatemTrigger { Event event, IntersectionID intersectionID optional, RegulatorySpeedLimit regulatorySpeedLimit optional/*, Latitude latitude optional*/ } with { variant "FIELDORDER(msb)" } type enumerated Event { mapProfile0 (0), mapProfile1 (1), mapProfile2 (2), spatProfile0 (3), spatProfile1 (4), spatProfile2 (5), spatProfile3 (6), tlmPedestrianDetected (10), stopTLMService (20) } with { variant "FIELDLENGTH(8)" } /** * @desc Upper Tester message to check event/status at IUT */ type record UtMapemEventInd { MAPEM mapeMsg } with { encode (mapeMsg) "LibItsMapemSpatem_asn1" } /** * @desc Upper Tester message to check event/status at IUT */ type record UtSpatemEventInd { SPATEM spateMsg } with { encode (spateMsg) "LibItsMapemSpatem_asn1" } /** * @desc List of Upper Tester messages to check event/status on MAPEM SPATEM IUT */ type record of UtMapemEventInd UtMapemEventIndList; /** * @desc List of Upper Tester messages to check event/status on MAPEM SPATEM IUT */ type record of UtSpatemEventInd UtSpatemEventIndList; } with { encode "UpperTester" variant "" } group ApplPrimitives { type record MapemInd { MAPEM msgIn, UInt64 recvTime, UInt8 gnNextHeader optional, UInt8 gnHeaderType optional, UInt8 gnHeaderSubtype optional, UInt32 gnLifetime optional, UInt8 gnTrafficClass optional, UInt16 btpDestinationPort optional, UInt16 btpInfo optional, Bit24 ssp optional, UInt32 its_aid optional } with { encode (msgIn) "PER" } type record SpatemInd { SPATEM msgIn, UInt64 recvTime, UInt8 gnNextHeader optional, UInt8 gnHeaderType optional, UInt8 gnHeaderSubtype optional, UInt32 gnLifetime optional, UInt8 gnTrafficClass optional, UInt16 btpDestinationPort optional, UInt16 btpInfo optional, Bit24 ssp optional, UInt32 its_aid optional } with { encode (msgIn) "PER" } /** * @desc Appl MAPEM and SPATEM Request Primitive */ type record MapemReq { MAPEM msgOut } with { encode (msgOut) "PER" } type record SpatemReq { SPATEM msgOut } with { encode (msgOut) "PER" } } with { variant "" encode "LibIts_Interface" } // End of group ApplPrimitives } with { encode "LibItsMapemSpatem" } // End of module LibItsMapemSpatem_TypesAndValues ats_ts103191-3-devel/lib/LibItsRtcmem_EncdecDeclarations.ttcn 0000664 0000000 0000000 00000003667 14553501104 0024071 0 ustar 00root root 0000000 0000000 module LibItsRtcmem_EncdecDeclarations { // LibIts import from RTCMEM_PDU_Descriptions language "ASN.1:1997" all; // LibItsRtcmem import from LibItsRtcmem_TypesAndValues all; external function fx_enc_RtcmemReq (RtcmemReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} external function fx_dec_RtcmemReq (inout bitstring b, out RtcmemReq p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_dec_RtcmemInd (inout bitstring b, out RtcmemInd p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_RTCMEM (RTCMEM p) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_RTCMEM (inout bitstring b, out RTCMEM p) return integer with {extension "prototype(sliding) decode(PER)"} external function fx_enc_UtRtcmemInitialize (UtRtcmemInitialize p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_enc_UtRtcmemTrigger (UtRtcmemTrigger p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_enc_UtRtcmemUpdate (UtRtcmemUpdate p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_enc_UtRtcmemTermination (UtRtcmemTermination p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} external function fx_dec_UtRtcmemResults (inout bitstring b, out UtRtcmemResults p) return integer with {extension "prototype(sliding) decode(UpperTester)"} external function fx_dec_UtRtcmemEventInd (inout bitstring b, out UtRtcmemEventInd p) return integer with {extension "prototype(sliding) decode(UpperTester)"} } // End of module LibItsRtcmem_EncdecDeclarations ats_ts103191-3-devel/lib/LibItsRtcmem_Pics.ttcn 0000664 0000000 0000000 00000001452 14553501104 0021243 0 ustar 00root root 0000000 0000000 module LibItsRtcmem_Pics { // LibCommon import from LibCommon_BasicTypesAndValues all; /** * @desc Is the IUT running in secured mode? * @see ETSI TS 103 191-1 Table A.1 */ modulepar boolean PICS_IS_IUT_SECURED := false; /** * @desc Support for RTCMEM generation * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_RTCMEM_GENERATION := true; /** * @desc Support for RTCMEM reception * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_RTCMEM_RECEPTION := true; /** * @desc Does IUT support GeoNetworking short range? * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SHORT_RANGE := true; } // End of module LibItsRtcmem_Pics ats_ts103191-3-devel/lib/LibItsRtcmem_Pixits.ttcn 0000664 0000000 0000000 00000000110 14553501104 0021613 0 ustar 00root root 0000000 0000000 module LibItsRtcmem_Pixits { } // End of module LibItsRtcmem_Pixits ats_ts103191-3-devel/lib/LibItsRtcmem_Templates.ttcn 0000664 0000000 0000000 00000030670 14553501104 0022307 0 ustar 00root root 0000000 0000000 module LibItsRtcmem_Templates { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from RTCMEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; import from LibItsCommon_ASN1_NamedNumbers all; // LibItsRtcmem import from LibItsRtcmem_TypesAndValues all; import from LibItsRtcmem_Pixits all; group primitivesTemplates { /** * @desc Send template for RTCMEM Message (RtcmemPort Primitive) * @param p_rtcmemMsg The RTCMEM Message to be sent */ template (value) RtcmemReq m_rtcmemReq( in template (value) RTCMEM p_rtcmemMsg ) := { msgOut := p_rtcmemMsg } /** * @desc Receive template for RTCMEM Message (RtcmemPort Primitive) * @param p_rtcmemMsg The expected RTCMEM Message */ template (present) RtcmemInd mw_rtcmemInd( template (present) RTCMEM p_rtcmemMsg ) := { msgIn := p_rtcmemMsg, recvTime := ?, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * } /** * @desc Receive template for RTCMEM Message (RtcmemPort Primitive) * @param p_rtcmemMsg The expected RTCMEM 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 (present) RtcmemInd mw_rtcmemIndWithGnParameters( template (present) RTCMEM p_rtcmemMsg, 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_rtcmemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for RTCMEM Message (RtcmemPort Primitive) * @param p_rtcmemMsg Expected RTCMEM 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 (present) RtcmemInd mw_rtcmemIndWithBtpParameters( template (present) RTCMEM p_rtcmemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_rtcmemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for RTCMEM Message (RtcmemPort Primitive) * @param p_rtcmemMsg The expected RTCMEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) RtcmemInd mw_rtcmemIndWithSecurityParameters( template (present) RTCMEM p_rtcmemMsg, template (present) Bit24 p_ssp := ?, template (present) UInt32 p_its_aid := ? ) modifies mw_rtcmemInd := { ssp := p_ssp, its_aid := p_its_aid } } group utPrimitives { /** * @desc Send template for Upper Tester event initialization * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ template (value) UtRtcmemInitialize m_rtcmemInitialize( in HashedId8 p_hashedId8 := '0000000000000000'O ) := { hashedId8 := p_hashedId8 } /** * @desc Send template for Upper Tester Trigger event */ template (omit) UtRtcmemTrigger m_utTriggerEvent( in MsgCount p_msgCnt, in RTCM_Revision p_rev := rtcmRev3, in RTCMmessageList p_msgs, in template (omit) MinuteOfTheYear p_timeStamp := omit, in template (omit) FullPositionVector p_anchorPoint := omit, in template (omit) RTCMheader p_rtcmHeader := omit ) := { msgCnt := p_msgCnt, rev := p_rev, msgs := p_msgs, timeStamp := p_timeStamp, anchorPoint := p_anchorPoint, rtcmHeader := p_rtcmHeader } /** * @desc Send template for Upper Tester Trigger event */ template (omit) UtRtcmemTermination m_utTriggerTermination( in MsgCount p_msgCnt ) := { msgCnt := p_msgCnt } } group rtcmemPduTemplates { /** * @desc Send template for RTCMEM PDU * @param p_map The RTCMEM Message */ template (value) RTCMEM m_rtcmemPdu( in template (value) RTCMcorrections p_rtcmc ) := { header := m_itsPduHeader( - , - ,LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_rtcmem_), rtcmc := p_rtcmc } /** * @desc Receive template for RTCMEM PDU * @param p_rtcmc The RTCMEM Message */ template (present) RTCMEM mw_rtcmemPdu( template (present) RTCMcorrections p_rtcmc := ? ) := { header := mw_itsPduHeaderRtcmem, rtcmc := p_rtcmc } } // End of group rtcmemPduTemplates group headerTemplates { /** * @desc Default send template for ITS PDU header * @param p_stationID The source station ID (Default: test system station id) * @param p_protocolVersion The protocol version (Default: current RTCMEM protocol version) * @param p_messageID The message Id (Default: RTCMEM id) */ template (value) ItsPduHeader m_itsPduHeader( in template (value) StationID p_stationID := f_getTsStationId(), in template (value) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, in template (value) ItsPduHeader.messageID p_messageID ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current RTCMEM protocol version) * @param p_messageID The expected message id (Default: RTCMEM message id) */ template ItsPduHeader mw_itsPduHeader( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := ? ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current RTCMEM protocol version) * @param p_messageID The expected message id (Default: SREM id) */ template ItsPduHeader mw_itsPduHeaderRtcmem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_rtcmem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for the station id */ template (present) StationID mw_anyStationId := ?; } // End of group headerTemplates group rtcmemTemplatesSend { /** * @desc Receive template for RTCMEM Message */ template (value) RTCMcorrections m_defaultRtcmem( in MsgCount p_msgCnt, in RTCM_Revision p_rev := rtcmRev3, in RTCMmessageList p_msgs, in template (omit) MinuteOfTheYear p_timeStamp := omit, in template (omit) FullPositionVector p_anchorPoint := omit, in template (omit) RTCMheader p_rtcmHeader := omit ) := { msgCnt := p_msgCnt, rev := p_rev, timeStamp := p_timeStamp, anchorPoint := p_anchorPoint, rtcmHeader := p_rtcmHeader, msgs := p_msgs, regional := omit } // End of template m_defaultRtcmem } // End of group rtcmemTemplatesSend group rtcmemTemplatesRecv { /** * @desc Receive template for RTCMEM Message */ template (present) RTCMcorrections mw_defaultRtcmem := { msgCnt := ?, rev := ?, timeStamp := *, anchorPoint := *, rtcmHeader := *, msgs := ?, regional := * } } // End of group rtcmemTemplatesRecv } // End of module LibItsRtcmem_Templates ats_ts103191-3-devel/lib/LibItsRtcmem_TypesAndValues.ttcn 0000664 0000000 0000000 00000007424 14553501104 0023261 0 ustar 00root root 0000000 0000000 module LibItsRtcmem_TypesAndValues { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from RTCMEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; group utPrimitives { /** * @desc Upper Tester message to initialize IUT * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ type record UtRtcmemInitialize { Oct8 hashedId8 } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester results message of the Rtcmem/Ssem IUT * @member utRtcmemInitialize - * @member utRtcmemTriggerResult - * @member utRtcmemUpdateResult - * @member utRtcmemTerminationResult - */ type union UtRtcmemResults { boolean utRtcmemInitializeResult, boolean utRtcmemTriggerResult, boolean utRtcmemUpdateResult, boolean utRtcmemTerminationResult } with { variant "" } // End of type UtRtcmemResults /** * @desc Upper Tester message to request triggering of an event at IUT */ type record UtRtcmemTrigger { MsgCount msgCnt, RTCM_Revision rev, RTCMmessageList msgs, MinuteOfTheYear timeStamp optional, FullPositionVector anchorPoint optional, RTCMheader rtcmHeader optional } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to request updating of an event at IUT */ type record UtRtcmemUpdate { RTCMmessageList msgs, MinuteOfTheYear timeStamp optional, FullPositionVector anchorPoint optional, RTCMheader rtcmHeader optional } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to request termination of an event at IUT */ type record UtRtcmemTermination { MsgCount msgCnt } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to check event/status at IUT */ type record UtRtcmemEventInd { RTCMEM rtcmemMsg } with { encode (rtcmemMsg) "PER" } /** * @desc List of Upper Tester messages to check event/status on RTCMEM IUT */ type record of UtRtcmemEventInd UtRtcmemEventIndList; } with { encode "UpperTester" variant "" } group ApplPrimitives { type record RtcmemInd { RTCMEM msgIn, UInt64 recvTime, UInt8 gnNextHeader optional, UInt8 gnHeaderType optional, UInt8 gnHeaderSubtype optional, UInt32 gnLifetime optional, UInt8 gnTrafficClass optional, UInt16 btpDestinationPort optional, UInt16 btpInfo optional, Bit24 ssp optional, UInt32 its_aid optional } with { encode (msgIn) "PER" } type record of RtcmemInd RtcmemInds; /** * @desc Appl SREM and SSEM Request Primitive */ type record RtcmemReq { RTCMEM msgOut } with { encode (msgOut) "PER" } } with { variant "" encode "LibIts_Interface" } // End of group ApplPrimitives } with { encode "LibItsRtcmem" } // End of module LibItsRtcmem_TypesAndValues ats_ts103191-3-devel/lib/LibItsSremSsem_EncdecDeclarations.ttcn 0000664 0000000 0000000 00000005052 14553501104 0024366 0 ustar 00root root 0000000 0000000 module LibItsSremSsem_EncdecDeclarations { // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; // LibItsSremSsem import from LibItsSremSsem_TypesAndValues all; external function fx_enc_SremReq (SremReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} external function fx_dec_SremReq (inout bitstring b, out SremReq p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_SremInd (SremInd p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} external function fx_dec_SremInd (inout bitstring b, out SremInd p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_SsemReq (SsemReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} external function fx_dec_SsemReq (inout bitstring b, out SsemReq p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_SsemInd (SsemInd p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} external function fx_dec_SsemInd (inout bitstring b, out SsemInd p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_SREM (SREM p) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_SREM (inout bitstring b, out SREM p) return integer with {extension "prototype(sliding) decode(PER)"} external function fx_enc_SSEM (SSEM p) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_SSEM (inout bitstring b, out SSEM p) return integer with {extension "prototype(sliding) decode(PER)"} /*external function fx_enc_SRM (SignalRequestMessage p) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_SRM (inout bitstring b, out SignalRequestMessage p) return integer with {extension "prototype(sliding) decode(PER)"} external function fx_enc_SSM (SignalStatusMessage p) return bitstring with {extension "prototype(convert) encode(PER)"} external function fx_dec_SSM (inout bitstring b, out SignalStatusMessage p) return integer with {extension "prototype(sliding) decode(PER)"}*/ } ats_ts103191-3-devel/lib/LibItsSremSsem_Pics.ttcn 0000664 0000000 0000000 00000005466 14553501104 0021563 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/SremSsem/LibItsSremSsem_Pics.ttcn $ * $Id: LibItsSremSsem_Pics.ttcn 1312 2016-12-14 09:21:45Z garciay $ * @desc SREM SSEM PICS * @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 LibItsSremSsem_Pics { // LibCommon import from LibCommon_BasicTypesAndValues all; /** * @desc Is the IUT running in secured mode? * @see ETSI TS 103 191-1 Table A.1 */ modulepar boolean PICS_IS_IUT_SECURED := false; /** * @desc Support for SREM generation * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SREM_GENERATION := true; /** * @desc Support for SREM generation * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SREM_TRANSMISSION_RATE := true; /** * @desc Support for SREM cancelation * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SREM_CANCELATION := true; /** * @desc Support for SREM reception * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SREM_RECEPTION := true; /** * @desc Support for SSEM generation * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SSEM_GENERATION := true; /** * @desc Support for SSEM reception * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SSEM_RECEPTION := true; /** * @desc Support for Short Range communication * @see ETSI TS 103 191-1 Table A.5 */ modulepar boolean PICS_SHORT_RANGE := true; modulepar float PICS_T_GENSREMMIN := 0.5; /** * @desc Support for public transport vehicle * @see ETSI TS 103 191-1 Table TODO */ modulepar boolean PICS_PUBLIC_TRANSPORT := true; /** * @desc Support for TODO * @see ETSI TS 103 191-1 Table TODO */ modulepar boolean PICS_SREM_HAS_TIMING := true; /** * @desc Support for TODO * @see ETSI TS 103 191-1 Table TODO */ modulepar boolean PICS_SSEM_TRATEMENT_DELAY := true; modulepar float PICS_T_DELAY_GENSSEMMIN := 0.1; /** * @desc Support for TODO * @see ETSI TS 103 191-1 Table TODO */ modulepar boolean PICS_SSEM_TRANSMISSION_RATE := true; modulepar float PICS_T_RATE_GENSSEMMIN := 0.1; modulepar float PICS_T_RATE_GENSSEMMAX := 2.0; } // end LibItsSremSsem_Pics ats_ts103191-3-devel/lib/LibItsSremSsem_Pixits.ttcn 0000664 0000000 0000000 00000004162 14553501104 0022135 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/SremSsem/LibItsSremSsem_Pixits.ttcn $ * $Id: LibItsSremSsem_Pixits.ttcn 1315 2016-12-15 13:25:41Z garciay $ * @desc MAPEM SPATEM PIXIT * @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 LibItsSremSsem_Pixits { // LibCommon import from LibCommon_DataStrings all; import from LibCommon_BasicTypesAndValues all; // LibIts import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; import from REGION language "ASN.1:1997" all; // LibItsSremSsem import from LibItsSremSsem_TypesAndValues all; /** * @desc MsgCount for SREM sending * @see ETSI TS 103 191-3 Table B.9 */ modulepar BasicVehicleRole PX_BASICVEHICLEROLE := basicVehicle; /** * @desc Used by tester in SREM trigger request * @see ETSI TS 103 191-3 Table B.9 */ modulepar RequestImportanceLevel PX_REQUESTIMPORTANCELEVEL := requestImportanceLevel3; modulepar IntersectionID PX_INTERSECTION_ID := 123; /** * @desc Used by tester in SREM trigger request * @see ETSI TS 103 191-3 Table B.9 */ modulepar DSecond PX_SECOND := 0; modulepar MsgCount PX_SEQUENCE_NUMBER := 10; modulepar RequestID PX_REQUEST_ID := 5; /** * @desc Used in SREM and SSEM sent by tester * @see ETSI TS 103 191-3 Table B.9 */ modulepar IntersectionReferenceID PX_STATUS := { region := omit, id := 0 }; modulepar charstring PX_SREM_CERTIFICATE_X := "CERT_IUT_SREM_SSP_01"; modulepar octetstring PX_SREM_CERTIFICATE_X_SSP := '024000'O; modulepar BasicVehicleRole PX_SREM_CERTIFICATE_X_ROLE := publicTransport; } // end LibItsSremSsem_Pixits ats_ts103191-3-devel/lib/LibItsSremSsem_Templates.ttcn 0000664 0000000 0000000 00000115266 14553501104 0022623 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn $ * $Id: LibItsSremSsem_Templates.ttcn 1312 2016-12-14 09:21:45Z garciay $ * @desc Module containing base template definitions for SREM SSEM * @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 LibItsSremSsem_Templates { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; import from LibItsCommon_ASN1_NamedNumbers all; // LibItsSremSsem import from LibItsSremSsem_TypesAndValues all; import from LibItsSremSsem_Pixits all; group primitivesTemplates { /** * @desc Send template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The SREM Message to be sent */ template (value) SremReq m_sremReq( in template (value) SREM p_sremMsg ) := { msgOut := p_sremMsg } /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The expected SREM Message */ template (present) SremInd mw_sremInd( template (present) SREM p_sremMsg ) := { msgIn := p_sremMsg, recvTime := ?, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * } /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The expected SREM 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 (present) SremInd mw_sremIndWithGnParameters( template (present) SREM p_sremMsg, 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_sremInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg Expected SREM 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 (present) SremInd mw_sremIndWithBtpParameters( template (present) SREM p_sremMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_sremInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for SREM Message (SremSsemPort Primitive) * @param p_sremMsg The expected SREM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) SremInd mw_sremIndWithSecurityParameters( template (present) SREM p_sremMsg, template (present) Bit24 p_ssp := ?, template (present) UInt32 p_its_aid := ? ) modifies mw_sremInd := { ssp := p_ssp, its_aid := p_its_aid } /** * @desc Send template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The SSEM Message to be sent */ template (value) SsemReq m_ssemReq( in template (value) SSEM p_ssemMsg ) := { msgOut := p_ssemMsg } /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The expected SSEM Message */ template (present) SsemInd mw_ssemInd( template (present) SSEM p_ssemMsg := ? ) := { msgIn := p_ssemMsg, recvTime := ?, gnNextHeader := *, gnHeaderType := *, gnHeaderSubtype := *, gnLifetime := *, gnTrafficClass := *, btpDestinationPort := *, btpInfo := *, ssp := *, its_aid := * }; /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The expected SSEM 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 (present) SsemInd mw_ssemIndWithGnParameters( template (present) SSEM p_ssemMsg, 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_ssemInd := { gnNextHeader := p_gnNextHeader, gnHeaderType := p_gnHeaderType, gnHeaderSubtype := p_gnHeaderSubtype, gnLifetime := p_gnLifetime, gnTrafficClass := p_gnTrafficClass } /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg Expected SREM 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(present) SsemInd mw_ssemIndWithBtpParameters( template (present) SSEM p_ssemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * ) modifies mw_ssemInd := { btpDestinationPort := p_btpDestinationPort, btpInfo := p_btpInfo }; /** * @desc Receive template for SSEM Message (SremSsemPort Primitive) * @param p_ssemMsg The expected SSEM Message * @param p_ssp SSP value * @param p_its_aid ITS-AID value */ template (present) SsemInd mw_ssemIndWithSecurityParameters( template (present) SSEM p_ssemMsg, template (present) Bit24 p_ssp := ?, template (present) UInt32 p_its_aid := ? ) modifies mw_ssemInd := { ssp := p_ssp, its_aid := p_its_aid } } group utPrimitives { /** * @desc Send template for Upper Tester event initialization * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ template (value) UtSremInitialize m_sremSsemInitialize( in HashedId8 p_hashedId8 := '0000000000000000'O ) := { hashedId8 := p_hashedId8 } /** * @desc Send template for Upper Tester Trigger event */ template (value) UtSremTrigger m_utTriggerEvent( in template (value) BasicVehicleRole p_basicVehicleRole, in template (value) RequestImportanceLevel p_requestImportanceLevel, in template (value) IntersectionID p_intersectionId ) := { basicVehicleRole := p_basicVehicleRole, requestImportanceLevel := p_requestImportanceLevel, intersectionId := p_intersectionId } template (value) UtSremUpdate m_utUpdateEvent( in template (value) RequestID p_requestID, in template (value) BasicVehicleRole p_basicVehicleRole, in template (value) RequestImportanceLevel p_requestImportanceLevel ) := { requestID := p_requestID, basicVehicleRole := p_basicVehicleRole, requestImportanceLevel := p_requestImportanceLevel } template (value) UtSremCancelation m_UtSremCancelationEvent( in template (value) RequestID p_requestID ) := { requestID := p_requestID } } group sremSsemPduTemplates { /** * @desc Send template for SREM PDU * @param p_map The SREM Message */ template (value) SREM m_sremPdu( in template (value) SignalRequestMessage p_srm ) := { header := m_itsPduHeader( - , - ,LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_srem_ ), srm := p_srm } /** * @desc Receive template for SREM PDU * @param p_map The SREM Message */ template (present) SREM mw_sremPdu( template (present) SignalRequestMessage p_srm := ? ) := { header := mw_itsPduHeaderSrem, srm := p_srm } /** * @desc Send template for SSEM PDU * @param p_spat The SSEM Message */ template (value) SSEM m_ssemPdu( in template (value) SignalStatusMessage p_ssm ) := { header := m_itsPduHeader( - , - , LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ssem_), ssm := p_ssm } /** * @desc Receive template for SSEM PDU * @param p_spat The SSEM Message */ template (present) SSEM mw_ssemPdu( template (present) SignalStatusMessage p_ssm := ? ) := { header := mw_itsPduHeaderSsem, ssm := p_ssm } } // End of group sremSsemPduTemplates group headerTemplates { /** * @desc Default send template for ITS PDU header * @param p_stationID The source station ID (Default: test system station id) * @param p_protocolVersion The protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The message Id (Default: SREM SSEM id) */ template (value) ItsPduHeader m_itsPduHeader( in template (value) StationID p_stationID := f_getTsStationId(), in template (value) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, in template (value) ItsPduHeader.messageID p_messageID ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The expected message id (Default: SREM SSEM message id) */ template ItsPduHeader mw_itsPduHeader( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := ? ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The expected message id (Default: SREM id) */ template ItsPduHeader mw_itsPduHeaderSrem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_srem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for ITS PDU header * @param p_stationID The expected station id (Default: any) * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) * @param p_messageID The expected message id (Default: SSEM id) */ template (present) ItsPduHeader mw_itsPduHeaderSsem( template (present) StationID p_stationID := ?, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ssem_ ) := { protocolVersion := p_protocolVersion, messageID := p_messageID, stationID := p_stationID } /** * @desc Default receive template for the station id */ template (present) StationID mw_anyStationId := ?; } // End of group headerTemplates group sremSsemTemplates { template (omit) IntersectionReferenceID m_intersectionReferenceID( in template (value) IntersectionID p_intersectionID := 0, in template (omit) RoadRegulatorID p_roadRegulatorID := omit ) := { region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs id := p_intersectionID // a unique mapping to the intersection in question within the above region of use } template IntersectionReferenceID mw_intersectionReferenceID( template (present) IntersectionID p_intersectionID := ?, template RoadRegulatorID p_roadRegulatorID := * ) := { region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs id := p_intersectionID // a unique mapping to the intersection in question within the above region of use } group sremTemplates { group sremTemplatesSend { /** * @desc Send template for SREM Message */ template (value) SignalRequestMessage m_defaultSrem := { timeStamp := omit, second := PX_SECOND, sequenceNumber := PX_SEQUENCE_NUMBER, requests := { valueof( m_signalRequestPackage( valueof( m_signalRequest( m_intersectionReferenceID, PX_REQUEST_ID, priorityRequestTypeReserved, { lane := 1 } )))) }, requestor := valueof(m_requestorDescription(m_vehicleID(f_getIutStationId()))), regional := omit } /** * @desc Send template for SREM Message */ template (omit) SignalRequestMessage m_srem( in template (value) RequestorDescription p_requestorDescription, in template (omit) SignalRequestList p_requests := omit ) modifies m_defaultSrem := { requests := p_requests, requestor := p_requestorDescription } template (value) SignalRequestPackage m_signalRequestPackage( in template (value) SignalRequest p_request ) := { request := p_request, minute := omit, second := omit, duration := omit, regional := omit } template (omit) SignalRequest m_signalRequest( in template (value) IntersectionReferenceID p_id, in template (value) RequestID p_requestID, in template (value) PriorityRequestType p_requestType, in template (value) IntersectionAccessPoint p_inBoundLane, in template (omit) IntersectionAccessPoint p_outBoundLane := omit ) := { id := p_id, requestID := p_requestID, requestType := p_requestType, inBoundLane := p_inBoundLane, outBoundLane := p_outBoundLane, regional := omit } template (omit) RequestorDescription m_requestorDescription( in template (value) VehicleID p_id, in template (omit) RequestorType p_type := omit, in template (omit) RequestorPositionVector p_position := omit, in template (omit) TransitVehicleStatus p_transitStatus := omit, in template (omit) TransitVehicleOccupancy p_transitOccupancy := omit ) := { id := p_id, // The ID used in the BSM or CAM of the requestor type_ := p_type, // Information regarding all type and class data about the requesting vehicle position := p_position, // The location of the requesting vehicle name := omit, // A human readable name for debugging use routeName := omit, // A string for transit operations use transitStatus := p_transitStatus, // current vehicle state (loading, etc.) transitOccupancy := p_transitOccupancy, // current vehicle occupancy transitSchedule := omit, // current vehicle schedule adherence regional := omit } template (value) VehicleID m_vehicleID( in template (value) StationID p_stationID ) := { stationID := p_stationID } template (omit) RequestorType m_requestorType( in template (value) BasicVehicleRole p_role, in template (omit) RequestSubRole p_subrole := omit, in template (omit) RequestImportanceLevel p_request := omit ) := { role := p_role, // Basic role of this user at this time subrole := p_subrole, // A local list with role based items request := p_request, // A local list with request items iso3883 := omit, hpmsType := omit, // HPMS classification types regional := omit } template (value) RequestorPositionVector m_requestor_position( in template (value) Position3D p_position ) := { position := p_position, heading := omit, speed := omit } // End of template m_requestor_position template (value) Position3D m_position3D( in template (value) Latitude p_latitude, in template (value) Longitude p_longitude ) := { lat := p_latitude, // in 1/10th micro degrees long := p_longitude, // in 1/10th micro degrees elevation := omit, // in 10 cm units regional := omit } } // End of group sremTemplatesSend group sremTemplatesRecv { /** * @desc Receive template for SREM Message */ template (present) SignalRequestMessage mw_defaultSrem := { timeStamp := *, second := ?, sequenceNumber := *, requests := *, requestor := ?, regional := * } // End of template mw_defaultSrem /** * @desc Receive template for SREM Message with no LayerType */ template (present) SignalRequestMessage mw_sremWellFormatted( template (present) RequestorDescription p_requestor := ?, template (present) SignalRequestList p_requests := ?, template (present) MsgCount p_sequenceNumber := ?, template (present) DSecond p_second := ?, template MinuteOfTheYear p_timeStamp := * ) modifies mw_defaultSrem := { timeStamp := p_timeStamp, second := p_second, sequenceNumber := p_sequenceNumber, requests := p_requests, requestor := p_requestor } // End of template mw_sremWellFormatted template (present) SignalRequestPackage mw_signalRequestPackage( template (present) SignalRequest p_request := ? ) := { request := p_request, minute := *, second := *, duration := *, regional := * } template SignalRequest mw_signalRequest( template (present) IntersectionReferenceID p_id := ?, template (present) RequestID p_requestID := ?, template (present) PriorityRequestType p_requestType := priorityRequest, template (present) IntersectionAccessPoint p_inBoundLane := ?, template IntersectionAccessPoint p_outBoundLane := * ) := { id := p_id, requestID := p_requestID, requestType := p_requestType, inBoundLane := p_inBoundLane, outBoundLane := p_outBoundLane, regional := * } template (present) RequestorDescription mw_requestorDescription( template (present) VehicleID p_id := ?, template RequestorType p_type := *, template RequestorPositionVector p_position := *, template TransitVehicleStatus p_transitStatus := *, template TransitVehicleOccupancy p_transitOccupancy := *, template DeltaTime p_transitSchedule := * ) := { id := p_id, // The ID used in the BSM or CAM of the requestor type_ := p_type, // Information regarding all type and class data about the requesting vehicle position := p_position, // The location of the requesting vehicle name := *, // A human readable name for debugging use routeName := *, // A string for transit operations use transitStatus := p_transitStatus, // current vehicle state (loading, etc.) transitOccupancy := p_transitOccupancy, // current vehicle occupancy transitSchedule := p_transitSchedule, // current vehicle schedule adherence regional := * } // End of template mw_requestorDescription template (present) RequestorPositionVector mw_requestor_position( template (present) Position3D p_position := ? ) := { position := p_position, heading := *, speed := * } // End of template mw_requestor_position template RequestorType mw_requestorType( template (present) BasicVehicleRole p_role := ?, template RequestSubRole p_subrole := *, template RequestImportanceLevel p_request := * ) := { role := p_role, // Basic role of this user at this time subrole := p_subrole, // A local list with role based items request := p_request, // A local list with request items iso3883 := *, hpmsType := *, // HPMS classification types regional := * } // End of template mw_requestorType } // End of group sremTemplatesRecv } // End of group sremTemplates group ssemTemplates { /** * @desc Send template for SignalStatusMessage Message */ template (value) SignalStatusMessage m_defaultSsem := { timeStamp := omit, second := PX_SECOND, sequenceNumber := omit, status := { m_signalStatus( PX_SEQUENCE_NUMBER, m_requestorDescription( m_vehicleID(f_getIutStationId() )), m_signalRequest( m_intersectionReferenceID, PX_REQUEST_ID, priorityRequestTypeReserved, { lane := 1 } ) ) }, regional := omit } /** * @desc Send template for SignalStatusMessage Message */ template (value) SignalStatusMessage m_ssem( in SignalRequestMessage p_signalRequestMessage ) modifies m_defaultSsem := { second := p_signalRequestMessage.second, status := { m_signalStatus(p_signalRequestMessage.sequenceNumber, p_signalRequestMessage.requestor, p_signalRequestMessage.requests[0].request) }, regional := omit } /** * @desc Receive template for SSEM Message */ template (present) SignalStatusMessage mw_ssemWellFormatted( template (present) MsgCount p_sequenceNumber := ?, template (present) SignalStatus p_status := ? ) := { timeStamp := *, second := ?, sequenceNumber := p_sequenceNumber, status := { p_status }, regional := * } template (value) SignalStatus m_signalStatus( in template (value) MsgCount p_sequenceNumber, in template (value) RequestorDescription p_requestor, in template (value) SignalRequest p_signalRequest ) := { sequenceNumber := p_sequenceNumber, id := p_signalRequest.id, sigStatus := { m_signalStatusPackage(m_requester(p_requestor, p_signalRequest.requestID, p_sequenceNumber)) }, regional := omit } template (present) SignalStatus mw_signalStatus( template (present) MsgCount p_sequenceNumber := ?, template (present) IntersectionReferenceID p_id := ?, template (present) SignalStatusPackage p_sigStatus := ? ) := { sequenceNumber := p_sequenceNumber, id := p_id, sigStatus := { p_sigStatus }, regional := * } template (value) SignalRequesterInfo m_requester( in template (value) RequestorDescription p_requestor, in template (value) RequestID p_request, in template (value) MsgCount p_sequenceNumber ) := { id := p_requestor.id, request := p_request, sequenceNumber := p_sequenceNumber, role := omit,//p_requestor.type_.role, typeData := p_requestor.type_ } template SignalRequesterInfo mw_requester( template (present) VehicleID p_id := ?, template (present) RequestID p_request := ?, template (present) MsgCount p_sequenceNumber := ?, template BasicVehicleRole role := * ) := { id := p_id, request := p_request, sequenceNumber := p_sequenceNumber, role := *, typeData := * } template (value) SignalStatusPackage m_signalStatusPackage( in template (value) SignalRequesterInfo p_requester ) := { requester := p_requester, inboundOn := { approach := 0 }, outboundOn := omit, minute := omit, second := omit, duration := omit, status := processing, regional := omit } template SignalStatusPackage mw_signalStatusPackage( template (present) SignalRequesterInfo p_requester := ? ) := { requester := p_requester, inboundOn := ?, outboundOn := *, minute := *, second := *, duration := *, status := ?, regional := * } } // End of group ssemTemplates } // End of group sremSsemTemplates } // End of module LibItsSremSsem_Templates ats_ts103191-3-devel/lib/LibItsSremSsem_TypesAndValues.ttcn 0000664 0000000 0000000 00000013120 14553501104 0023556 0 ustar 00root root 0000000 0000000 /** * @author ETSI STF517 / STF581 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/SremSsem/LibItsSremSsem_TypesAndValues.ttcn $ * $Id: LibItsSremSsem_TypesAndValues.ttcn 1307 2016-12-13 07:51:14Z garciay $ * @desc Module containing types and values for SREM SSEM * @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 LibItsSremSsem_TypesAndValues { // LibCommon import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from SREM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; group utPrimitives { /** * @desc Upper Tester message to initialize IUT * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use */ type record UtSremInitialize { Oct8 hashedId8 } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester results message of the Srem/Ssem IUT * @member utSremInitialize * @member utSremTriggerResult * @member utSremUpdateResult * @member utSremCancelationResult */ type union UtSremResults { boolean utSremInitializeResult, boolean utSremTriggerResult, boolean utSremUpdateResult, boolean utSremCancelationResult } with { variant "" } // End of type UtSremResults /** * @desc Upper Tester message to request triggering of an event at IUT */ type record UtSremTrigger { BasicVehicleRole basicVehicleRole, RequestImportanceLevel requestImportanceLevel, IntersectionID intersectionId } with { variant "FIELDORDER(msb)" } type record of UtSremTrigger UtSremTriggerList; /** * @desc Upper Tester message to request updating of an event at IUT */ type record UtSremUpdate { RequestID requestID, BasicVehicleRole basicVehicleRole, RequestImportanceLevel requestImportanceLevel } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to request cancelation of an event at IUT */ type record UtSremCancelation { RequestID requestID } with { variant "FIELDORDER(msb)" } /** * @desc Upper Tester message to check event/status at IUT */ type record UtSremEventInd { SREM sreMsg } with { encode (sreMsg) "PER" } /** * @desc Upper Tester message to check event/status at IUT */ type record UtSsemEventInd { SSEM sseMsg } with { encode (sseMsg) "PER" } /** * @desc List of Upper Tester messages to check event/status on SREM IUT */ type record of UtSremEventInd UtSremEventIndList; /** * @desc List of Upper Tester messages to check event/status on SSEM IUT */ type record of UtSsemEventInd UtSsemEventIndList; type record of RequestID RequestIDList; } with { encode "UpperTester" variant "" } group ApplPrimitives { type record SremInd { SREM msgIn, UInt64 recvTime, UInt8 gnNextHeader optional, UInt8 gnHeaderType optional, UInt8 gnHeaderSubtype optional, UInt32 gnLifetime optional, UInt8 gnTrafficClass optional, UInt16 btpDestinationPort optional, UInt16 btpInfo optional, Bit24 ssp optional, UInt32 its_aid optional } with { encode (msgIn) "LibItsSremSsem_asn1" } type record of SremInd SremInds; type record SsemInd { SSEM msgIn, UInt64 recvTime, UInt8 gnNextHeader optional, UInt8 gnHeaderType optional, UInt8 gnHeaderSubtype optional, UInt32 gnLifetime optional, UInt8 gnTrafficClass optional, UInt16 btpDestinationPort optional, UInt16 btpInfo optional, Bit24 ssp optional, UInt32 its_aid optional } with { encode (msgIn) "PER" } /** * @desc Appl SREM and SSEM Request Primitive */ type record SremReq { SREM msgOut } with { encode (msgOut) "PER" } type record SsemReq { SSEM msgOut } with { encode (msgOut) "PER" } } with { variant "" encode "LibIts_Interface" } // End of group ApplPrimitives } with { encode "LibItsSremSsem" } // End of module LibItsSremSsem_TypesAndValues ats_ts103191-3-devel/lib/asn1/ 0000775 0000000 0000000 00000000000 14553501104 0015675 5 ustar 00root root 0000000 0000000 ats_ts103191-3-devel/lib/module.mk 0000664 0000000 0000000 00000002314 14553501104 0016651 0 ustar 00root root 0000000 0000000 sources := LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn \ LibItsMapemSpatem_EncdecDeclarations.ttcn \ LibItsMapemSpatem_Pics.ttcn \ LibItsMapemSpatem_Pixits.ttcn \ LibItsMapemSpatem_Templates.ttcn \ LibItsMapemSpatem_TypesAndValues.ttcn \ LibItsRtcmem_EncdecDeclarations.ttcn \ LibItsRtcmem_Pics.ttcn \ LibItsRtcmem_Pixits.ttcn \ LibItsRtcmem_Templates.ttcn \ LibItsRtcmem_TypesAndValues.ttcn \ LibItsSremSsem_EncdecDeclarations.ttcn \ LibItsSremSsem_Pics.ttcn \ LibItsSremSsem_Pixits.ttcn \ LibItsSremSsem_Templates.ttcn \ LibItsSremSsem_TypesAndValues.ttcn \ LibItsIvim_ASN1_IVInamedNumbers.ttcn \ LibItsIvim_EncdecDeclarations.ttcn \ LibItsIvim_Pics.ttcn \ LibItsIvim_Pixits.ttcn \ LibItsIvim_Templates.ttcn \ LibItsIvim_TypesAndValues.ttcn \ modules := asn1 ats_ts103191-3-devel/lib_system/ 0000775 0000000 0000000 00000000000 14553501104 0016437 5 ustar 00root root 0000000 0000000 ats_ts103191-3-devel/lib_system/LibItsIvim_Functions.ttcn 0000664 0000000 0000000 00000043001 14553501104 0023372 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 / TTF002 / TTF011 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/IVIM/LibItsIvim_Functions.ttcn $ * $Id: LibItsIvim_Functions.ttcn,v 1.2 2018/05/31 15:57:12 dte Exp $ * @desc Module containing functions for IVIM * @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 LibItsIvim_Functions { // LibCommon import from LibCommon_Sync all; import from LibCommon_VerdictControl all; import from LibCommon_Time all; // LibItsCommon import from LibItsCommon_Templates all; import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; import from LibItsCommon_Pixits all; // LibItsIvim import from ITS_Container language "ASN.1:1997" all; import from IVIM_PDU_Descriptions language "ASN.1:1997" all; import from IVI language "ASN.1:1997" all; import from EfcDsrcGeneric language "ASN.1:1997" all; import from EfcDsrcApplication language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; // LibItsSecurity import from LibItsSecurity_Functions all; // LibItsIvim import from LibItsIvim_TypesAndValues all; import from LibItsIvim_TestSystem all; import from LibItsIvim_Templates all; import from LibItsIvim_Pics all; import from LibItsIvim_Pixits all; group utFuntions { /** * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ function f_utInitializeIut(template (value) UtIvimInitialize p_init) runs on ItsIvim { //deactivate ivimPort default alts vc_ivimDefaultActive := false; utPort.send(p_init); tc_wait.start; alt { [] utPort.receive(UtIvimResults: { utIvimInitializeResult := true }) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT initialized ***"); } [] 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); } } //deactivate ivimPort default alts vc_ivimDefaultActive := true; } /** * @desc Triggers an event from the application layer * @param p_event The event to trigger. */ function f_utTriggerEvent( in template (value) UtIvimTrigger p_event ) runs on ItsIvim return IviIdentificationNumber { var IviIdentificationNumber v_iviIdentificationNumber; var UtIvimResults v_result; //deactivate ivimPort default alts vc_ivimDefaultActive := false; utPort.send(p_event); tc_wait.start; alt { [] utPort.receive(UtIvimResults: { utIvimTriggerResult := ? }) -> value v_result { tc_wait.stop; v_iviIdentificationNumber := v_result.utIvimTriggerResult.iviIdentificationNumber; if ( not v_result.utIvimTriggerResult.result ) { f_selfOrClientSyncAndVerdict("IVIM Trigger failed", 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); } } //deactivate ivimPort default alts vc_ivimDefaultActive := true; return v_iviIdentificationNumber; } /** * @desc Updates an event at the application layer * @param p_event The event to update. */ function f_utUpdateEvent( in template (value) UtIvimUpdate p_event ) runs on ItsIvim return IviIdentificationNumber { var IviIdentificationNumber v_iviIdentificationNumber; var UtIvimResults v_result; //deactivate ivimPort default alts vc_ivimDefaultActive := false; utPort.send(p_event); tc_wait.start; alt { [] utPort.receive(UtIvimResults: { utIvimUpdateResult := ? }) -> value v_result { tc_wait.stop; v_iviIdentificationNumber := v_result.utIvimUpdateResult.iviIdentificationNumber; if ( not v_result.utIvimUpdateResult.result ) { f_selfOrClientSyncAndVerdict("IVIM Update failed", 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 ivimPort default alts vc_ivimDefaultActive := true; return v_iviIdentificationNumber; } /** * @desc Terminates an event at the application layer * @param p_event The event to terminate. */ function f_utTerminateEvent(template (value) UtIvimTermination p_event) runs on ItsIvim { //deactivate ivimPort default alts vc_ivimDefaultActive := false; utPort.send(p_event); tc_wait.start; alt { [] utPort.receive(UtIvimResults: { utIvimTerminationResult := ? }) { tc_wait.stop; } [] tc_wait.timeout { log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] a_utDefault() { //empty on purpose } } //deactivate ivimPort default alts vc_ivimDefaultActive := true; } } // End of group utFunctions group adapterControl { /** * @desc Initialise secure mode if required */ function f_initialiseSecuredMode( in charstring p_certificateId := PX_CERT_FOR_TS ) runs on ItsIvim { if (PICS_IS_IUT_SECURED == true) { if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); stop; } } } // End of function f_initialiseSecuredMode() function f_uninitialiseSecuredMode() runs on ItsIvim { if (PICS_IS_IUT_SECURED == true) { f_acTriggerSecEvent(m_acDisableSecurity); } } // End of function f_initialiseSecuredMode() /** * @desc Triggers event in the test system adaptation. * @param p_event The event to trigger * @return FncRetCode */ function f_acTriggerSecEvent(template (value) AcSecPrimitive p_event) runs on ItsIvim return FncRetCode { var FncRetCode v_ret := e_success; acPort.send(p_event); tc_ac.start; alt { [] acPort.receive(m_acSecResponseSuccess) { tc_ac.stop; } [] acPort.receive { tc_ac.stop; log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_ac.timeout { log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } return v_ret; } } // End of group adapterControl group ivimConfigurationFunctions { /** * @desc Setups default configuration * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS ) runs on ItsIvim system ItsIvimSystem { map(self:acPort, system:acPort); map(self:utPort, system:utPort); map(self:ivimPort, system:ivimPort); f_connect4SelfOrClientSync(); // Initialise secured mode f_initialiseSecuredMode(p_certificateId); } // End of function f_cfUp /** * @desc Deletes default configuration */ function f_cfDown() runs on ItsIvim system ItsIvimSystem { // Initialise secured mode f_uninitialiseSecuredMode(); unmap(self:acPort, system:acPort); unmap(self:utPort, system:utPort); unmap(self:ivimPort, system:ivimPort); f_disconnect4SelfOrClientSync(); } // End of function f_cfDown } // End of group ivimConfigurationFunctions group altsteps { /** * @desc The base default. */ altstep a_default() runs on ItsIvim { [vc_ivimDefaultActive] ivimPort.receive( mw_ivimInd( mw_ivimPdu( mw_ivimStructure ))) { log("*** " & testcasename() & ": INFO: IVIM received in default ***"); vc_ivimReceived := true; repeat; } [vc_ivimDefaultActive] ivimPort.receive { log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_wait.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] a_shutdown() { f_poDefault(); f_cfDown(); log("*** " & testcasename() & ": INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } /** * @desc The default for handling upper tester messages. */ altstep a_utDefault() runs on ItsIvim { var UtIvimEventInd v_event; [] utPort.receive(UtIvimEventInd:?) -> value v_event { //store every upper tester indication received vc_utEvents[lengthof(vc_utEvents)] := v_event; repeat; } [] utPort.receive { log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); repeat; } } } // End of group altsteps group preambles { /** * @desc The default preamble. */ function f_prDefault() runs on ItsIvim { vc_default := activate(a_default()); activate(a_utDefault()); } /** * @desc Brings the IUT into an initial state. * @return FncRetCode */ // function f_prInitialState(Scenario p_scenario := e_staticPosition) runs on ItsIvim return FncRetCode { // var FncRetCode v_ret := e_success; // // f_utInitializeIut(m_ivimStructureInitialize); // // f_prDefault(); // // return v_ret; // } function f_prInitialState(Scenario p_scenario := e_staticPosition, // TODO: To be removed, not used in IVIM (RSU) in charstring p_certificate_id := "" ) runs on ItsIvim return FncRetCode { var FncRetCode v_ret := e_success; // Initialize IUT with given certificate if (p_certificate_id != "") { // Initialize IUT with given certificate var HashedId8 v_hashedId8 := '0000000000000000'O; fx_readCertificateDigest("CERT_IVI_SSP_NONE", v_hashedId8); if ('0000000000000000'O == v_hashedId8) { // Certificate not found log("*** " & testcasename() & ": Required IUT certificate is not found on the test system ***"); return e_timeout; } f_utInitializeIut(m_ivimStructureInitialize(v_hashedId8)); } else { f_utInitializeIut(m_ivimStructureInitialize); } f_prDefault(); return v_ret; } } // End of group preambles group postambles { /** * @desc The default postamble. */ function f_poDefault() runs on ItsIvim { // Nothing to do } /** * @desc Postamble including cancellation of an event. * @param p_trigger Indicates if the cancellation have to be raised by the test system(e_ets) * or at the application layer of the IUT(e_iut). * @param p_actionId The action ID of the event to be cancelled */ function f_poCancelEvent( in template (value) Trigger p_trigger, in template (value) IviIdentificationNumber p_iviIdentificationNumber ) runs on ItsIvim { var FncRetCode v_ret := e_success; if (valueof(p_trigger) == e_ets) { f_sendIviMessage(valueof(m_ivimStructureCancellation(p_iviIdentificationNumber))); f_sleep(PX_TNOAC); } else { f_utTerminateEvent(m_utEventCancellation(p_iviIdentificationNumber)); } f_poDefault(); } } // End of group postambles group sendFunctions { /** * @desc Sends a IVI message * @param p_sendMsg The IVI message to send. * @param p_overrideSeqNo Overrides the sequence number with the stored one. */ function f_sendIviMessage( in template (value) IviStructure p_ivim ) runs on ItsIvim { ivimPort.send( m_ivimReq( m_ivimStructurePdu( p_ivim ) ) ); } } // End of group sendFunctions group receiveFunctions { /** * @desc Awaits a IVI message and returns it * @param p_rcvMsg The expected message to be received. * @param p_rcvdMsg The received message - OUT. */ function f_awaitIviMessage( in template (present) IvimInd p_rcvMsg, out IvimInd p_rcvdMsg ) runs on ItsIvim { tc_ac.start; alt { [] ivimPort.receive(p_rcvMsg) -> value p_rcvdMsg { tc_ac.stop; } [] tc_ac.timeout { log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } } } // End of group receiveFunctions group miscellaneousFunctions { /** * @desc Increases the IviIdentification number and handles the special case where the * IviIdentification number reaches the limit of 32768 and will be reset to 0. * @param p_iviIdentificationNumber The IviIdentification number to increase. * @return The increased IviIdentification number. */ function f_increaseIviIdentificationNumber( in IviIdentificationNumber p_iviIdentificationNumber ) return IviIdentificationNumber { // if maximum number of 32768 reached, reset it to 0 return ((p_iviIdentificationNumber + 1) mod 32768); } } // End of group miscellaneousFunctions } // End of module LibItsIvim_Functions ats_ts103191-3-devel/lib_system/LibItsIvim_TestSystem.ttcn 0000664 0000000 0000000 00000006576 14553501104 0023566 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/IVIM/LibItsIvim_TestSystem.ttcn $ * $Id: LibItsIvim_TestSystem.ttcn,v 1.2 2018/05/31 15:57:12 dte Exp $ * @desc Test System module for ITS IVIM * @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 LibItsIvim_TestSystem { // 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 IVIM_PDU_Descriptions language "ASN.1:1997" all; import from ITS_Container language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TestSystem all; import from LibItsCommon_TypesAndValues all; // LibItsIvim import from LibItsIvim_TypesAndValues all; group portDefinitions { /** * @desc Adapter control port */ type port AdapterControlPort message { out AcGnssPrimitive, AcSecPrimitive; in AdapterControlResults; } // end AdapterControlPort /** * @desc Upper Tester port */ type port UpperTesterPort message { out UtIvimInitialize, UtIvimTrigger, UtIvimUpdate, UtIvimTermination; in UtIvimResults, UtIvimEventInd; } // end UpperTesterPort } // end portDefinitions group interfacePorts { group facilityPorts { group fa1Ports { /** * @desc FA1 IVIM Port (IVIM/BTP/GeoNet/RadioNetwork) */ type port IvimPort message { in IvimInd; out IvimReq; } // End of port IvimPort } // End of group fa1Ports } // End of group facilityPorts } // End of group interfacePorts group componentDefinitions { /** * @desc ITS System Adapter */ type component ItsIvimSystem { port UpperTesterPort utPort; port AdapterControlPort acPort; // FA1 ports port IvimPort ivimPort; } // end component ItsAdapter } // End of group componentDefinitions /** * @desc Test component for ITS Facility layer */ type component ItsIvim extends ItsBaseComponent { port AdapterControlPort acPort; port UpperTesterPort utPort; // FA1 ports port IvimPort ivimPort; //timers //component variables //default var default vc_default := null; //global variables var SequenceNumber vc_sequenceNo := 0; var boolean vc_ivimReceived := false; var UtIvimEventIndList vc_utEvents := {}; var boolean vc_ivimDefaultActive := true; } // End of component ItsIvim } // End of module LibItsIvim_TestSystem ats_ts103191-3-devel/lib_system/LibItsMapemSpatem_Functions.ttcn 0000664 0000000 0000000 00000042372 14553501104 0024711 0 ustar 00root root 0000000 0000000 /** * @author ETSI / STF484 / STF517 * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn $ * $Id: LibItsMapemSpatem_Functions.ttcn,v 1.2 2018/05/31 15:57:09 dte Exp $ * @desc Module containing common functions for ITS MAPEM SPATEM * @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 LibItsMapemSpatem_Functions { // LibCommon import from LibCommon_Sync all; import from LibCommon_Time all; import from LibCommon_VerdictControl all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; import from DSRC_noCircular language "ASN.1:1997" all; import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Templates all; import from LibItsCommon_Functions all; import from LibItsCommon_Pixits all; // LibItsSecurity import from LibItsSecurity_Functions all; // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; import from LibItsMapemSpatem_TypesAndValues all; import from LibItsMapemSpatem_Templates all; import from LibItsMapemSpatem_Pics all; import from LibItsMapemSpatem_Pixits all; group utFuntions { /** * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ function f_utInitializeIut(template (value) UtMapemSpatemInitialize p_init) runs on ItsMapemSpatem { //deactivate mapemSpatemPort default alts vc_mapemSpatemDefaultActive := false; utPort.send(p_init); tc_wait.start; alt { [] utPort.receive(UtMapemSpatemResults: { utMapemSpatemInitializeResult := true }) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT initialized ***"); } [] tc_wait.timeout { log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } //deactivate mapemSpatemPort default alts vc_mapemSpatemDefaultActive := true; } /** * @desc Triggers an event from the application layer * @param p_event The event to trigger. */ function f_utTriggerEvent( in template (value) UtMapemSpatemTrigger p_event ) runs on ItsMapemSpatem { //deactivate mapemSpatemPort default alts vc_mapemSpatemDefaultActive := false; utPort.send ( p_event ); tc_wait.start; alt { [] utPort.receive ( UtMapemSpatemResults: { utMapemSpatemTriggerResult := true }) { tc_wait.stop; } [] utPort.receive ( UtMapemSpatemResults: { utMapemSpatemTriggerResult := false }) { tc_wait.stop; f_selfOrClientSyncAndVerdict("MapSpat Trigger failed", e_error); } [] tc_wait.timeout { log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } //deactivate mapemSpatemPort default alts vc_mapemSpatemDefaultActive := true; return; } } // End of group utFuntions group adapterControl { /** * @desc Initialise secure mode if required */ function f_initialiseSecuredMode( in charstring p_certificateId := PX_CERT_FOR_TS ) runs on ItsMapemSpatem { if (PICS_IS_IUT_SECURED == true) { if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); stop; } } } // End of function f_initialiseSecuredMode() function f_uninitialiseSecuredMode() runs on ItsMapemSpatem { if (PICS_IS_IUT_SECURED == true) { f_acTriggerSecEvent(m_acDisableSecurity); } } // End of function f_initialiseSecuredMode() /** * @desc Triggers event in the test system adaptation. * @param p_event The event to trigger * @return FncRetCode */ function f_acTriggerSecEvent(template (value) AcSecPrimitive p_event) runs on ItsMapemSpatem return FncRetCode { var FncRetCode v_ret := e_success; acPort.send(p_event); tc_ac.start; alt { [] acPort.receive(m_acSecResponseSuccess) { tc_ac.stop; } [] acPort.receive { tc_ac.stop; log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] tc_ac.timeout { log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } return v_ret; } } // End of group adapterControl group altsteps { /** * @desc Default handling cf01 de-initialisation. */ altstep a_cf01Down() runs on ItsMapemSpatem { [] a_shutdown() { f_poDefault(); f_cfDown(); log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } /** * @desc Default handling cf02 de-initialisation. */ altstep a_cf02Down() runs on ItsMtc { [] a_shutdown() { f_cf02Down(); log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } /** * @desc The base default. */ altstep a_default() runs on ItsMapemSpatem { [vc_mapemSpatemDefaultActive] mapemSpatemPort.receive(mw_mapemInd(mw_mapemPdu(mw_defaultMapem))) { log("*** " & testcasename() & ": INFO: MAPEM received in default ***"); vc_mapemReceived := true; repeat; } [vc_mapemSpatemDefaultActive] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { log("*** " & testcasename() & ": INFO: MAPEM received in default ***"); vc_spatemReceived := true; repeat; } [vc_mapemSpatemDefaultActive] mapemSpatemPort.receive { log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); f_selfOrClientSyncAndVerdict("error", e_error); } [] any timer.timeout { log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } [] a_shutdown() { f_poDefault(); f_cfDown(); log("*** " & testcasename() & ": INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); stop; } } /** * @desc The default for handling upper tester messages. */ altstep a_utDefault() runs on ItsMapemSpatem { var UtMapemEventInd v_mapemevent; var UtSpatemEventInd v_spatemevent; [] utPort.receive(UtMapemEventInd:?) -> value v_mapemevent { //store every upper tester indication received log("*** " & testcasename() & ": INFO: Store UtMapemEventInd messge ***"); vc_utMapemEvents[lengthof(vc_utMapemEvents)] := v_mapemevent; repeat; } [] utPort.receive(UtSpatemEventInd:?) -> value v_spatemevent { //store every upper tester indication received log("*** " & testcasename() & ": INFO: Store UtSpatemEventInd messge ***"); vc_utSpatemEvents[lengthof(vc_utSpatemEvents)] := v_spatemevent; repeat; } [] utPort.receive { log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); repeat; } } } // End of group altsteps group mapSpatConfigurationFunctions { /** * @desc Setups default configuration * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS ) runs on ItsMapemSpatem system ItsMapemSpatemSystem { map(self:acPort, system:acPort); map(self:utPort, system:utPort); map(self:mapemSpatemPort, system:mapemSpatemPort); // Connect f_connect4SelfOrClientSync(); activate(a_cf01Down()); // Initialise secured mode f_initialiseSecuredMode(p_certificateId); } // End of f_cfUp /** * @desc Deletes default configuration */ function f_cfDown() runs on ItsMapemSpatem /* TITAN TODO: system ItsMapemSpatemSystem */ { // Initialise secured mode f_uninitialiseSecuredMode(); unmap(self:utPort, system:utPort); unmap(self:acPort, system:acPort); unmap(self:mapemSpatemPort, system:mapemSpatemPort); f_disconnect4SelfOrClientSync(); } // End of f_cfDown /** * @desc Setups default configuration * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT */ function f_cf02Up(in charstring p_certificateId := PX_CERT_FOR_TS ) runs on ItsMtc mtc ItsMtc system ItsMapemSpatemSystem { // Variables var integer i; // Select components vc_componentTable := {{c_compMap, omit}, {c_compSpat, omit}}; // Create components for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { vc_componentTable[i].msComponent := ItsMapemSpatem.create(vc_componentTable[i].componentName) alive; } // Map & Connect map(self:acPort, system:acPort); map(self:utPort, system:utPort); connect(self:syncPort, mtc:syncPort); for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { map(vc_componentTable[i].msComponent:acPort, system:acPort); map(vc_componentTable[i].msComponent:utPort, system:utPort); map(vc_componentTable[i].msComponent:mapemSpatemPort, system:mapemSpatemPort); connect(vc_componentTable[i].msComponent:syncPort, self:syncPort); } activate(a_cf02Down()); // Initialise secured mode f_initialiseSecuredMode(p_certificateId); } // End of f_cf02Up /** * @desc Deletes default configuration */ function f_cf02Down() runs on ItsMtc mtc ItsMtc system ItsMapemSpatemSystem { // Local variables var integer i; f_uninitialiseSecuredMode(); // Unmap & Disconnect for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { unmap(vc_componentTable[i].msComponent:utPort, system:utPort); unmap(vc_componentTable[i].msComponent:acPort, system:acPort); unmap(vc_componentTable[i].msComponent:mapemSpatemPort, system:mapemSpatemPort); disconnect(vc_componentTable[i].msComponent:syncPort, self:syncPort); } unmap(self:acPort, system:acPort); unmap(self:utPort, system:utPort); disconnect(self:syncPort, mtc:syncPort); } // End of f_cf02Down } // End of of mapSpatConfigurationFunctions group preambles { /** * @desc The default preamble. */ function f_prDefault() runs on ItsMapemSpatem { vc_default := activate(a_default()); activate(a_utDefault()); } /** * @desc Brings the IUT into an initial state. * @return FncRetCode */ function f_prInitialState( in charstring p_certificate_id := "" ) runs on ItsMapemSpatem return FncRetCode { var FncRetCode v_ret := e_success; // Initialize IUT with given certificate if (p_certificate_id != "") { // Initialize IUT with given certificate var HashedId8 v_hashedId8 := '0000000000000000'O; fx_readCertificateDigest("CERT_SRM_SSP_NONE", v_hashedId8); if ('0000000000000000'O == v_hashedId8) { // Certificate not found log("*** " & testcasename() & ": Required IUT certificate is not found on the test system ***"); return e_timeout; } f_utInitializeIut(m_mapemSpatemInitialize(v_hashedId8)); } else { f_utInitializeIut(m_mapemSpatemInitialize); } f_prDefault(); return v_ret; } } // End of group preambles group postambles { /** * @desc The default postamble. */ function f_poDefault() runs on ItsMapemSpatem { //empty } } // End of group postambles group receiveFunctions { /** * @desc Awaits a SPATE message and returns it * @param p_rcvMsg The expected message to be received. * @param p_rcvdMsg The received message - OUT. */ function f_awaitSpateMessage(in template (present) SpatemInd p_rcvMsg, out SpatemInd p_rcvdMsg) runs on ItsMapemSpatem { tc_ac.start; alt { [] mapemSpatemPort.receive(p_rcvMsg) -> value p_rcvdMsg { tc_ac.stop; } [] tc_ac.timeout { log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } } /** * @desc Awaits a MAPE message and returns it * @param p_rcvMsg The expected message to be received. * @param p_rcvdMsg The received message - OUT. */ function f_awaitMapeMessage(in template (present) MapemInd p_rcvMsg, out MapemInd p_rcvdMsg) runs on ItsMapemSpatem { tc_ac.start; alt { [] mapemSpatemPort.receive(p_rcvMsg) -> value p_rcvdMsg { tc_ac.stop; } [] tc_ac.timeout { log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } } } } // End of group receiveFunctions group componentFunctions { /** * @desc Get the component corresponding to a key * @param p_componentName Name searched component * @return ItsGeoNetworking - The searched position vector */ function f_getComponent( in charstring p_componentName ) runs on ItsMtc return ItsMapemSpatem { var ItsMapemSpatem v_return := null; var integer i := 0; for (i:=0; i