From a61accf133982e7b3d690da9c4bc717d9d2b43aa Mon Sep 17 00:00:00 2001 From: filatov Date: Tue, 7 Feb 2017 16:20:41 +0000 Subject: [PATCH 002/320] TITANIZATION: remove 'mtc' and 'system' from function declaration --- ttcn/BTP/LibItsBtp_Functions.ttcn | 4 +- ttcn/CAM/LibItsCam_Functions.ttcn | 4 +- ttcn/DENM/LibItsDenm_Functions.ttcn | 4 +- .../LibItsGeoNetworking_Functions.ttcn | 42 +++++++++---------- ttcn/IVIM/LibItsIvim_Functions.ttcn | 4 +- ...LibItsIpv6OverGeoNetworking_Functions.ttcn | 4 +- .../LibItsMapemSpatem_Functions.ttcn | 4 +- ttcn/SremSsem/LibItsSremSsem_Functions.ttcn | 4 +- 8 files changed, 35 insertions(+), 35 deletions(-) diff --git a/ttcn/BTP/LibItsBtp_Functions.ttcn b/ttcn/BTP/LibItsBtp_Functions.ttcn index 581629d..dac1f2c 100644 --- a/ttcn/BTP/LibItsBtp_Functions.ttcn +++ b/ttcn/BTP/LibItsBtp_Functions.ttcn @@ -94,7 +94,7 @@ /** * @desc Setups default configuration */ - function f_cfUp() runs on ItsBtp system ItsBtpSystem { + function f_cfUp() runs on ItsBtp /* TITAN TODO: system ItsBtpSystem */ { map(self:utPort, system:utPort); map(self:btpPort, system:btpPort); @@ -105,7 +105,7 @@ /** * @desc Deletes default configuration */ - function f_cfDown() runs on ItsBtp system ItsBtpSystem { + function f_cfDown() runs on ItsBtp /* TITAN TODO: system ItsBtpSystem */ { unmap(self:utPort, system:utPort); unmap(self:btpPort, system:btpPort); diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn index e5787f0..6e771b8 100644 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ b/ttcn/CAM/LibItsCam_Functions.ttcn @@ -292,7 +292,7 @@ module LibItsCam_Functions { */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsCam system ItsCamSystem { + ) runs on ItsCam /* TITAN TODO: system ItsCamSystem */ { map(self:utPort, system:utPort); map(self:acPort, system:acPort); @@ -307,7 +307,7 @@ module LibItsCam_Functions { /** * @desc Deletes default configuration */ - function f_cfDown() runs on ItsCam system ItsCamSystem { + function f_cfDown() runs on ItsCam /* TITAN TODO: system ItsCamSystem */ { // Initialise secured mode f_uninitialiseSecuredMode(); diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn index e94edda..0191c15 100644 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ b/ttcn/DENM/LibItsDenm_Functions.ttcn @@ -386,7 +386,7 @@ module LibItsDenm_Functions { */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsDenm system ItsDenmSystem { + ) runs on ItsDenm /* TITAN TODO: system ItsDenmSystem */ { map(self:acPort, system:acPort); map(self:utPort, system:utPort); @@ -401,7 +401,7 @@ module LibItsDenm_Functions { /** * @desc Deletes default configuration */ - function f_cfDown() runs on ItsDenm system ItsDenmSystem { + function f_cfDown() runs on ItsDenm /* TITAN TODO: system ItsDenmSystem */{ // Initialise secured mode f_uninitialiseSecuredMode(); diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 31bfb95..2a2229d 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -154,7 +154,7 @@ module LibItsGeoNetworking_Functions { * - Area2 which only includes NodeB * NodeB being close to the area center */ - function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking system ItsGeoNetworkingSystem { + function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { // Variables var PositionTable v_positionTable := {}; @@ -182,7 +182,7 @@ module LibItsGeoNetworking_Functions { } // end f_cf01Up - function f_cf01Down() runs on ItsGeoNetworking system ItsGeoNetworkingSystem { + function f_cf01Down() runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { f_uninitialiseSecuredMode(); @@ -207,7 +207,7 @@ module LibItsGeoNetworking_Functions { * * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ - function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables var PositionTable v_positionTable := {}; @@ -270,7 +270,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf02 */ - function f_cf02Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf02Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables var integer i; @@ -301,7 +301,7 @@ module LibItsGeoNetworking_Functions { * NodeB being close to the area center * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ - function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables var PositionTable v_positionTable := {}; @@ -364,7 +364,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf03 */ - function f_cf03Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf03Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables var integer i; @@ -397,7 +397,7 @@ module LibItsGeoNetworking_Functions { * NodeB being close to the area center * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ - function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables var PositionTable v_positionTable := {}; @@ -460,7 +460,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf04 */ - function f_cf04Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf04Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */{ // Local variables var integer i; @@ -489,7 +489,7 @@ module LibItsGeoNetworking_Functions { * - Area1 which only includes NodeB, NodeD and IUT * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ - function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables var PositionTable v_positionTable := {}; @@ -551,7 +551,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf05 */ - function f_cf05Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf05Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables var integer i; @@ -581,7 +581,7 @@ module LibItsGeoNetworking_Functions { * - IUT not in sectorial area of NodeB-NodeF * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ - function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables var PositionTable v_positionTable := {}; @@ -643,7 +643,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf06 */ - function f_cf06Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf06Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables var integer i; @@ -672,7 +672,7 @@ module LibItsGeoNetworking_Functions { * - Area1 which only includes NodeB, NodeD and IUT * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ - function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO mtc ItsMtc system ItsGeoNetworkingSystem */{ // Variables var PositionTable v_positionTable := {}; @@ -734,7 +734,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf06 */ - function f_cf07Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { + function f_cf07Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables var integer i; @@ -1689,15 +1689,15 @@ module LibItsGeoNetworking_Functions { var GeoNetworkingInd v_msg; f_sendGeoNetMessage( - m_geoNwReq_linkLayerBroadcast( - m_geoNwPdu( - m_geoNwLsRequestPacket( - p_reqSrcPosVector, - p_reqSeqNumber, - p_gnAddress + m_geoNwReq_linkLayerBroadcast( + m_geoNwPdu( + m_geoNwLsRequestPacket( + p_reqSrcPosVector, + p_reqSeqNumber, + p_gnAddress + ) ) ) - ) ); tc_ac.start; diff --git a/ttcn/IVIM/LibItsIvim_Functions.ttcn b/ttcn/IVIM/LibItsIvim_Functions.ttcn index 306bb6f..9b3e451 100644 --- a/ttcn/IVIM/LibItsIvim_Functions.ttcn +++ b/ttcn/IVIM/LibItsIvim_Functions.ttcn @@ -243,7 +243,7 @@ module LibItsIvim_Functions { */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsIvim system ItsIvimSystem { + ) runs on ItsIvim /* TITAN TODO: system ItsIvimSystem */{ map(self:acPort, system:acPort); map(self:utPort, system:utPort); @@ -258,7 +258,7 @@ module LibItsIvim_Functions { /** * @desc Deletes default configuration */ - function f_cfDown() runs on ItsIvim system ItsIvimSystem { + function f_cfDown() runs on ItsIvim /* TITAN TODO: system ItsIvimSystem */{ // Initialise secured mode f_uninitialiseSecuredMode(); diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn index 5271798..f2944b8 100644 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn @@ -38,7 +38,7 @@ module LibItsIpv6OverGeoNetworking_Functions { * - two ITS nodes (nodeA, nodeB) * - three GVLs */ - function f_cf01UpGn6() runs on ItsIpv6OverGeoNetworking system ItsIpv6OverGeoNetworkingSystem { + function f_cf01UpGn6() runs on ItsIpv6OverGeoNetworking /* TITAN TODO: system ItsIpv6OverGeoNetworkingSystem */ { // Variables var float v_distance; @@ -73,7 +73,7 @@ module LibItsIpv6OverGeoNetworking_Functions { /** * @desc Deletes configuration cf01Gn6 */ - function f_cf01DownGn6() runs on ItsIpv6OverGeoNetworking system ItsIpv6OverGeoNetworkingSystem { + function f_cf01DownGn6() runs on ItsIpv6OverGeoNetworking /* TITAN TODO: system ItsIpv6OverGeoNetworkingSystem */ { // Map unmap(self:ipv6OverGeoNetworkingPort, system:ipv6OverGeoNetworkingPort); diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn index c306793..09372f0 100644 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn +++ b/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn @@ -225,7 +225,7 @@ module LibItsMapemSpatem_Functions { */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsMapemSpatem system ItsMapemSpatemSystem { + ) runs on ItsMapemSpatem /* TITAN TODO: system ItsMapemSpatemSystem */ { map(self:acPort, system:acPort); map(self:utPort, system:utPort); @@ -243,7 +243,7 @@ module LibItsMapemSpatem_Functions { /** * @desc Deletes default configuration */ - function f_cfDown() runs on ItsMapemSpatem system ItsMapemSpatemSystem { + function f_cfDown() runs on ItsMapemSpatem /* TITAN TODO: system ItsMapemSpatemSystem */ { // Initialise secured mode f_uninitialiseSecuredMode(); diff --git a/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn b/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn index fa27e33..67f8b75 100644 --- a/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn +++ b/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn @@ -258,7 +258,7 @@ module LibItsSremSsem_Functions { */ function f_cfUp( in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsSremSsem system ItsSremSsemSystem { + ) runs on ItsSremSsem /* TITAN TODO: system ItsSremSsemSystem */ { map(self:acPort, system:acPort); map(self:utPort, system:utPort); @@ -279,7 +279,7 @@ module LibItsSremSsem_Functions { /** * @desc Deletes default configuration */ - function f_cfDown() runs on ItsSremSsem system ItsSremSsemSystem { + function f_cfDown() runs on ItsSremSsem /* TITAN TODO: system ItsSremSsemSystem */ { // Initialise secured mode f_uninitialiseSecuredMode(); -- GitLab From 6dbc85d1c2298c199c63dfb858891322936cf540 Mon Sep 17 00:00:00 2001 From: filatov Date: Tue, 7 Feb 2017 17:20:16 +0000 Subject: [PATCH 003/320] TITANIZATION: Add EncdecDeclarations and other files. --- ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn | 13 + ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn | 21 ++ ttcn/CAM/LibItsCam_Functions.ttcn | 1 + ttcn/CAM/LibItsCam_Templates.ttcn | 1 + ttcn/CAM/LibItsCam_TestSystem.ttcn | 2 +- ...LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn | 49 +++ .../LibItsCommon_ASN1_NamedNumbers1.ttcn | 298 ++++++++++++++++++ ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 16 + ...ibItsGeoNetworking_EncdecDeclarations.ttcn | 31 ++ .../LibItsGeoNetworking_Functions.ttcn | 1 + .../LibItsGeoNetworking_Templates.ttcn | 2 + .../IVIM/LibItsIvim_ASN1_IVInamedNumbers.ttcn | 17 + ttcn/IVIM/LibItsIvim_EncdecDeclarations.ttcn | 9 + ttcn/IVIM/LibItsIvim_Templates.ttcn | 2 + .../LibItsMapemSpatem_EncdecDeclarations.ttcn | 19 ++ .../LibItsMapemSpatem_Templates.ttcn | 2 + .../LibItsSecurity_EncdecDeclarations.ttcn | 31 ++ ttcn/Security/LibItsSecurity_Functions.ttcn3 | 1 + .../LibItsSremSsem_EncdecDeclarations.ttcn | 8 + ttcn/SremSsem/LibItsSremSsem_Templates.ttcn | 1 + 20 files changed, 524 insertions(+), 1 deletion(-) create mode 100644 ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn create mode 100644 ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn create mode 100644 ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn create mode 100644 ttcn/Common/LibItsCommon_ASN1_NamedNumbers1.ttcn create mode 100644 ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn create mode 100644 ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn create mode 100644 ttcn/IVIM/LibItsIvim_ASN1_IVInamedNumbers.ttcn create mode 100644 ttcn/IVIM/LibItsIvim_EncdecDeclarations.ttcn create mode 100644 ttcn/MapemSpatem/LibItsMapemSpatem_EncdecDeclarations.ttcn create mode 100644 ttcn/Security/LibItsSecurity_EncdecDeclarations.ttcn create mode 100644 ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn diff --git a/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn b/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn new file mode 100644 index 0000000..a336617 --- /dev/null +++ b/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn @@ -0,0 +1,13 @@ +module LibItsBtp_EncdecDeclarations { + + // LibItsBtp + import from LibItsBtp_TypesAndValues all; + + external function fx_enc_BtpPayload (BtpPayload p) return bitstring + with {extension "prototype(convert) encode(LibItsBtp)"} + + /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) + external function fx_dec_BtpPayload (inout bitstring b, out BtpPayload p) return integer + with {extension "prototype(sliding) decode(LibItsBtp)"} + */ +} // End of module LibItsBtp_EncdecDeclarations diff --git a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn new file mode 100644 index 0000000..0926594 --- /dev/null +++ b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn @@ -0,0 +1,21 @@ +module LibItsCam_EncdecDeclarations { + + // LibIts + import from ITS_Container language "ASN.1:1997" all; + import from CAM_PDU_Descriptions language "ASN.1:1997" all; + import from DENM_PDU_Descriptions language "ASN.1:1997" all; + + // LibItsCam + import from LibItsCam_TestSystem all; + + external function fx_enc_CamReq (CamReq p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_enc_CAM (CAM p) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + + /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) + external function fx_dec_CamReq (inout bitstring b, out CamReq p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + */ +} // End of module LibItsCam_EncdecDeclarations diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn index 6e771b8..e44b8b3 100644 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ b/ttcn/CAM/LibItsCam_Functions.ttcn @@ -33,6 +33,7 @@ module LibItsCam_Functions { import from LibItsCam_TypesAndValues all; import from LibItsCam_Pics all; import from LibItsCam_Pixits all; + import from LibItsCam_EncdecDeclarations all; group utFuntions { diff --git a/ttcn/CAM/LibItsCam_Templates.ttcn b/ttcn/CAM/LibItsCam_Templates.ttcn index 300bb0c..018d52e 100644 --- a/ttcn/CAM/LibItsCam_Templates.ttcn +++ b/ttcn/CAM/LibItsCam_Templates.ttcn @@ -23,6 +23,7 @@ module LibItsCam_Templates { // LibItsCommon import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; + import from LibItsCommon_ASN1_NamedNumbers all; // LibItsCam import from LibItsCam_TestSystem all; diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn index 71a351f..01f8ca7 100644 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ b/ttcn/CAM/LibItsCam_TestSystem.ttcn @@ -157,4 +157,4 @@ module LibItsCam_TestSystem { encode "LibIts_Interface" } // end interfacePrimitives -} // End of module LibIts_TestSystem +} // End of module LibItsCam_TestSystem diff --git a/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn b/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn new file mode 100644 index 0000000..daf1a98 --- /dev/null +++ b/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn @@ -0,0 +1,49 @@ +//This module contains TTCN-3 values for ASN.1 named numbers, aligned with TTWorkbench name convention + +module LibItsCommon_ASN1_ISDSRC_NamedNumbers { + +import from IS_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 Intersection_constants + } // end IS_DSCR_constants + +} // End of module LibItsCommon_ASN1_ISDSRC_NamedNumbers diff --git a/ttcn/Common/LibItsCommon_ASN1_NamedNumbers1.ttcn b/ttcn/Common/LibItsCommon_ASN1_NamedNumbers1.ttcn new file mode 100644 index 0000000..8ccbb25 --- /dev/null +++ b/ttcn/Common/LibItsCommon_ASN1_NamedNumbers1.ttcn @@ -0,0 +1,298 @@ +//This module contains TTCN-3 values for ASN.1 named numbers, aligned with TTWorkbench name convention + +module LibItsCommon_ASN1_NamedNumbers { + + import from ITS_Container language "ASN.1:2008" all; + + import from IVI language "ASN.1:1997" { + type IviStatus + } + + group commonConstants { + + const AccelerationConfidence AccelerationConfidence_pointOneMeterPerSecSquared_ := 1; + const AccelerationConfidence AccelerationConfidence_outOfRange_ := 101; + const AccelerationConfidence AccelerationConfidence_unavailable_ := 102; + + const AccelerationControl AccelerationControl_brakePedalEngaged_ := '0000000'B; + const AccelerationControl AccelerationControl_gasPedalEngaged_ := '0000001'B; + const AccelerationControl AccelerationControl_emergencyBrakeEngaged_ := '0000010'B; + const AccelerationControl AccelerationControl_collisionWarningEngaged_ := '0000011'B; + const AccelerationControl AccelerationControl_accEngaged_ := '0000100'B; + const AccelerationControl AccelerationControl_cruiseControlEngaged_ := '0000101'B; + const AccelerationControl AccelerationControl_speedLimiterEngaged_ := '0000110'B; + + const AltitudeValue AltitudeValue_referenceEllipsoidSurface_ := 0; + const AltitudeValue AltitudeValue_oneCentimeter_ := 1; + const AltitudeValue AltitudeValue_unavailable_ := 800001; + + const CurvatureValue CurvatureValue_straight_ := 0; + const CurvatureValue CurvatureValue_reciprocalOf1MeterRadiusToRight_ := -30000; + const CurvatureValue CurvatureValue_reciprocalOf1MeterRadiusToLeft_ := 30000; + const CurvatureValue CurvatureValue_unavailable_ := 30001; + + const ExteriorLights ExteriorLights_lowBeamHeadlightsOn_ := '00000000'B; + const ExteriorLights ExteriorLights_highBeamHeadlightsOn_ := '01000000'B; + const ExteriorLights ExteriorLights_leftTurnSignalOn_ := '00100000'B; + const ExteriorLights ExteriorLights_rightTurnSignalOn_ := '00010000'B; + const ExteriorLights ExteriorLights_daytimeRunningLightsOn_ := '00001000'B; + const ExteriorLights ExteriorLights_reverseLightOn_ := '00000100'B; + const ExteriorLights ExteriorLights_fogLightOn_ := '00000010'B; + const ExteriorLights ExteriorLights_parkingLightsOn_ := '00000001'B; + + const HeadingConfidence HeadingConfidence_withinZeroPointOneDegree_ := 1; + + const HeadingValue HeadingValue_wgs84North_ := 0; + + const ItsPduHeader.protocolVersion ItsPduHeader_protocolVersion_currentVersion_ := 1; + const ItsPduHeader.messageID ItsPduHeader_messageID_denm_ := 1; + const ItsPduHeader.messageID ItsPduHeader_messageID_cam_ := 2; + const ItsPduHeader.messageID ItsPduHeader_messageID_poi_ := 3; + const ItsPduHeader.messageID ItsPduHeader_messageID_spatem_ := 4; + const ItsPduHeader.messageID ItsPduHeader_messageID_mapem_ := 5; + const ItsPduHeader.messageID ItsPduHeader_messageID_ivim_ := 6; + const ItsPduHeader.messageID ItsPduHeader_messageID_ev_rsr_ := 7; + const ItsPduHeader.messageID ItsPduHeader_messageID_tistpgtransaction_ := 8; + const ItsPduHeader.messageID ItsPduHeader_messageID_srem_ := 9; + const ItsPduHeader.messageID ItsPduHeader_messageID_ssem_ := 10; + const ItsPduHeader.messageID ItsPduHeader_messageID_evcsn_ := 11; + + const LongitudinalAccelerationValue LongitudinalAccelerationValue_unavailable_ := 161; + + const SemiAxisLength SemiAxisLength_oneCentimeter_ := 1; + const SemiAxisLength SemiAxisLength_outOfRange_ := 4094; + const SemiAxisLength SemiAxisLength_unavailable_ := 4095; + + const StationType StationType_unknown_ := 0; + const StationType StationType_pedestrian_ := 1; + const StationType StationType_cyclist_ := 2; + const StationType StationType_moped_ := 3; + const StationType StationType_motorcycle_ := 4; + const StationType StationType_passengerCar_ := 5; + const StationType StationType_bus_ := 6; + const StationType StationType_lightTruck_ := 7; + const StationType StationType_heavyTruck_ := 8; + const StationType StationType_trailer_ := 9; + const StationType StationType_specialVehicles_ := 10; + const StationType StationType_tram_ := 11; + const StationType StationType_roadSideUnit_ := 15; + + const YawRateValue YawRateValue_straight_ := 0; + + group causeCodes { + const CauseCodeType CauseCodeType_reserved_ := 0; + const CauseCodeType CauseCodeType_trafficCondition_ := 1; + const CauseCodeType CauseCodeType_accident_ := 2; + const CauseCodeType CauseCodeType_roadworks_ := 3; + const CauseCodeType CauseCodeType_adverseWeatherCondition_Adhesion_ := 6; + const CauseCodeType CauseCodeType_hazardousLocation_SurfaceCondition_ := 9; + const CauseCodeType CauseCodeType_hazardousLocation_ObstacleOnTheRoad_ := 10; + const CauseCodeType CauseCodeType_hazardousLocation_AnimalOnTheRoad_ := 11; + const CauseCodeType CauseCodeType_humanPresenceOnTheRoad_ := 12; + const CauseCodeType CauseCodeType_wrongWayDriving_ := 14; + const CauseCodeType CauseCodeType_rescueAndRecoveryWorkInProgress_ := 15; + const CauseCodeType CauseCodeType_adverseWeatherCondition_ExtremeWeatherCondition_ := 17; + const CauseCodeType CauseCodeType_adverseWeatherCondition_Visibility_ := 18; + const CauseCodeType CauseCodeType_adverseWeatherCondition_Precipitation_ := 19; + const CauseCodeType CauseCodeType_slowVehicle_ := 26; + const CauseCodeType CauseCodeType_dangerousEndOfQueue_ := 27; + const CauseCodeType CauseCodeType_vehicleBreakdown_ := 91; + const CauseCodeType CauseCodeType_postCrash_ := 92; + const CauseCodeType CauseCodeType_humanProblem_ := 93; + const CauseCodeType CauseCodeType_stationaryVehicle_ := 94; + const CauseCodeType CauseCodeType_emergencyVehicleApproaching_ := 95; + const CauseCodeType CauseCodeType_hazardousLocation_DangerousCurve_ := 96; + const CauseCodeType CauseCodeType_collisionRisk_ := 97; + const CauseCodeType CauseCodeType_signalViolation_ := 98; + const CauseCodeType CauseCodeType_dangerousSituation_ := 99; + + } // end group causeCodes + + group subCauseCodes { + + const SubCauseCodeType SubCauseCodeType_unavailable_ := 0; + + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_unavailable_ := 0; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_increasedVolumeOfTraffic_ := 1; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamSlowlyIncreasing_ := 2; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamIncreasing_ := 3; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamStronglyIncreasing_ := 4; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficStationary_ := 5; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamSlightlyDecreasing_ := 6; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamDecreasing_ := 7; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamStronglyDecreasing_ := 8; + + const AccidentSubCauseCode AccidentSubCauseCode_unavailable_ := 0; + const AccidentSubCauseCode AccidentSubCauseCode_multiVehicleAccident_ := 1; + const AccidentSubCauseCode AccidentSubCauseCode_heavyAccident_ := 2; + const AccidentSubCauseCode AccidentSubCauseCode_accidentInvolvingLorry_ := 3; + const AccidentSubCauseCode AccidentSubCauseCode_accidentInvolvingBus_ := 4; + const AccidentSubCauseCode AccidentSubCauseCode_accidentInvolvingHazardousMaterials_ := 5; + const AccidentSubCauseCode AccidentSubCauseCode_accidentOnOppositeLane_ := 6; + const AccidentSubCauseCode AccidentSubCauseCode_unsecuredAccident_ := 7; + const AccidentSubCauseCode AccidentSubCauseCode_assistanceRequested_ := 8; + + const RoadworksSubCauseCode RoadworksSubCauseCode_unavailable_ := 0; + const RoadworksSubCauseCode RoadworksSubCauseCode_majorRoadworks_ := 1; + const RoadworksSubCauseCode RoadworksSubCauseCode_roadMarkingWork_ := 2; + const RoadworksSubCauseCode RoadworksSubCauseCode_slowMovingRoadMaintenance_ := 3; + const RoadworksSubCauseCode RoadworksSubCauseCode_shortTermStationaryRoadworks_ := 4; + const RoadworksSubCauseCode RoadworksSubCauseCode_streetCleaning_ := 5; + const RoadworksSubCauseCode RoadworksSubCauseCode_winterService_ := 6; + + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_unavailable_ := 0; + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_childrenOnRoadway_ := 1; + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_cyclistOnRoadway_ := 2; + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_motorcyclistOnRoadway_ := 3; + + const WrongWayDrivingSubCauseCode WrongWayDrivingSubCauseCode_unavailable_ := 0; + const WrongWayDrivingSubCauseCode WrongWayDrivingSubCauseCode_wrongLane_ := 1; + const WrongWayDrivingSubCauseCode WrongWayDrivingSubCauseCode_wrongDirection_ := 2; + + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_strongWinds_ := 1; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_damagingHail_ := 2; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_hurricane_ := 3; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_thunderstorm_ := 4; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tornado_ := 5; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_blizzard_ := 6; + + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_heavyFrostOnRoad_ := 1; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_fuelOnRoad_ := 2; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_mudOnRoad_ := 3; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_snowOnRoad_ := 4; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_iceOnRoad_ := 5; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_blackIceOnRoad_ := 6; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_oilOnRoad_ := 7; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_looseChippings_ := 8; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_instantBlackIce_ := 9; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_roadsSalted_ := 10; + + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_fog_ := 1; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_smoke_ := 2; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_heavySnowfall_ := 3; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_heavyRain_ := 4; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_heavyHail_ := 5; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_lowSunGlare_ := 6; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_sandstorms_ := 7; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_swarmsOfInsects_ := 8; + + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_heavyRain_ := 1; + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_heavySnowfall_ := 2; + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_softHail_ := 3; + + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_unavailable_ := 0; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_maintenanceVehicle_ := 1; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_vehiclesSlowingToLookAtAccident_ := 2; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_abnormalLoad_ := 3; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_abnormalWideLoad_ := 4; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_convoy_ := 5; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_snowplough_ := 6; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_deicing_ := 7; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_saltingVehicles_ := 8; + + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_unavailable_ := 0; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_humanProblem_ := 1; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_vehicleBreakdown_ := 2; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_postCrash_ := 3; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_publicTransportStop_ := 4; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_carryingDangerousGoods_ := 5; + + const HumanProblemSubCauseCode HumanProblemSubCauseCode_unavailable_ := 0; + const HumanProblemSubCauseCode HumanProblemSubCauseCode_glycemiaProblem_ := 1; + const HumanProblemSubCauseCode HumanProblemSubCauseCode_heartProblem_ := 2; + + const EmergencyVehicleApproachingSubCauseCode EmergencyVehicleApproachingSubCauseCode_unavailable_ := 0; + const EmergencyVehicleApproachingSubCauseCode EmergencyVehicleApproachingSubCauseCode_emergencyVehicleApproaching_ := 1; + const EmergencyVehicleApproachingSubCauseCode EmergencyVehicleApproachingSubCauseCode_prioritizedVehicleApproaching_ := 2; + + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_unavailable_ := 0; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_dangerousLeftTurnCurve_ := 1; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_dangerousRightTurnCurve_ := 2; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithUnknownTurningDirection_ := 3; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithLeftTurn_ := 4; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithRightTurn_ := 5; + + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_unavailable_ := 0; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_rockfalls_ := 1; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_earthquakeDamage_ := 2; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_sewerCollapse_ := 3; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_subsidence_ := 4; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_snowDrifts_ := 5; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_stormDamage_ := 6; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_burstPipe_ := 7; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_volcanoEruption_ := 8; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_fallingIce_ := 9; + + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_unavailable_ := 0; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_shedLoad_ := 1; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_partsOfVehicles_ := 2; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_partsOfTyres_ := 3; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_bigObjects_ := 4; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_fallenTrees_ := 5; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_hubCaps_ := 6; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_waitingVehicles_ := 7; + + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_unavailable_ := 0; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_wildAnimals_ := 1; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_herdOfAnimals_ := 2; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_smallAnimals_ := 3; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_largeAnimals_ := 4; + + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_unavailable_ := 0; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_longitudinalCollisionRisk_ := 1; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_crossingCollisionRisk_ := 2; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_lateralCollisionRisk_ := 3; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_vulnerableRoadUser_ := 4; + + const SignalViolationSubCauseCode SignalViolationSubCauseCode_unavailable_ := 0; + const SignalViolationSubCauseCode SignalViolationSubCauseCode_stopSignViolation_ := 1; + const SignalViolationSubCauseCode SignalViolationSubCauseCode_trafficLightViolation_ := 2; + const SignalViolationSubCauseCode SignalViolationSubCauseCode_turningRegulationViolation_ := 3; + + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_unavailable_ := 0; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_emergencyVehicles_ := 1; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_rescueHelicopterLanding_ := 2; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_policeActivityOngoing_ := 3; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_medicalEmergencyOngoing_ := 4; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_childAbductionInProgress_ := 5; + + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_unavailable_ := 0; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_suddenEndOfQueue_ := 1; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_queueOverHill_ := 2; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_queueAroundBend_ := 3; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_queueInTunnel_ := 4; + + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_unavailable_ := 0; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_emergencyElectronicBrakeEngaged_ := 1; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_preCrashSystemEngaged_ := 2; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_espEngaged_ := 3; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_absEngaged_ := 4; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_aebEngaged_ := 5; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_brakeWarningEngaged_ := 6; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_collisionRiskWarningEngaged_ := 7; + + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_unavailable_ := 0; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_lackOfFuel_ := 1; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_lackOfBatteryPower_ := 2; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_engineProblem_ := 3; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_transmissionProblem_ := 4; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_engineCoolingProblem_ := 5; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_brakingSystemProblem_ := 6; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_steeringProblem_ := 7; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_tyrePuncture_ := 8; + + const PostCrashSubCauseCode PostCrashSubCauseCode_unavailable_ := 0; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithoutECallTriggered_ := 1; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithECallManuallyTriggered_ := 2; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithECallAutomaticallyTriggered_ := 3; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithECallTriggeredWithoutAccessToCellularNetwork_ := 4; + + } // End of group subCauseCodes + + } // End of group commonConstants + +} // End of module LibIts_ASN1_NamedNumbers diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn new file mode 100644 index 0000000..c1910b5 --- /dev/null +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -0,0 +1,16 @@ +module LibItsDenm_EncdecDeclarations { + + import from LibItsDenm_TestSystem all; + import from DENM_PDU_Descriptions language "ASN.1:1997" all; + + external function fx_enc_DenmReq (DenmReq p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_enc_DENM (DENM p) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + + /* not needed yet, no decvalue is used in TTCN-3 code + external function fx_dec_DenmReq (inout bitstring b, out DenmReq p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + */ +} // End of module LibItsDenm_EncdecDeclarations diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn new file mode 100644 index 0000000..ecfefbd --- /dev/null +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn @@ -0,0 +1,31 @@ +module LibItsGeoNetworking_EncdecDeclarations { + + import from LibItsGeoNetworking_TypesAndValues all; + + external function fx_enc_GeoNetworkingPdu (GeoNetworkingPdu p) return bitstring + with {extension "prototype(convert) encode(LibItsGeoNetworking)"} + + external function fx_dec_GeoNetworkingPdu (inout bitstring b, out GeoNetworkingPdu p) return integer + with {extension "prototype(sliding) decode(LibItsGeoNetworking)"} + + external function fx_enc_Payload (Payload p) return bitstring + with {extension "prototype(convert) encode(LibItsGeoNetworking)"} + + external function fx_dec_Payload (inout bitstring b, out Payload p) return integer + with {extension "prototype(sliding) decode(LibItsGeoNetworking)"} + + external function fx_enc_GnNonSecuredPacket (GnNonSecuredPacket p) return bitstring + with {extension "prototype(convert) encode(LibItsGeoNetworking)"} + + external function fx_dec_GnNonSecuredPacket (inout bitstring b, out GnNonSecuredPacket p) return integer + with {extension "prototype(sliding) decode(LibItsGeoNetworking)"} + + /* + external function fx_enc_GeoSecuredMessage (GeoNetworkingPacket.securedMsg p) return bitstring + with {extension "prototype(convert) encode(LibItsSecurity)"} + + external function fx_dec_GeoSecuredMessage (inout bitstring b, out GeoNetworkingPacket.securedMsg p) return integer + with {extension "prototype(sliding) decode(LibItsSecurity)"} + */ + +} // End of module LibItsGeoNetworking_EncdecDeclarations diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 2a2229d..c28b685 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -38,6 +38,7 @@ module LibItsGeoNetworking_Functions { import from LibItsGeoNetworking_Templates all; import from LibItsGeoNetworking_Pixits all; import from LibItsGeoNetworking_Pics all; + import from LibItsGeoNetworking_EncdecDeclarations all; group utFuntions { diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index 82c039d..64c1dc3 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -21,6 +21,7 @@ module LibItsGeoNetworking_Templates { // LibItsBtp import from LibItsBtp_Templates all; + import from LibItsBtp_EncdecDeclarations all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; @@ -34,6 +35,7 @@ module LibItsGeoNetworking_Templates { import from LibItsGeoNetworking_TestSystem all; import from LibItsGeoNetworking_TypesAndValues all; import from LibItsGeoNetworking_Pixits all; + import from LibItsGeoNetworking_EncdecDeclarations all; group geoNwPrimitivesTemplates { diff --git a/ttcn/IVIM/LibItsIvim_ASN1_IVInamedNumbers.ttcn b/ttcn/IVIM/LibItsIvim_ASN1_IVInamedNumbers.ttcn new file mode 100644 index 0000000..86cea96 --- /dev/null +++ b/ttcn/IVIM/LibItsIvim_ASN1_IVInamedNumbers.ttcn @@ -0,0 +1,17 @@ +//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 IviStatus IviStatus_new_ := 0; + const IviStatus IviStatus_update_ := 1; + const IviStatus IviStatus_cancellation_ := 2; + const IviStatus IviStatus_negation_ := 3; + + + } // end IVI_constants + +} // End of module LibItsIvim_ASN1_IVInamedNumbers diff --git a/ttcn/IVIM/LibItsIvim_EncdecDeclarations.ttcn b/ttcn/IVIM/LibItsIvim_EncdecDeclarations.ttcn new file mode 100644 index 0000000..427068a --- /dev/null +++ b/ttcn/IVIM/LibItsIvim_EncdecDeclarations.ttcn @@ -0,0 +1,9 @@ +module LibItsIvim_EncdecDeclarations { + + // LibIts + import from IVIM_PDU_Descriptions all; + + external function fx_enc_IVIM (IVIM p) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + +} diff --git a/ttcn/IVIM/LibItsIvim_Templates.ttcn b/ttcn/IVIM/LibItsIvim_Templates.ttcn index 60dfb43..eb02a28 100644 --- a/ttcn/IVIM/LibItsIvim_Templates.ttcn +++ b/ttcn/IVIM/LibItsIvim_Templates.ttcn @@ -26,11 +26,13 @@ module LibItsIvim_Templates { 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_TestSystem all; import from LibItsIvim_TypesAndValues all; import from LibItsIvim_Functions all; + import from LibItsIvim_ASN1_IVInamedNumbers all; group asn1Constants { } // End of group asn1Constants diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_EncdecDeclarations.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_EncdecDeclarations.ttcn new file mode 100644 index 0000000..c2e0861 --- /dev/null +++ b/ttcn/MapemSpatem/LibItsMapemSpatem_EncdecDeclarations.ttcn @@ -0,0 +1,19 @@ +module LibItsMapemSpatem_EncdecDeclarations { + + // LibIts + import from MAPEM_PDU_Descriptions all; + import from SPATEM_PDU_Descriptions all; + + external function fx_enc_MAPEM (MAPEM pdu) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + + external function fx_dec_MAPEM (octetstring stream) return MAPEM + with {extension "prototype(convert) decode(BER:BER_ACCEPT_ALL)"} + + external function fx_enc_SPATEM (SPATEM pdu) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + + external function fx_dec_SPATEM (octetstring stream) return SPATEM + with {extension "prototype(convert) decode(BER:BER_ACCEPT_ALL)"} + +} // End of module LibItsMapemSpatem_EncdecDeclarations diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn index eac85ed..9471f39 100644 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn +++ b/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn @@ -24,6 +24,8 @@ module LibItsMapemSpatem_Templates { // 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_TestSystem all; diff --git a/ttcn/Security/LibItsSecurity_EncdecDeclarations.ttcn b/ttcn/Security/LibItsSecurity_EncdecDeclarations.ttcn new file mode 100644 index 0000000..9708128 --- /dev/null +++ b/ttcn/Security/LibItsSecurity_EncdecDeclarations.ttcn @@ -0,0 +1,31 @@ +module LibItsSecurity_EncdecDeclarations { + + import from LibItsSecurity_TypesAndValues all; + + //encoding functions + external function fx_enc_SecuredMessage (SecuredMessage p) return bitstring + with {extension "prototype(convert) encode(LibItsSecurity)"} + + external function fx_enc_ToBeSignedSecuredMessage (ToBeSignedSecuredMessage p) return bitstring + with {extension "prototype(convert) encode(LibItsSecurity)"} + + external function fx_enc_Certificate (Certificate p) return bitstring + with {extension "prototype(convert) encode(LibItsSecurity)"} + + external function fx_enc_ToBeSignedCertificate (ToBeSignedCertificate p) return bitstring + with {extension "prototype(convert) encode(LibItsSecurity)"} + /* + //decoding functions + external function fx_dec_SecuredMessage (inout bitstring b, out SecuredMessage p) return integer + with {extension "prototype(sliding) decode(LibItsSecurity)"} + + external function fx_dec_ToBeSignedSecuredMessage (inout bitstring b, out ToBeSignedSecuredMessage p) return integer + with {extension "prototype(sliding) decode(LibItsSecurity)"} + */ + external function fx_dec_Certificate (inout bitstring b, out Certificate p) return integer + with {extension "prototype(sliding) decode(LibItsSecurity)"} + /* + external function fx_dec_ToBeSignedCertificate (inout bitstring b, out ToBeSignedCertificate p) return integer + with {extension "prototype(sliding) decode(LibItsSecurity)"} + */ +} // End of module LibItsSecurity_EncdecDeclarations diff --git a/ttcn/Security/LibItsSecurity_Functions.ttcn3 b/ttcn/Security/LibItsSecurity_Functions.ttcn3 index 950bdad..a941b7a 100644 --- a/ttcn/Security/LibItsSecurity_Functions.ttcn3 +++ b/ttcn/Security/LibItsSecurity_Functions.ttcn3 @@ -24,6 +24,7 @@ module LibItsSecurity_Functions { import from LibItsSecurity_Templates all; import from LibItsSecurity_Pixits all; import from LibItsSecurity_TestSystem all; + import from LibItsSecurity_EncdecDeclarations all; group helpersFunctions { diff --git a/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn b/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn new file mode 100644 index 0000000..d86dfd1 --- /dev/null +++ b/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn @@ -0,0 +1,8 @@ +module LibItsSremSsem_EncdecDeclarations { + +import from IS_DSRC all; + +external function fx_enc_SSM (SignalStatusMessage p) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + +} diff --git a/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn b/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn index b280f2c..317c717 100644 --- a/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn +++ b/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn @@ -24,6 +24,7 @@ module LibItsSremSsem_Templates { // LibItsCommon import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; + import from LibItsCommon_ASN1_NamedNumbers all; // LibItsSremSsem import from LibItsSremSsem_TestSystem all; -- GitLab From 192cacedc2e44053d512d7a8b1d6138fa4e412c3 Mon Sep 17 00:00:00 2001 From: filatov Date: Tue, 7 Feb 2017 18:22:39 +0000 Subject: [PATCH 004/320] TITANIZATION: common changes: valueof, dot notations, etc. --- ttcn/DENM/LibItsDenm_Functions.ttcn | 4 +- ttcn/DENM/LibItsDenm_Templates.ttcn | 14 +- .../LibItsGeoNetworking_Functions.ttcn | 17 +- .../LibItsGeoNetworking_Templates.ttcn | 94 +-- ttcn/IVIM/LibItsIvim_Functions.ttcn | 2 +- ttcn/IVIM/LibItsIvim_Templates.ttcn | 13 +- ...LibItsIpv6OverGeoNetworking_Functions.ttcn | 18 +- ...sIpv6OverGeoNetworking_TypesAndValues.ttcn | 2 +- .../LibItsMapemSpatem_Functions.ttcn | 2 +- .../LibItsMapemSpatem_Templates.ttcn | 16 +- ttcn/Security/LibItsSecurity_Functions.ttcn3 | 74 +- ttcn/Security/LibItsSecurity_Templates.ttcn3 | 14 +- ttcn/SremSsem/LibItsSremSsem_Templates.ttcn | 26 +- ttcn/V2G/LibItsV2G_Templates.ttcn | 33 +- ttcn/V2G/LibItsV2G_TestSystem.ttcn | 6 +- ttcn/V2G/LibItsV2G_TypesAndValues.ttcn | 159 ++-- ttcn/V2G/V2G_CI_AppProtocol.xsd | 55 ++ ttcn/V2G/V2G_CI_MsgBody.xsd | 484 ++++++++++++ ttcn/V2G/V2G_CI_MsgDataTypes.xsd | 698 ++++++++++++++++++ ttcn/V2G/V2G_CI_MsgDef.xsd | 31 + ttcn/V2G/V2G_CI_MsgHeader.xsd | 38 + ttcn/V2G/xmldsig-core-schema.xsd | 308 ++++++++ 22 files changed, 1900 insertions(+), 208 deletions(-) create mode 100644 ttcn/V2G/V2G_CI_AppProtocol.xsd create mode 100644 ttcn/V2G/V2G_CI_MsgBody.xsd create mode 100644 ttcn/V2G/V2G_CI_MsgDataTypes.xsd create mode 100644 ttcn/V2G/V2G_CI_MsgDef.xsd create mode 100644 ttcn/V2G/V2G_CI_MsgHeader.xsd create mode 100644 ttcn/V2G/xmldsig-core-schema.xsd diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn index 0191c15..8ca735f 100644 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ b/ttcn/DENM/LibItsDenm_Functions.ttcn @@ -550,7 +550,9 @@ module LibItsDenm_Functions { ) ); - return valueof(p_denm.management).actionID; +//FIXME RGY Titan doesn't support dot notation after valueof at the moment +// return valueof(p_denm.management).actionID; + return valueof(p_denm.management.actionID); } } // end sendFunctions diff --git a/ttcn/DENM/LibItsDenm_Templates.ttcn b/ttcn/DENM/LibItsDenm_Templates.ttcn index bd760fa..bba7008 100644 --- a/ttcn/DENM/LibItsDenm_Templates.ttcn +++ b/ttcn/DENM/LibItsDenm_Templates.ttcn @@ -23,6 +23,7 @@ module LibItsDenm_Templates { import from LibItsCommon_TypesAndValues all; import from LibItsCommon_Functions all; import from LibItsCommon_Pixits all; + import from LibItsCommon_ASN1_NamedNumbers all; // LibItsDenm import from LibItsDenm_TestSystem all; @@ -83,7 +84,9 @@ module LibItsDenm_Templates { * @param p_gnLifetime GN packet lifetime value (ms) * @param p_gnTrafficClass GN traffic class value */ - template DenmInd mw_denmIndWithGnParameters ( +//FIXME RGY template restriction can be the same as its base template: used in receiving operations only, where single "omit" is not allowed +// template DenmInd mw_denmIndWithGnParameters ( + template(present) DenmInd mw_denmIndWithGnParameters ( template (present) DENM p_denMsg, in template UInt8 p_gnNextHeader := *, in template UInt8 p_gnHeaderType := *, @@ -104,7 +107,8 @@ module LibItsDenm_Templates { * @param p_ssp SSP security parameter * @param p_its_aid ITS-AID value */ - template DenmInd mw_denmIndWithSecurityParameters( +//FIXME RGY Titan currently requires the modifyied template to have the same restriction as the base template + template (present) DenmInd mw_denmIndWithSecurityParameters( template (present) DENM p_denMsg, template Bit256 p_ssp := *, template UInt32 p_its_aid := c_its_aid_DENM @@ -119,7 +123,9 @@ module LibItsDenm_Templates { * @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 DenmInd mw_denmIndWithBtpParameters ( +//FIXME RGY template restriction can be the same as its base template: template is not used currently +// template DenmInd mw_denmIndWithBtpParameters ( + template(present) DenmInd mw_denmIndWithBtpParameters ( template (present) DENM p_denMsg, in template UInt16 p_btpDestinationPort := *, in template UInt16 p_btpInfo := * @@ -350,8 +356,8 @@ module LibItsDenm_Templates { template (value) Longitude p_longitude := f_getTsLongitude(), template (value) Latitude p_latitude := f_getTsLatitude() ) := { - longitude := p_longitude, latitude := p_latitude, + longitude := p_longitude, positionConfidenceEllipse := m_posConfidenceEllipse, altitude := m_altitude } diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index c28b685..34f189f 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -911,8 +911,9 @@ module LibItsGeoNetworking_Functions { position := p_positionValue }; } - - function @deterministic f_fillTimestamp(inout LongPosVector v_vector) +//FIXME RGY Titan doesn't support @deterministic yet +// function @deterministic f_fillTimestamp(inout LongPosVector v_vector) + function f_fillTimestamp(inout LongPosVector v_vector) return LongPosVector { if (v_vector.timestamp_ == 0) { v_vector.timestamp_ := f_computeGnTimestamp(); @@ -1588,12 +1589,12 @@ module LibItsGeoNetworking_Functions { var LongPosVector v_repDstPosVector; [vc_gnDefaultActive] a_receiveLsRequest(p_reqSeqNumber, p_mid, v_repDstPosVector) { - f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu( + f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu( m_geoNwLsReplyPacket( p_repSrcPosVector, f_longPosVector2ShortPosVector(v_repDstPosVector), vc_localSeqNumber - )))); + ))))); } } @@ -1690,6 +1691,7 @@ module LibItsGeoNetworking_Functions { var GeoNetworkingInd v_msg; f_sendGeoNetMessage( + valueof( m_geoNwReq_linkLayerBroadcast( m_geoNwPdu( m_geoNwLsRequestPacket( @@ -1699,6 +1701,7 @@ module LibItsGeoNetworking_Functions { ) ) ) + ) ); tc_ac.start; @@ -2521,7 +2524,9 @@ module LibItsGeoNetworking_Functions { mw_geoNwSecPdu( p_InSecMsg, mw_geoNwAnyPacket_withPayload(?) - ))) -> value (v_geoNw) { +//FIXME RGY Titan doesn't support storing list at the moment +// ))) -> value (v_geoNw) { + ))) -> value v_geoNw { p_received := f_getSecuredMessage(v_geoNw.msgIn); } } @@ -2779,7 +2784,7 @@ module LibItsGeoNetworking_Functions { f_HashedId3FromHashedId8( valueof(p_digest) )) - }, + } "" ); diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index 64c1dc3..0f890cf 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -109,7 +109,7 @@ module LibItsGeoNetworking_Templates { geoUnicast := { gnAddress := p_destinationGnAddr, lifetime := c_lifetime, - trafficClass := m_trafficClass, + trafficClass := valueof(m_trafficClass), payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here } } @@ -186,7 +186,7 @@ module LibItsGeoNetworking_Templates { geoBroadcast := { shape := p_geoArea.shape, lifetime := c_lifetime, - trafficClass := m_trafficClass, + trafficClass := valueof(m_trafficClass), reserved := c_uInt24Zero, area := p_geoArea.area, payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here @@ -246,7 +246,7 @@ module LibItsGeoNetworking_Templates { geoAnycast := { shape := p_geoArea.shape, lifetime := c_lifetime, - trafficClass := m_trafficClass, + trafficClass := valueof(m_trafficClass), reserved := c_uInt24Zero, area := p_geoArea.area, payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here @@ -288,7 +288,7 @@ module LibItsGeoNetworking_Templates { */ template (value) UtGnTrigger m_generateShbMessage := { shb := { - trafficClass := m_trafficClass, + trafficClass := valueof(m_trafficClass), payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here } } @@ -326,7 +326,7 @@ module LibItsGeoNetworking_Templates { tsb := { nbHops := 10, lifetime := c_lifetime, - trafficClass := m_trafficClass, + trafficClass := valueof(m_trafficClass), payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here } } @@ -376,7 +376,7 @@ module LibItsGeoNetworking_Templates { template (value) BeaconHeader p_beaconHeader ) := { startBeaconing := { - beaconPacket := m_geoNwPdu(m_geoNwBeaconPacket(p_beaconHeader.srcPosVector), -, c_hopLimit1) + beaconPacket := m_geoNwPdu(valueof(m_geoNwBeaconPacket(valueof(p_beaconHeader.srcPosVector))), -, c_hopLimit1) } } @@ -419,7 +419,7 @@ module LibItsGeoNetworking_Templates { integer p_numberOfNeighbour ) := { startBeaconingMultipleNeighbour := { - beaconPacket := m_geoNwPdu(m_geoNwBeaconPacket(p_beaconHeader.srcPosVector), -, c_hopLimit1), + beaconPacket := m_geoNwPdu(valueof(m_geoNwBeaconPacket(valueof(p_beaconHeader.srcPosVector))), -, c_hopLimit1), numberOfNeighbour := p_numberOfNeighbour } } @@ -539,11 +539,11 @@ module LibItsGeoNetworking_Templates { in template (value) CommonHeader p_commonHeader, in template (value) ExtendedHeader p_extHeader ) := { - packet := { + packet := valueof({ commonHeader := p_commonHeader, extendedHeader := p_extHeader, payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - }, + }), securedMsg := omit } @@ -577,7 +577,7 @@ module LibItsGeoNetworking_Templates { in template (value) octetstring p_payload ) modifies m_geoNwPacket := { packet := { - payload := f_adaptPayload_m(p_payload) + payload := valueof(f_adaptPayload_m(p_payload)) } } @@ -623,7 +623,9 @@ module LibItsGeoNetworking_Templates { * * @see mw_geoNwPacket */ - template GeoNetworkingPacket mw_geoNwPduAnyPayload( +//FIXME RGY template restriction can be the same as its base template: template is not used currently +// template GeoNetworkingPacket mw_geoNwPduAnyPayload( + template(present) GeoNetworkingPacket mw_geoNwPduAnyPayload( in template (present) CommonHeader p_commonHeader, in template (present) ExtendedHeader p_extHeader ) modifies mw_geoNwPacket := { @@ -640,7 +642,9 @@ module LibItsGeoNetworking_Templates { * * @see mw_geoNwPacket */ - template GeoNetworkingPacket mw_geoNwPduWithOctetstringPayload( +//FIXME RGY template restriction can be the same as its base template: template is not used currently +// template GeoNetworkingPacket mw_geoNwPduWithOctetstringPayload( + template(present) GeoNetworkingPacket mw_geoNwPduWithOctetstringPayload( in template (present) CommonHeader p_commonHeader, in template (present) ExtendedHeader p_extHeader, in template (present) octetstring p_payload @@ -658,7 +662,9 @@ module LibItsGeoNetworking_Templates { * * @see mw_geoNwPacket */ - template GeoNetworkingPacket mw_geoNwPduWithPayload( +//FIXME RGY template restriction can be the same as its base template: used in TC_SEC_ITSS_SND_CAM_02_01_BV only, where is called with parameters +// template GeoNetworkingPacket mw_geoNwPduWithPayload( + template(present) GeoNetworkingPacket mw_geoNwPduWithPayload( in template (present) CommonHeader p_commonHeader, in template (present) ExtendedHeader p_extHeader, in template (present) Payload p_payload @@ -716,18 +722,18 @@ module LibItsGeoNetworking_Templates { in template (value) UInt8 p_hopLimit := c_defaultHopLimit, in template (value) TrafficClass p_trafficClass := m_trafficClass ) := { - commonHeader := m_commonHeader( + commonHeader := valueof(m_commonHeader( PX_GN_UPPER_LAYER, m_geoUnicastHeaderType, p_trafficClass, p_hopLimit - ), - extendedHeader := m_geoUnicastHeader( + )), + extendedHeader := valueof(m_geoUnicastHeader( p_sourceLongPosVec, p_destinationShortPosVec, p_seqNumber - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) + )), + payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) } /** @@ -827,18 +833,18 @@ module LibItsGeoNetworking_Templates { in template (value) UInt8 p_hopLimit := c_defaultHopLimit, in template (value) TrafficClass p_trafficClass := m_trafficClass ) := { - commonHeader := m_commonHeader( + commonHeader := valueof(m_commonHeader( PX_GN_UPPER_LAYER, - m_geoAnycastHeaderType(p_anycastArea.geoAnycastSubType), + m_geoAnycastHeaderType(valueof(p_anycastArea.geoAnycastSubType)), p_trafficClass, p_hopLimit - ), - extendedHeader := m_geoAnycastHeader( + )), + extendedHeader := valueof(m_geoAnycastHeader( p_sourceLongPosVec, p_seqNumber, p_anycastArea - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) + )), + payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) } /** @@ -941,18 +947,18 @@ module LibItsGeoNetworking_Templates { in template (value) UInt8 p_hopLimit := c_defaultHopLimit, in template (value) TrafficClass p_trafficClass := m_trafficClass ) := { - commonHeader := m_commonHeader( + commonHeader := valueof(m_commonHeader( PX_GN_UPPER_LAYER, - m_geoBroadcastHeaderType(p_broadcastArea.geoBroadcastSubType), + m_geoBroadcastHeaderType(valueof(p_broadcastArea.geoBroadcastSubType)), p_trafficClass, p_hopLimit - ), - extendedHeader := m_geoBroadcastHeader( + )), + extendedHeader := valueof(m_geoBroadcastHeader( p_sourceLongPosVec, p_seqNumber, p_broadcastArea - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) + )), + payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) } /** @@ -1244,16 +1250,16 @@ module LibItsGeoNetworking_Templates { template (value) GnNonSecuredPacket m_geoNwShbPacket( in template (value) LongPosVector p_sourceLongPosVec ) := { - commonHeader := m_commonHeader( + commonHeader := valueof(m_commonHeader( PX_GN_UPPER_LAYER, m_shbHeaderType, m_trafficClass, c_defaultHopLimit - ), - extendedHeader := m_shbHeader( + )), + extendedHeader := valueof(m_shbHeader( p_sourceLongPosVec - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) + )), + payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) } /** @@ -1290,17 +1296,17 @@ module LibItsGeoNetworking_Templates { in template (value) UInt8 p_hopLimit := c_defaultHopLimit, in template (value) TrafficClass p_trafficClass := m_trafficClass ) := { - commonHeader := m_commonHeader( + commonHeader := valueof(m_commonHeader( PX_GN_UPPER_LAYER, m_tsbHeaderType, p_trafficClass, p_hopLimit - ), - extendedHeader := m_tsbHeader( + )), + extendedHeader := valueof(m_tsbHeader( p_seqNumber, p_sourceLongPosVec - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) + )), + payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) } /** @@ -1776,7 +1782,7 @@ module LibItsGeoNetworking_Templates { in template (value) UInt16 p_seqNumber, in template (value) GeoBroadcastArea p_broadcastArea ) := { - geoBroadcastHeader := { + geoBroadcastHeader := valueof({ seqNumber := p_seqNumber, reserved := c_uInt8Zero, srcPosVector := p_sourceLongPosVec, @@ -1786,7 +1792,7 @@ module LibItsGeoNetworking_Templates { distanceB := p_broadcastArea.geoBroadcastArea.distanceB, angle := p_broadcastArea.geoBroadcastArea.angle, reserved2 := c_uInt24Zero - } + }) } /** @@ -1885,7 +1891,7 @@ module LibItsGeoNetworking_Templates { in template (value) UInt16 p_seqNumber, in template (value) GeoAnycastArea p_anycastArea ) := { - geoAnycastHeader := { + geoAnycastHeader := valueof({ seqNumber := p_seqNumber, reserved := c_uInt8Zero, srcPosVector := p_sourceLongPosVec, @@ -1895,7 +1901,7 @@ module LibItsGeoNetworking_Templates { distanceB := p_anycastArea.geoAnycastArea.distanceB, angle := p_anycastArea.geoAnycastArea.angle, reserved2 := c_uInt24Zero - } + }) } /** diff --git a/ttcn/IVIM/LibItsIvim_Functions.ttcn b/ttcn/IVIM/LibItsIvim_Functions.ttcn index 9b3e451..01e8229 100644 --- a/ttcn/IVIM/LibItsIvim_Functions.ttcn +++ b/ttcn/IVIM/LibItsIvim_Functions.ttcn @@ -373,7 +373,7 @@ module LibItsIvim_Functions { var FncRetCode v_ret := e_success; if (valueof(p_trigger) == e_ets) { - f_sendIviMessage(m_ivimStructureCancellation(p_iviIdentificationNumber)); + f_sendIviMessage(valueof(m_ivimStructureCancellation(p_iviIdentificationNumber))); f_sleep(PX_TNOAC); } else { diff --git a/ttcn/IVIM/LibItsIvim_Templates.ttcn b/ttcn/IVIM/LibItsIvim_Templates.ttcn index eb02a28..51a5982 100644 --- a/ttcn/IVIM/LibItsIvim_Templates.ttcn +++ b/ttcn/IVIM/LibItsIvim_Templates.ttcn @@ -77,7 +77,9 @@ module LibItsIvim_Templates { * @param p_gnLifetime GN packet lifetime value (ms) * @param p_gnTrafficClass GN traffic class value */ - template IvimInd mw_ivimIndWithGnParameters ( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template IvimInd mw_ivimIndWithGnParameters ( + template(present) IvimInd mw_ivimIndWithGnParameters ( template (present) IVIM p_iviMsg, in template UInt8 p_gnNextHeader := *, in template UInt8 p_gnHeaderType := *, @@ -98,7 +100,9 @@ module LibItsIvim_Templates { * @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 ( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template IvimInd mw_ivimIndWithBtpParameters ( + template(present) IvimInd mw_ivimIndWithBtpParameters ( template (present) IVIM p_iviMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * @@ -113,7 +117,8 @@ module LibItsIvim_Templates { * @param p_ssp SSP security parameter * @param p_its_aid ITS-AID value */ - template IvimInd mw_ivimIndWithSecurityParameters ( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base + template(present) IvimInd mw_ivimIndWithSecurityParameters ( template (present) IVIM p_iviMsg, template Bit256 p_ssp := *, template UInt32 p_its_aid := * @@ -310,7 +315,7 @@ module LibItsIvim_Templates { template (value) IviStructure m_ivimStructureCancellation( in template (value) IviIdentificationNumber p_iviIdentificationNumber ) := { - mandatory := m_iviManagementContainer(f_getProvider(), p_iviIdentificationNumber, IviStatus_cancellation_), + mandatory := valueof(m_iviManagementContainer(f_getProvider(), valueof(p_iviIdentificationNumber), IviStatus_cancellation_)), optional_ := omit } // End of template m_ivimStructureCancellation diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn index f2944b8..3039b86 100644 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn @@ -296,12 +296,14 @@ module LibItsIpv6OverGeoNetworking_Functions { var LongPosVector v_nodeLongPosVector := f_getPosition(p_compName); f_sendGeoNetMessageWithPayload( - m_geoNwReq_linkLayerBroadcast( - m_geoNwPdu( - m_geoNwBroadcastPacket( - v_nodeLongPosVector, - vc_localSeqNumber, - f_getGeoBroadcastArea(valueof(p_gvl.area)) + valueof( + m_geoNwReq_linkLayerBroadcast( + m_geoNwPdu( + m_geoNwBroadcastPacket( + v_nodeLongPosVector, + vc_localSeqNumber, + f_getGeoBroadcastArea(valueof(p_gvl.area)) + ) ) ) ), @@ -312,12 +314,12 @@ module LibItsIpv6OverGeoNetworking_Functions { c_icmpHdr, m_rtAdvWithOptions( m_rtAdvOpt_prefixOpt( - p_gvl.prefixLength, + valueof(p_gvl.prefixLength), c_lFlag1, c_aFlag1, p_validLifetime, c_preferredLifetime30s, - p_gvl.prefix + valueof(p_gvl.prefix) ) ) ) diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn index 4869101..299f523 100644 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn @@ -189,7 +189,7 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { UInt32 reachableTime, UInt32 retransTimer, RtAdvOptions rtAdvOptions optional - } with { variant (checksum) "MarkForIPv6ChecksumCalculation" } + } // FIXME CHECK while TITAN refuse it: with { variant (checksum) "MarkForIPv6ChecksumCalculation" } /** * @desc RouterAdvertisement option list diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn index 09372f0..c3a7119 100644 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn +++ b/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn @@ -332,6 +332,6 @@ module LibItsMapemSpatem_Functions { } } - } // End of receiveFunctions + } // End of group receiveFunctions } // End of module LibItsMapemSpatem_Functions \ No newline at end of file diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn index 9471f39..18be828 100644 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn +++ b/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn @@ -93,7 +93,9 @@ module LibItsMapemSpatem_Templates { * @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 MapemInd mw_mapemIndWithBtpParameters( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template MapemInd mw_mapemIndWithBtpParameters( + template(present) MapemInd mw_mapemIndWithBtpParameters( template (present) MAPEM p_mapemMsg, in template UInt16 p_btpDestinationPort := *, in template UInt16 p_btpInfo := * @@ -176,7 +178,9 @@ module LibItsMapemSpatem_Templates { * @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 SpatemInd mw_spatemIndWithBtpParameters( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template SpatemInd mw_spatemIndWithBtpParameters( + template(present) SpatemInd mw_spatemIndWithBtpParameters( template (present) SPATEM p_spatemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * @@ -387,7 +391,9 @@ module LibItsMapemSpatem_Templates { /** * @desc Receive template for MAPEM Message */ - template (omit) MapData m_mapem( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template (omit) MapData m_mapem( + template (value) MapData m_mapem( in template (value) MsgCount p_msgIssueRevision, in template (omit) IntersectionGeometryList p_intersectionGeometryList := omit, in template (omit) RoadSegmentList p_roadSegments := omit @@ -563,7 +569,9 @@ module LibItsMapemSpatem_Templates { /** * @desc Send template for SPAT Message */ - template (omit) SPAT m_spatem( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template (omit) SPAT m_spatem( + template (value) SPAT m_spatem( in template (value) IntersectionStateList p_intersections, in template (omit) DescriptiveName p_name := omit ) modifies m_defaultSpatem:= { diff --git a/ttcn/Security/LibItsSecurity_Functions.ttcn3 b/ttcn/Security/LibItsSecurity_Functions.ttcn3 index a941b7a..a6908da 100644 --- a/ttcn/Security/LibItsSecurity_Functions.ttcn3 +++ b/ttcn/Security/LibItsSecurity_Functions.ttcn3 @@ -273,7 +273,7 @@ module LibItsSecurity_Functions { ); p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, + valueof(v_toBeSignedSecuredMessage.header_fields), p_payloadField, { m_trailer_field_signature( @@ -418,14 +418,14 @@ module LibItsSecurity_Functions { // log("p_trailerStatus=", p_trailerStatus); if (p_trailerStatus == 0) { // No signature p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, + valueof(v_toBeSignedSecuredMessage.header_fields), p_payloadField, { } ); v_trailerSize := 0; } else if (p_trailerStatus == 2) { // Duplicate signature p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, + valueof(v_toBeSignedSecuredMessage.header_fields), p_payloadField, { m_trailer_field_signature( @@ -453,7 +453,7 @@ module LibItsSecurity_Functions { } else if (p_trailerStatus == 3) { // Signature with reserved algorthm p_securedMessage := m_securedMessage_wrong_protocol( p_protocolVersion, - v_toBeSignedSecuredMessage.header_fields, + valueof(v_toBeSignedSecuredMessage.header_fields), p_payloadField, { m_trailer_field_signature( @@ -465,7 +465,7 @@ module LibItsSecurity_Functions { ); } else { // Invalid signature p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, + valueof(v_toBeSignedSecuredMessage.header_fields), p_payloadField, { m_trailer_field_signature( @@ -1021,7 +1021,7 @@ module LibItsSecurity_Functions { if (valueof(p_issuingCertificate.subject_attributes[v_counter].type_) == e_verification_key) { return f_verifyCertificateSignatureWithPublicKey( p_certificateToBeVerified, - p_issuingCertificate.subject_attributes[v_counter].attribute.key); + valueof(p_issuingCertificate.subject_attributes[v_counter].attribute.key)); } } // End of 'for' statement @@ -1054,8 +1054,8 @@ module LibItsSecurity_Functions { // Create SecuredMessage payload to be signed v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage( - p_securedMessage.header_fields, - p_securedMessage.payload_field, + valueof(p_securedMessage.header_fields), + valueof(p_securedMessage.payload_field), e_signature ); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_toBeSignedSecuredMessage=", v_toBeSignedSecuredMessage); @@ -1108,7 +1108,7 @@ module LibItsSecurity_Functions { if (v_subjectAttribute.type_ == e_verification_key) { return f_verifyGnSecuredMessageSignatureWithPublicKey( p_securedMessage, - p_certificate.subject_attributes[v_counter].attribute.key); + valueof(p_certificate.subject_attributes[v_counter].attribute.key)); } } // End of 'for' statement @@ -1316,8 +1316,11 @@ module LibItsSecurity_Functions { ) return boolean { for (var integer i := 0; i < lengthof(p_cert.validity_restrictions); i := i + 1) { - if (valueof(p_cert).validity_restrictions[i].type_ == p_type) { - p_return := valueof(p_cert).validity_restrictions[i]; +//FIXME RGY Titan doesn't support dot notation after valueof at the moment +// if (valueof(p_cert).validity_restrictions[i].type_ == p_type) { +// p_return := valueof(p_cert).validity_restrictions[i]; + if (valueof(p_cert.validity_restrictions[i].type_) == p_type) { + p_return := valueof(p_cert.validity_restrictions[i]); return true; } } // End of 'for' statement @@ -1345,8 +1348,11 @@ module LibItsSecurity_Functions { out SubjectAttribute p_return ) return boolean { for (var integer i := 0; i < lengthof(p_cert.subject_attributes); i := i + 1) { - if (valueof(p_cert).subject_attributes[i].type_ == p_type) { - p_return := valueof(p_cert).subject_attributes[i]; +//FIXME RGY Titan doesn't support dot notation after valueof at the moment +// if (valueof(p_cert).subject_attributes[i].type_ == p_type) { +// p_return := valueof(p_cert).subject_attributes[i]; + if (valueof(p_cert.subject_attributes[i].type_) == p_type) { + p_return := valueof(p_cert.subject_attributes[i]); return true; } } @@ -1746,8 +1752,11 @@ module LibItsSecurity_Functions { in template (value) TwoDLocation p_location ) return boolean { return - (valueof(p_location).longitude != c_maxLongitude + 1) and - (valueof(p_location).latitude != c_maxLatitude + 1); +//FIXME RGY Titan doesn't support dot notation after valueof at the moment +// (valueof(p_location).longitude != c_maxLongitude + 1) and +// (valueof(p_location).latitude != c_maxLatitude + 1); + (valueof(p_location.longitude) != c_maxLongitude + 1) and + (valueof(p_location.latitude) != c_maxLatitude + 1); } // End of function f_isValidTwoDLocation /** @@ -1763,10 +1772,15 @@ module LibItsSecurity_Functions { in template (value) RectangularRegion p_r2 ) return boolean { return not ( - valueof(p_r2).northwest.longitude > valueof(p_r1).southeast.longitude or - valueof(p_r2).southeast.longitude < valueof(p_r1).northwest.longitude or - valueof(p_r2).southeast.latitude > valueof(p_r1).northwest.latitude or - valueof(p_r2).northwest.latitude < valueof(p_r1).southeast.latitude +//FIXME RGY Titan doesn't support dot notation after valueof at the moment +// valueof(p_r2).northwest.longitude > valueof(p_r1).southeast.longitude or +// valueof(p_r2).southeast.longitude < valueof(p_r1).northwest.longitude or +// valueof(p_r2).southeast.latitude > valueof(p_r1).northwest.latitude or +// valueof(p_r2).northwest.latitude < valueof(p_r1).southeast.latitude + valueof(p_r2.northwest.longitude) > valueof(p_r1.southeast.longitude) or + valueof(p_r2.southeast.longitude) < valueof(p_r1.northwest.longitude) or + valueof(p_r2.southeast.latitude) > valueof(p_r1.northwest.latitude) or + valueof(p_r2.northwest.latitude) < valueof(p_r1.southeast.latitude) ); } // End of function f_isRectangularRegionsIntersected @@ -1778,12 +1792,12 @@ module LibItsSecurity_Functions { for (v_i := 0; v_i < lengthof(p_region); v_i := v_i + 1) { var PolygonalRegion v_region_base; - f_convertRectangularRegionIntoPolygonalRegion(p_region[v_i], v_region_base); + f_convertRectangularRegionIntoPolygonalRegion(valueof(p_region[v_i]), v_region_base); v_found := false; for (v_j := 0; v_j < lengthof(p_region); v_j := v_j + 1) { if (v_j != v_i) { var PolygonalRegion v_region; - f_convertRectangularRegionIntoPolygonalRegion(p_region[v_j], v_region); + f_convertRectangularRegionIntoPolygonalRegion(valueof(p_region[v_j]), v_region); if (f_isPolygonalRegionInside(v_region, v_region_base) == true) { v_found := true; } @@ -1812,9 +1826,9 @@ module LibItsSecurity_Functions { for (v_i := 0; v_i < lengthof(p_parent); v_i := v_i + 1) { var PolygonalRegion v_region_parent, v_region; - f_convertRectangularRegionIntoPolygonalRegion(p_parent[v_i], v_region_parent); + f_convertRectangularRegionIntoPolygonalRegion(valueof(p_parent[v_i]), v_region_parent); for (v_j := 0; v_j < lengthof(p_parent); v_j := v_j + 1) { - f_convertRectangularRegionIntoPolygonalRegion(p_region[v_j], v_region); + f_convertRectangularRegionIntoPolygonalRegion(valueof(p_region[v_j]), v_region); if (f_isPolygonalRegionInside(v_region, v_region_parent) == true) { return true; } @@ -1911,24 +1925,26 @@ module LibItsSecurity_Functions { ) return boolean { var boolean v_ret := false; - select (p_region.region_type) { +//FIXME RGY valeuof is missing: argument of select case is Expression (see $19.3.1) +// select (p_region.region_type) { + select (valueof(p_region.region_type)) { case (e_none) { v_ret := true; } case (e_circle) { - v_ret := f_isLocationInsideCircularRegion(p_region.region.circular_region, p_location); + v_ret := f_isLocationInsideCircularRegion(valueof(p_region.region.circular_region), p_location); } case (e_rectangle) { - v_ret := f_isLocationInsideRectangularRegion(p_region.region.rectangular_region, p_location); + v_ret := f_isLocationInsideRectangularRegion(valueof(p_region.region.rectangular_region), p_location); } case (e_polygon) { - v_ret := f_isLocationInsidePolygonalRegion(p_region.region.polygonal_region, p_location); + v_ret := f_isLocationInsidePolygonalRegion(valueof(p_region.region.polygonal_region), p_location); } case (e_id) { - v_ret := f_isLocationInsideIdentifiedRegion(p_region.region.id_region, p_location); + v_ret := f_isLocationInsideIdentifiedRegion(valueof(p_region.region.id_region), p_location); } case else { - v_ret := f_isLocationInsideOtherRegion(p_region.region.other_region, p_location); + v_ret := f_isLocationInsideOtherRegion(valueof(p_region.region.other_region), p_location); } } diff --git a/ttcn/Security/LibItsSecurity_Templates.ttcn3 b/ttcn/Security/LibItsSecurity_Templates.ttcn3 index 473764f..eda3f56 100644 --- a/ttcn/Security/LibItsSecurity_Templates.ttcn3 +++ b/ttcn/Security/LibItsSecurity_Templates.ttcn3 @@ -42,7 +42,9 @@ module LibItsSecurity_Templates { * @desc Its AID for Other * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.3 Security profile for DENMs */ - const IntX c_its_aid_Other := PX_OTHER_ITS_AID; +//FIXME RGY definition type is changed to modulepar, as Titan doesn't support dynamic constants +// const IntX c_its_aid_Other := PX_OTHER_ITS_AID; + template IntX c_its_aid_Other := PX_OTHER_ITS_AID; /** * @desc Minimal value of Longitude @@ -2596,11 +2598,11 @@ module LibItsSecurity_Templates { template (value) ToBeSignedCertificate m_toBeSignedCertificate( in template (value) Certificate p_certificate ) := { - version := p_certificate.version, - signer_info := p_certificate.signer_info, - subject_info := p_certificate.subject_info, - subject_attributes := p_certificate.subject_attributes, - validity_restrictions := p_certificate.validity_restrictions + version := valueof(p_certificate.version), + signer_info := valueof(p_certificate.signer_info), + subject_info := valueof(p_certificate.subject_info), + subject_attributes := valueof(p_certificate.subject_attributes), + validity_restrictions := valueof(p_certificate.validity_restrictions) } // End of template m_toBeSignedCertificate } // End of group profileCertificates diff --git a/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn b/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn index 317c717..3da0801 100644 --- a/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn +++ b/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn @@ -92,7 +92,9 @@ module LibItsSremSsem_Templates { * @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 SremInd mw_sremIndWithBtpParameters( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template SremInd mw_sremIndWithBtpParameters( + template(present) SremInd mw_sremIndWithBtpParameters( template (present) SREM p_sremMsg, in template UInt16 p_btpDestinationPort := *, in template UInt16 p_btpInfo := * @@ -174,7 +176,9 @@ module LibItsSremSsem_Templates { * @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 SsemInd mw_ssemIndWithBtpParameters( +//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base +// template SsemInd mw_ssemIndWithBtpParameters( + template(present) SsemInd mw_ssemIndWithBtpParameters( template (present) SSEM p_ssemMsg, template UInt16 p_btpDestinationPort := *, template UInt16 p_btpInfo := * @@ -376,14 +380,16 @@ module LibItsSremSsem_Templates { second := PX_SECOND, sequenceNumber := omit, requests := { - m_signalRequestPackage( - m_signalRequest( - m_intersectionReferenceID, - 1, - priorityRequestTypeReserved, - { lane := 1 } - )) }, - requestor := m_requestorDescription(m_vehicleID(f_getIutStationId())), + valueof( + m_signalRequestPackage( + valueof( + m_signalRequest( + m_intersectionReferenceID, + 1, + priorityRequestTypeReserved, + { lane := 1 } + )))) }, + requestor := valueof(m_requestorDescription(m_vehicleID(f_getIutStationId()))), regional := omit } diff --git a/ttcn/V2G/LibItsV2G_Templates.ttcn b/ttcn/V2G/LibItsV2G_Templates.ttcn index 51242b4..8530413 100644 --- a/ttcn/V2G/LibItsV2G_Templates.ttcn +++ b/ttcn/V2G/LibItsV2G_Templates.ttcn @@ -7,18 +7,22 @@ */ module LibItsV2G_Templates { - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; - // LibIts + // LibItsCommon + import from LibItsCommon_ASN1_NamedNumbers all; + + // LibItsV2G import from LibItsV2G_TestSystem all; import from LibItsV2G_TypesAndValues all; import from LibItsV2G_Pixits all; + import from LibItsV2G_TypeAliases all; //XSD - import from iso_15118_2_2010_MsgDef all; - import from iso_15118_2_2010_MsgDataTypes all; + import from urn_iso_15118_2_2010_MsgDef all; + import from urn_iso_15118_2_2010_MsgDataTypes all; group v2gPrimitivesTemplates { @@ -26,8 +30,8 @@ module LibItsV2G_Templates { group utPrimitives { - /** - * @desc Initializes the V2G IUT. + /** + * @desc Initializes the V2G IUT. */ template (value) UtInitialize m_v2gInitialize := { utV2Ginitialize := { @@ -38,7 +42,9 @@ module LibItsV2G_Templates { * @desc Upper Tester template for checking that V2G payload has been transmitted to upper layer * @param p_payload Payload to be checked */ - template (value) UtEvent m_checkPayload(in V2G_Message.Body p_body) := { +//FIXME RGY by standard conversion all field names are lowercase +// template (value) UtEvent m_checkPayload(in V2G_Message.Body p_body) := { + template (value) UtEvent m_checkPayload(in V2G_Message.body p_body) := { utV2Gevent := { v2gBody := p_body } @@ -92,6 +98,7 @@ module LibItsV2G_Templates { */ template V2G_Message mw_v2gMsg_sessionRequest (in template (present) sessionIDType_TYPE p_sId, in template (present) evccIDType_TYPE p_evccId ):= { +/*FIXME RGY by standard conversion all field names are lowercase Header := { SessionID := p_sId, Notification := omit, @@ -99,6 +106,14 @@ module LibItsV2G_Templates { }, Body := { BodyElement := omit//p_evccId +*/ + header := { + sessionID := p_sId, + notification := omit, + signature_ := omit + }, + body := { + bodyElement := omit//p_evccId } } diff --git a/ttcn/V2G/LibItsV2G_TestSystem.ttcn b/ttcn/V2G/LibItsV2G_TestSystem.ttcn index b6958e5..3f8fbdd 100644 --- a/ttcn/V2G/LibItsV2G_TestSystem.ttcn +++ b/ttcn/V2G/LibItsV2G_TestSystem.ttcn @@ -16,8 +16,10 @@ module LibItsV2G_TestSystem { import from LibItsV2G_TypesAndValues all; //XSD - import from iso_15118_2_2010_MsgDef all; - import from iso_15118_2_2010_MsgDataTypes all; + import from urn_iso_15118_2_2010_MsgDef all; + import from urn_iso_15118_2_2010_MsgDataTypes all; + + import from V2G_typeAliases all; group portDefinitions { diff --git a/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn b/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn index 9e5219a..9f424d1 100644 --- a/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn +++ b/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn @@ -13,84 +13,84 @@ module LibItsV2G_TypesAndValues { // LibIts //import from iso_15118_2_2010_MsgBody all; //language "XSD" all with {extension "File:V2G_CI_MsgBody.xsd" }; - import from iso_15118_2_2010_AppProtocol all;//language "XSD" all with {extension "File:XSD/V2G_CI_AppProtocol.xsd" }; + import from urn_iso_15118_2_2010_AppProtocol all;//language "XSD" all with {extension "File:XSD/V2G_CI_AppProtocol.xsd" }; //import from iso_15118_2_2010_MsgDataTypes all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgDataTypes.xsd" }; - import from iso_15118_2_2010_MsgDef all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgDef.xsd" }; + import from urn_iso_15118_2_2010_MsgDef all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgDef.xsd" }; //import from iso_15118_2_2010_MsgHeader all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgHeader.xsd" }; //import from org_w3_www__2000_09_xmldsig all;//language "XSD" all with {extension "File:XSD/xmldsig-core-schema.xsd" }; group v2gPdus { - group SDPMessages { - + group SDPMessages { + /** * @desc SDP (Session Discovery Protocol) message description */ type record Sdp_Message { - Sdp_Header sdpHeader, + Sdp_Header sdpHeader, Sdp_Payload sdpPayload - } + } } } // end v2gPdus group v2gHeaders { - - group SDPMessages { - + + group SDPMessages { + /** * @desc SDP (Session Discovery Protocol) Header description */ - type record Sdp_Header { - Oct1 protocolVersion, - Oct1 inverseProtocolVersion, - Oct2 payloadType, + type record Sdp_Header { + Oct1 protocolVersion, + Oct1 inverseProtocolVersion, + Oct2 payloadType, UInt16 payloadLength - } + } } } // end v2gHeaders - group v2gPayload { - - group SDPMessages { - + group v2gPayload { + + group SDPMessages { + /** * @desc SDP (Session Discovery Protocol) Payload description */ - type union Sdp_Payload { - Sdp_Request sdpRequest, - Sdp_Response sdpResponse - } - + type union Sdp_Payload { + Sdp_Request sdpRequest, + Sdp_Response sdpResponse + } + /** * @desc SDP (Session Discovery Protocol) Request message description - */ - type record Sdp_Request - { - Oct1 security, - Oct1 transportProtocol - } - + */ + type record Sdp_Request + { + Oct1 security, + Oct1 transportProtocol + } + /** * @desc SDP (Session Discovery Protocol) Response message description - */ - type record Sdp_Response - { - Ipv6Address seccIPAddress, // IPv6 - UInt16 seccPort, - Oct1 security, + */ + type record Sdp_Response + { + Ipv6Address seccIPAddress, // IPv6 + UInt16 seccPort, + Oct1 security, Oct1 transportProtocol - } + } } - } //end v2gPayload - - group IPAddress - { - /** - * @desc IPv6 Address - */ - type Oct16 Ipv6Address; + } //end v2gPayload + + group IPAddress + { + /** + * @desc IPv6 Address + */ + type Oct16 Ipv6Address; } // end IPAddress group acPrimitives { @@ -180,42 +180,45 @@ module LibItsV2G_TypesAndValues { * @desc Upper Tester message generating V2G message */ type union UtV2Gevent { - V2G_Message.Header v2gHeader, - V2G_Message.Body v2gBody +//FIXME RGY by standard conversion all field names are lowercase +// V2G_Message.Header v2gHeader, +// V2G_Message.Body v2gBody + V2G_Message.header v2gHeader, + V2G_Message.body v2gBody } } // end utPrimitives - - group sdpValues { - - const Oct1 c_protocolVersion1 := '01'O; - const Oct1 c_inverseProtocolVersion1 := 'FE'O; - - const Oct2 c_sdpRequestMessagePayloadType := '9000'O; - const Oct2 c_sdpResponseMessagePayloadType := '9001'O; - - const UInt16 c_sdpRequestPayloadLength := 2; - const UInt16 c_sdpResponsePayloadLength := 18; - - const Oct1 c_securedwithTLS := '00'O; - const Oct1 c_noTransportLayerSecurity := '10'O; - - const Oct1 c_transportProtocolTCP := '00'O; - const Oct1 c_transportProtocolUDP := '10'O; - - const UInt16 c_V2G_UDP_SDP_SERVER := 15118; - - const integer c_maxNbrSdpRequestRetrans := 4; - const integer c_maxNbrConsecutiveSdpRequest := 5; - - } // end sdpValues - - group timerTimeouts - { - const float c_v2g_seccSequenceTimeout := 60.0; - const float c_v2g_evccSequenceTimeout := 40.0; - - const float c_v2g_sdpRetransmissionTimeout := 0.25; + + group sdpValues { + + const Oct1 c_protocolVersion1 := '01'O; + const Oct1 c_inverseProtocolVersion1 := 'FE'O; + + const Oct2 c_sdpRequestMessagePayloadType := '9000'O; + const Oct2 c_sdpResponseMessagePayloadType := '9001'O; + + const UInt16 c_sdpRequestPayloadLength := 2; + const UInt16 c_sdpResponsePayloadLength := 18; + + const Oct1 c_securedwithTLS := '00'O; + const Oct1 c_noTransportLayerSecurity := '10'O; + + const Oct1 c_transportProtocolTCP := '00'O; + const Oct1 c_transportProtocolUDP := '10'O; + + const UInt16 c_V2G_UDP_SDP_SERVER := 15118; + + const integer c_maxNbrSdpRequestRetrans := 4; + const integer c_maxNbrConsecutiveSdpRequest := 5; + + } // end sdpValues + + group timerTimeouts + { + const float c_v2g_seccSequenceTimeout := 60.0; + const float c_v2g_evccSequenceTimeout := 40.0; + + const float c_v2g_sdpRetransmissionTimeout := 0.25; } } with { diff --git a/ttcn/V2G/V2G_CI_AppProtocol.xsd b/ttcn/V2G/V2G_CI_AppProtocol.xsd new file mode 100644 index 0000000..ea3713d --- /dev/null +++ b/ttcn/V2G/V2G_CI_AppProtocol.xsd @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/V2G/V2G_CI_MsgBody.xsd b/ttcn/V2G/V2G_CI_MsgBody.xsd new file mode 100644 index 0000000..5e9a3f4 --- /dev/null +++ b/ttcn/V2G/V2G_CI_MsgBody.xsd @@ -0,0 +1,484 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/V2G/V2G_CI_MsgDataTypes.xsd b/ttcn/V2G/V2G_CI_MsgDataTypes.xsd new file mode 100644 index 0000000..dc860bc --- /dev/null +++ b/ttcn/V2G/V2G_CI_MsgDataTypes.xsd @@ -0,0 +1,698 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Time in hours + + + + + Time in minutes + + + + + Time in seconds + + + + + Current in Ampere + + + + + Ampere hour + + + + + Voltage in Volt + + + + + Apparent power in Volt Ampere + + + + + Active power in Watt + + + + + Watt per second + + + + + Real energy in Watt hours + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/V2G/V2G_CI_MsgDef.xsd b/ttcn/V2G/V2G_CI_MsgDef.xsd new file mode 100644 index 0000000..5ae1e09 --- /dev/null +++ b/ttcn/V2G/V2G_CI_MsgDef.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ttcn/V2G/V2G_CI_MsgHeader.xsd b/ttcn/V2G/V2G_CI_MsgHeader.xsd new file mode 100644 index 0000000..35dff7a --- /dev/null +++ b/ttcn/V2G/V2G_CI_MsgHeader.xsd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/ttcn/V2G/xmldsig-core-schema.xsd b/ttcn/V2G/xmldsig-core-schema.xsd new file mode 100644 index 0000000..003d8e1 --- /dev/null +++ b/ttcn/V2G/xmldsig-core-schema.xsd @@ -0,0 +1,308 @@ + + + + + + ]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- GitLab From 0720d504f651879a91c883906133e749f6db184d Mon Sep 17 00:00:00 2001 From: filatov Date: Thu, 9 Feb 2017 17:27:42 +0000 Subject: [PATCH 005/320] IS_DSRC => DSRC various errors --- ...LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn | 2 +- ttcn/DCC/LibItsDcc_TestSystem.ttcn | 4 ++- .../LibItsGeoNetworking_Functions.ttcn | 2 +- ttcn/Security/LibItsSecurity_Functions.ttcn3 | 25 ++++++++++++------- .../LibItsSremSsem_EncdecDeclarations.ttcn | 2 +- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn b/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn index daf1a98..697688e 100644 --- a/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn +++ b/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn @@ -2,7 +2,7 @@ module LibItsCommon_ASN1_ISDSRC_NamedNumbers { -import from IS_DSRC language "ASN.1:1997" all; +import from DSRC language "ASN.1:1997" all; group IS_DSCR_constants { group LaneParameter_constants { diff --git a/ttcn/DCC/LibItsDcc_TestSystem.ttcn b/ttcn/DCC/LibItsDcc_TestSystem.ttcn index dcae78d..cc42d6f 100644 --- a/ttcn/DCC/LibItsDcc_TestSystem.ttcn +++ b/ttcn/DCC/LibItsDcc_TestSystem.ttcn @@ -49,7 +49,9 @@ module LibItsDcc_TestSystem { * @desc Check Port used for intercomponent exchange of data to check */ type port CheckPort message { - inout all; +//FIXME RGY "all" is not supported by Titan in port message lists; only integers are sent and received via checkPort-s; +// inout all; + inout integer; } } // end portDefinitions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 34f189f..5cbaee1 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -2784,7 +2784,7 @@ module LibItsGeoNetworking_Functions { f_HashedId3FromHashedId8( valueof(p_digest) )) - } + }, "" ); diff --git a/ttcn/Security/LibItsSecurity_Functions.ttcn3 b/ttcn/Security/LibItsSecurity_Functions.ttcn3 index a6908da..c5dbc60 100644 --- a/ttcn/Security/LibItsSecurity_Functions.ttcn3 +++ b/ttcn/Security/LibItsSecurity_Functions.ttcn3 @@ -24,7 +24,8 @@ module LibItsSecurity_Functions { import from LibItsSecurity_Templates all; import from LibItsSecurity_Pixits all; import from LibItsSecurity_TestSystem all; - import from LibItsSecurity_EncdecDeclarations all; +//FIXME(DF) UNUSED +// import from LibItsSecurity_EncdecDeclarations all; group helpersFunctions { @@ -191,7 +192,8 @@ module LibItsSecurity_Functions { // Local variables var octetstring v_secPayload, v_signature; - var Oct32 v_hash; +//FIXME(DF) UNUSED +// var Oct32 v_hash; var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; var integer i, j, k, n; var HeaderFields v_headerFields := {}; @@ -263,7 +265,7 @@ module LibItsSecurity_Functions { return false; } } else { - if(not f_readSigningKey(valueof(cc_taCert_A), v_privateKey)){ + if(not f_readSigningKey(cc_taCert_A, v_privateKey)){ return false; } } @@ -319,7 +321,8 @@ module LibItsSecurity_Functions { // Local variables var octetstring v_secPayload, v_signature; - var Oct32 v_hash; +// FIXME(DF)UNUSED +// var Oct32 v_hash; var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; var integer i, j, k, n; var HeaderFields v_headerFields := {}; @@ -405,7 +408,7 @@ module LibItsSecurity_Functions { return false; } } else { - if(not f_readSigningKey(valueof(cc_taCert_A), v_privateKey)){ + if(not f_readSigningKey(cc_taCert_A, v_privateKey)){ return false; } } @@ -948,7 +951,8 @@ module LibItsSecurity_Functions { in charstring p_certificateName ) runs on ItsSecurityBaseComponent return HashedId8 { // Local variables - var Certificate v_atCertificate; +// FIXME (DF) UNUSED +// var Certificate v_atCertificate; var HashedId8 v_hashedId8 := '0000000000000000'O; // Sanity check @@ -1044,7 +1048,8 @@ module LibItsSecurity_Functions { // Local variables var octetstring v_secPayload; var octetstring v_signedData; - var Oct32 v_hash; +// FIXME (DF) UNUSED +// var Oct32 v_hash; var integer v_counter; var boolean v_result := false; var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; @@ -1203,7 +1208,8 @@ module LibItsSecurity_Functions { function f_loadCertificates( in charstring p_configId ) runs on ItsSecurityBaseComponent return boolean { - var boolean v_result; +// FIXME (DF) UNUSED +// var boolean v_result; // Setup certificates memory cache if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, p_configId) == true) { @@ -1848,7 +1854,8 @@ module LibItsSecurity_Functions { in template (value) RectangularRegion p_rectangular_region, out PolygonalRegion p_region ) return boolean { - var integer v_counter := 0; +// FIXME (DF) UNUSED +// var integer v_counter := 0; // Convert rectangular regions to polygons and check polygons p_region[0] := valueof(p_rectangular_region.northwest); diff --git a/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn b/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn index d86dfd1..bc906ab 100644 --- a/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn +++ b/ttcn/SremSsem/LibItsSremSsem_EncdecDeclarations.ttcn @@ -1,6 +1,6 @@ module LibItsSremSsem_EncdecDeclarations { -import from IS_DSRC all; +import from DSRC all; external function fx_enc_SSM (SignalStatusMessage p) return octetstring with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} -- GitLab From 48eacf5356bc461cd01764b1cf1f33e920108d63 Mon Sep 17 00:00:00 2001 From: filatov Date: Thu, 9 Feb 2017 17:32:08 +0000 Subject: [PATCH 006/320] TITANISATION: UT and AC messages (Common, CAM, DENM, BTP) --- ttcn/BTP/LibItsBtp_Functions.ttcn | 4 +- ttcn/BTP/LibItsBtp_TestSystem.ttcn | 4 +- ttcn/BTP/LibItsBtp_TypesAndValues.ttcn | 7 ++- ttcn/CAM/LibItsCam_Functions.ttcn | 12 +++-- ttcn/CAM/LibItsCam_TestSystem.ttcn | 8 ++- ttcn/CAM/LibItsCam_TypesAndValues.ttcn | 8 ++- ttcn/Common/LibItsCommon_Templates.ttcn | 14 ++++-- ttcn/Common/LibItsCommon_TypesAndValues.ttcn | 49 ++++++++++++++++--- ttcn/DENM/LibItsDenm_Functions.ttcn | 20 ++++++-- ttcn/DENM/LibItsDenm_Templates.ttcn | 8 ++- ttcn/DENM/LibItsDenm_TestSystem.ttcn | 11 +++-- ttcn/DENM/LibItsDenm_TypesAndValues.ttcn | 13 ++++- .../LibItsGeoNetworking_TypesAndValues.ttcn | 4 +- 13 files changed, 128 insertions(+), 34 deletions(-) diff --git a/ttcn/BTP/LibItsBtp_Functions.ttcn b/ttcn/BTP/LibItsBtp_Functions.ttcn index dac1f2c..8f31833 100644 --- a/ttcn/BTP/LibItsBtp_Functions.ttcn +++ b/ttcn/BTP/LibItsBtp_Functions.ttcn @@ -41,7 +41,9 @@ utPort.send(p_init); tc_wait.start; alt { - [] utPort.receive(UtInitializeResult:true) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtInitializeResult:true) { + [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } diff --git a/ttcn/BTP/LibItsBtp_TestSystem.ttcn b/ttcn/BTP/LibItsBtp_TestSystem.ttcn index 4c7929d..e131d71 100644 --- a/ttcn/BTP/LibItsBtp_TestSystem.ttcn +++ b/ttcn/BTP/LibItsBtp_TestSystem.ttcn @@ -29,7 +29,9 @@ module LibItsBtp_TestSystem { out UtInitialize, UtBtpTrigger; in - UtInitializeResult, UtBtpTriggerResult, UtBtpEventInd; +//FIXME RGY!!! As discussed, list of booleans is changed by a top-level union type +// UtInitializeResult, UtBtpTriggerResult, UtBtpEventInd; + UtCommonResults, UtBtpTriggerResult, UtBtpEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn index c2ca46e..cad2ced 100644 --- a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn +++ b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn @@ -145,7 +145,12 @@ module LibItsBtp_TypesAndValues { GenerateBtpB btpB } - type boolean UtBtpTriggerResult; +//FIXME RGY As discussed, boolean results are replaced by a union of the results +// type boolean UtBtpTriggerResult; + type union UtBtpResults { + boolean utBtpTriggerResult + } + type UtBtpResults.utBtpTriggerResult UtBtpTriggerResult; /** * @desc Upper Tester message to request triggering of an BTPA message at IUT diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn index e44b8b3..b1c443d 100644 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ b/ttcn/CAM/LibItsCam_Functions.ttcn @@ -49,7 +49,9 @@ module LibItsCam_Functions { utPort.send(p_init); tc_wait.start; alt { - [] utPort.receive(UtInitializeResult:true) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtInitializeResult:true) { + [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } @@ -81,7 +83,9 @@ module LibItsCam_Functions { utPort.send(p_event); tc_wait.start; alt { - [] utPort.receive(UtCamTriggerResult:true) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtCamTriggerResult:true) { + [] utPort.receive(UpperTesterCamResults:{utCamTriggerResult:=true}) { tc_wait.stop; } [] utPort.receive { @@ -107,7 +111,9 @@ module LibItsCam_Functions { utPort.send(p_position); alt { - [] utPort.receive(UtChangePositionResult:?) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtChangePositionResult:?) { + [] utPort.receive(UtCommonResults:{utChangePositionResult:=?}) { tc_wait.stop; } [] utPort.receive { diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn index 01f8ca7..bbc4cab 100644 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ b/ttcn/CAM/LibItsCam_TestSystem.ttcn @@ -37,7 +37,9 @@ module LibItsCam_TestSystem { out AcGnssPrimitive, AcSecPrimitive; in - AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; +//FIXME RGY As discussed, list of boolean result responses is collected into a top-level union +// AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; + AdapterControlResults; } // end AdapterControlPort /** @@ -47,7 +49,9 @@ module LibItsCam_TestSystem { out UtInitialize, UtCamTrigger, UtChangePosition, UtActivatePositionTime, UtDeactivatePositionTime; in - UtInitializeResult, UtCamTriggerResult, UtChangePositionResult, UtActivatePositionTimeResult, UtDeactivatePositionTimeResult, UtCamEventInd; +//FIXME RGY As discussed, list of boolean result responses is collected into a top-level union +// UtInitializeResult, UtCamTriggerResult, UtChangePositionResult, UtActivatePositionTimeResult, UtDeactivatePositionTimeResult, UtCamEventInd; + UtCommonResults, UpperTesterCamResults, UtCamEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn index 5490fea..f215e97 100644 --- a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn +++ b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn @@ -104,7 +104,13 @@ module LibItsCam_TypesAndValues { /** * @desc Upper Tester result message of request of triggering of an event at IUT */ - type boolean UtCamTriggerResult; +//FIXME RGY As discussed, simple boolean responses are collected to a union for forward compatibility +// type boolean UtCamTriggerResult; + type union UpperTesterCamResults { + boolean utCamTriggerResult + } + + type UpperTesterCamResults.utCamTriggerResult UtCamTriggerResult; /** * @desc Upper Tester message to check event/status on CAM IUT diff --git a/ttcn/Common/LibItsCommon_Templates.ttcn b/ttcn/Common/LibItsCommon_Templates.ttcn index 16f4f7c..f172b4e 100644 --- a/ttcn/Common/LibItsCommon_Templates.ttcn +++ b/ttcn/Common/LibItsCommon_Templates.ttcn @@ -18,7 +18,9 @@ module LibItsCommon_Templates { group taPrimitives { - template (value) AcSecResponse m_acSecResponseSuccess := true; +//FIXME RGY the simple boolean result has been changed to a union +// template (value) AcSecResponse m_acSecResponseSuccess := true; + template (value) AdapterControlResults m_acSecResponseSuccess := {acSecResponse:=true}; /** * @desc Enable security support @@ -42,9 +44,13 @@ module LibItsCommon_Templates { } } // End of template m_acDisableSecurity - template AcGnssResponse m_acGnssResponseSuccess := true; - - template AcGnssDistanceCovered m_acGnssDistanceCovered := true; +//FIXME RGY As discussed, port in type is changed to a top-level union type +// template AcGnssResponse m_acGnssResponseSuccess := true; + template AdapterControlResults m_acGnssResponseSuccess := {acGnssResponse:=true}; + +//FIXME RGY As discussed, port in type is changed to a top-level union type +// template AcGnssDistanceCovered m_acGnssDistanceCovered := true; + template AdapterControlResults m_acGnssDistanceCovered := {acGnssDistanceCovered:=true}; /** * @desc Testsystem will load GNSS scenario diff --git a/ttcn/Common/LibItsCommon_TypesAndValues.ttcn b/ttcn/Common/LibItsCommon_TypesAndValues.ttcn index 190b93c..911ed5f 100644 --- a/ttcn/Common/LibItsCommon_TypesAndValues.ttcn +++ b/ttcn/Common/LibItsCommon_TypesAndValues.ttcn @@ -30,7 +30,19 @@ module LibItsCommon_TypesAndValues { /** * @desc Upper Tester result message of the initialization request */ - type boolean UtInitializeResult; +//FIXME RGY As discussed, Commom top level type for UT results + type union UtCommonResults { + boolean utInitializeResult, + boolean utChangePositionResult, + boolean utChangePseudonymResult, + boolean utActivatePositionTimeResult, + boolean utDeactivatePositionTimeResult, + boolean utIvimTerminationResult + } + +//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes +// type boolean UtInitializeResult; + type UtCommonResults.utInitializeResult UtInitializeResult; /** * @desc Upper Tester message to change the position of IUT. Values a relatives @@ -44,7 +56,9 @@ module LibItsCommon_TypesAndValues { /** * @desc Upper Tester result message of change position request of IUT */ - type boolean UtChangePositionResult; +//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes +// type boolean UtChangePositionResult; + type UtCommonResults.utChangePositionResult UtChangePositionResult; /** * @desc Upper Tester message to change the pseudonym of the DENM IUT @@ -56,7 +70,9 @@ module LibItsCommon_TypesAndValues { /** * @desc Upper Tester result message of the change pseudonym request */ - type boolean UtChangePseudonymResult; +//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes +// type boolean UtChangePseudonymResult; + type UtCommonResults.utChangePseudonymResult UtChangePseudonymResult; /** * @desc Upper Tester message to activate position and/or time @@ -68,7 +84,9 @@ module LibItsCommon_TypesAndValues { /** * @desc Upper Tester result message of the activate position and/or time request */ - type boolean UtActivatePositionTimeResult; +//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes +// type boolean UtActivatePositionTimeResult; + type UtCommonResults.utActivatePositionTimeResult UtActivatePositionTimeResult; /** * @desc Upper Tester message to deactivate position and/or time @@ -80,7 +98,9 @@ module LibItsCommon_TypesAndValues { /** * @desc Upper Tester result message of the deactivate position and/or time request */ - type boolean UtDeactivatePositionTimeResult; +//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes +// type boolean UtDeactivatePositionTimeResult; + type UtCommonResults.utDeactivatePositionTimeResult UtDeactivatePositionTimeResult; } with { @@ -118,7 +138,9 @@ module LibItsCommon_TypesAndValues { /** * @desc Primitive for receiving response from TA */ - type boolean AcSecResponse; +//FIXME RGY As discussed, type is changed to a type derived from AdapterControlResults +// type boolean AcSecResponse; + type AdapterControlResults.acSecResponse AcSecResponse; /** * @desc TA primitives for GNSS @@ -139,12 +161,23 @@ module LibItsCommon_TypesAndValues { /** * @desc Primitive for receiving response from TA */ - type boolean AcGnssResponse; +//FIXME RGY As discussed, Commom adapter control results are collected to a top-level union type + type union AdapterControlResults { + boolean acGnssResponse, + boolean acGnssDistanceCovered, + boolean acSecResponse + } + +//FIXME RGY As discussed, boolean results are replaced by related fields of the top-level reult union +// type boolean AcGnssResponse; + type AdapterControlResults.acGnssResponse AcGnssResponse; /** * @desc Primitive for receiving an indication if requested distance was covered from TA */ - type boolean AcGnssDistanceCovered; +//FIXME RGY As discussed, boolean results are replaced by related fields of the top-level reult union +// type boolean AcGnssDistanceCovered; + type AdapterControlResults.acGnssDistanceCovered AcGnssDistanceCovered; /** * @desc Primitive for loading a scenario diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn index 8ca735f..d028ce7 100644 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ b/ttcn/DENM/LibItsDenm_Functions.ttcn @@ -47,7 +47,9 @@ module LibItsDenm_Functions { utPort.send(p_init); tc_wait.start; alt { - [] utPort.receive(UtInitializeResult:true) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtInitializeResult:true) { + [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT initialized ***"); } @@ -77,11 +79,15 @@ module LibItsDenm_Functions { utPort.send(p_change); tc_wait.start; alt { - [] utPort.receive(UtChangePseudonymResult:true) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtChangePseudonymResult:true) { + [] utPort.receive(UtCommonResults:{utChangePseudonymResult:=true}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); } - [] utPort.receive(UtChangePseudonymResult:false) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtChangePseudonymResult:false) { + [] utPort.receive(UtCommonResults:{utChangePseudonymResult:=false}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); f_selfOrClientSyncAndVerdict("error", e_error); @@ -181,7 +187,9 @@ module LibItsDenm_Functions { utPort.send(p_event); tc_wait.start; alt { - [] utPort.receive(UtDenmTerminationResult:?) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtDenmTerminationResult:?) { + [] utPort.receive(UtDENMResults:{utDenmTerminationResult:=?}) { tc_wait.stop; } [] tc_wait.timeout { @@ -212,7 +220,9 @@ module LibItsDenm_Functions { utPort.send(p_position); tc_wait.start; alt { - [] utPort.receive(UtChangePositionResult:?) { +//FIXME RGY As discussed, port in type is changed to a top-level union type +// [] utPort.receive(UtChangePositionResult:?) { + [] utPort.receive(UtCommonResults:{utChangePositionResult:=?}) { tc_wait.stop; } [] tc_wait.timeout { diff --git a/ttcn/DENM/LibItsDenm_Templates.ttcn b/ttcn/DENM/LibItsDenm_Templates.ttcn index bba7008..70e1d7f 100644 --- a/ttcn/DENM/LibItsDenm_Templates.ttcn +++ b/ttcn/DENM/LibItsDenm_Templates.ttcn @@ -583,7 +583,9 @@ module LibItsDenm_Templates { eventPosition := ?, relevanceDistance := *, relevanceTrafficDirection := *, - validityDuration := *, // It seems that a default value can be omitted (asn1studio) +//FIXME (DF) validityDuration is set as mandatory, '*' can not be assigned to it +// validityDuration := *, // It seems that a default value can be omitted (asn1studio) + validityDuration := ?, // It seems that a default value can be omitted (asn1studio) transmissionInterval := *, stationType := ? } @@ -710,7 +712,9 @@ module LibItsDenm_Templates { deltaLongitude := 0, deltaAltitude := 0 }, - pathDeltaTime := 0 +//FIXME (DF) pathDeltaTime == 0 is not compatible with PathDeltaTime range definition +// pathDeltaTime := 0 + pathDeltaTime := 1 } } }, diff --git a/ttcn/DENM/LibItsDenm_TestSystem.ttcn b/ttcn/DENM/LibItsDenm_TestSystem.ttcn index 0338ea3..4c26f5f 100644 --- a/ttcn/DENM/LibItsDenm_TestSystem.ttcn +++ b/ttcn/DENM/LibItsDenm_TestSystem.ttcn @@ -37,7 +37,9 @@ module LibItsDenm_TestSystem { out AcGnssPrimitive, AcSecPrimitive; in - AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; +//FIXME RGY!!! As discussed, list of booleans is changed by a top-level union type +// AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; + AdapterControlResults } // end AdapterControlPort /** @@ -47,8 +49,11 @@ module LibItsDenm_TestSystem { out UtInitialize, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtChangePosition, UtChangePseudonym; in - UtInitializeResult, UtDenmTriggerResult, UtDenmUpdateResult, UtDenmTerminationResult, - UtChangePositionResult, UtChangePseudonymResult, UtDenmEventInd; +//FIXME RGY! As discussed, list of booleans is changed by a top-level union type +// UtInitializeResult, UtDenmTriggerResult, UtDenmUpdateResult, UtDenmTerminationResult, +// UtChangePositionResult, UtChangePseudonymResult, UtDenmEventInd; + UtCommonResults, UtDENMResults, UtDenmTriggerResult, + UtDenmUpdateResult, UtDenmEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn index e50be37..6ecc3c8 100644 --- a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn +++ b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn @@ -117,11 +117,20 @@ module LibItsDenm_TypesAndValues { ActionID actionId } +//FIXME RGY As discussed, boolean result types are replaced by a top-level union of the results /** - * @desc Upper Tester result message of termination of an event on DENM IUT + * @desc Upper Tester response message for all DENM results */ - type boolean UtDenmTerminationResult; + type union UtDENMResults { + boolean utDenmTerminationResult + } + /** + * @desc Upper Tester result message of termination of an event on DENM IUT + */ +//FIXME RGY As discussed, boolean result types are replaced by a top-level union type +// type boolean UtDenmTerminationResult; + type UtDENMResults.utDenmTerminationResult UtDenmTerminationResult; /** * @desc Upper Tester message to check event/status on DENM IUT */ diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index eb56540..4dfef02 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -1008,7 +1008,9 @@ module LibItsGeoNetworking_TypesAndValues { } // end utPrimitives with { - encode "UpperTester" +//FIXME RGY temporarily changed to RAW, until encoding functions are changed to UpperTester +// encode "UpperTester" + encode "RAW"; variant "" } group acPrimitives { -- GitLab From 6dd7b23e82b482b3d3b6f4d6b82d72e30c8eae34 Mon Sep 17 00:00:00 2001 From: filatov Date: Mon, 6 Mar 2017 09:53:55 +0000 Subject: [PATCH 007/320] Separation of asn.1 modules of IS --- .../{ => ETSI_TS_103301}/ETSI_TS_103301.asn | 0 .../ETSI_TS_103301/IVIM_PDU_Descriptions.asn | 26 + .../ETSI_TS_103301/MAPEM_PDU_Descriptions.asn | 25 + .../SPATEM_PDU_Descriptions.asn | 27 + .../ETSI_TS_103301/SREM_PDU_Descriptions.asn | 24 + .../ETSI_TS_103301/SSEM_PDU_Descriptions.asn | 25 + .../AVIAEINumberingAndDataStructures.asn} | 0 .../EfcDsrcApplication.asn} | 0 .../EfcDsrcGeneric.asn} | 0 .../CITSapplMgmtIDs.asn} | 0 asn1/IS/ISO_TS_19091/AddGrpC.asn | 124 ++ asn1/IS/ISO_TS_19091/AddGrpC_noCircular.asn | 30 + asn1/IS/ISO_TS_19091/DSRC.asn | 1913 +++++++++++++++++ .../ISO_TS_19091/DSRC_REGION_noCircular.asn | 419 ++++ asn1/IS/{ => ISO_TS_19091}/ISO_TS_19091.asn | 0 asn1/IS/ISO_TS_19091/REGION.asn | 117 + .../IVI.asn} | 0 ...rationIdentificationVehicleDataModule.asn} | 0 18 files changed, 2730 insertions(+) rename asn1/IS/{ => ETSI_TS_103301}/ETSI_TS_103301.asn (100%) create mode 100755 asn1/IS/ETSI_TS_103301/IVIM_PDU_Descriptions.asn create mode 100755 asn1/IS/ETSI_TS_103301/MAPEM_PDU_Descriptions.asn create mode 100755 asn1/IS/ETSI_TS_103301/SPATEM_PDU_Descriptions.asn create mode 100755 asn1/IS/ETSI_TS_103301/SREM_PDU_Descriptions.asn create mode 100755 asn1/IS/ETSI_TS_103301/SSEM_PDU_Descriptions.asn rename asn1/IS/{ISO_TS_14816.asn => ISO_TS_14816/AVIAEINumberingAndDataStructures.asn} (100%) rename asn1/IS/{ISO_TS_14906_Application.asn => ISO_TS_14906/EfcDsrcApplication.asn} (100%) rename asn1/IS/{ISO_TS_14906_Generic.asn => ISO_TS_14906/EfcDsrcGeneric.asn} (100%) rename asn1/IS/{ISO_TS_17419.asn => ISO_TS_17419/CITSapplMgmtIDs.asn} (100%) create mode 100755 asn1/IS/ISO_TS_19091/AddGrpC.asn create mode 100644 asn1/IS/ISO_TS_19091/AddGrpC_noCircular.asn create mode 100755 asn1/IS/ISO_TS_19091/DSRC.asn create mode 100644 asn1/IS/ISO_TS_19091/DSRC_REGION_noCircular.asn rename asn1/IS/{ => ISO_TS_19091}/ISO_TS_19091.asn (100%) create mode 100755 asn1/IS/ISO_TS_19091/REGION.asn rename asn1/IS/{ISO_TS_19321.asn => ISO_TS_19321/IVI.asn} (100%) rename asn1/IS/{ISO_TS_24534-3.asn => ISO_TS_24534-3/ElectronicRegistrationIdentificationVehicleDataModule.asn} (100%) diff --git a/asn1/IS/ETSI_TS_103301.asn b/asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn similarity index 100% rename from asn1/IS/ETSI_TS_103301.asn rename to asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn diff --git a/asn1/IS/ETSI_TS_103301/IVIM_PDU_Descriptions.asn b/asn1/IS/ETSI_TS_103301/IVIM_PDU_Descriptions.asn new file mode 100755 index 0000000..a3263b7 --- /dev/null +++ b/asn1/IS/ETSI_TS_103301/IVIM_PDU_Descriptions.asn @@ -0,0 +1,26 @@ +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: IVI-MESSAGE-PDU-Descriptions +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +IVIM-PDU-Descriptions { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) ivim (2) version1 (1) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS +IviStructure FROM IVI {iso (1) standard (0) ivi (19321) version1 (1)} +ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)}; + + +IVIM ::= SEQUENCE { + header ItsPduHeader, + ivi IviStructure +} + +END + diff --git a/asn1/IS/ETSI_TS_103301/MAPEM_PDU_Descriptions.asn b/asn1/IS/ETSI_TS_103301/MAPEM_PDU_Descriptions.asn new file mode 100755 index 0000000..efad7d2 --- /dev/null +++ b/asn1/IS/ETSI_TS_103301/MAPEM_PDU_Descriptions.asn @@ -0,0 +1,25 @@ +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: MAP-MESSAGE-PDU-Descriptions +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +MAPEM-PDU-Descriptions { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) mapem (1) version1 (1) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS +MapData FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } +ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)}; + + +MAPEM ::= SEQUENCE { + header ItsPduHeader, + map MapData +} + +END diff --git a/asn1/IS/ETSI_TS_103301/SPATEM_PDU_Descriptions.asn b/asn1/IS/ETSI_TS_103301/SPATEM_PDU_Descriptions.asn new file mode 100755 index 0000000..6adc54f --- /dev/null +++ b/asn1/IS/ETSI_TS_103301/SPATEM_PDU_Descriptions.asn @@ -0,0 +1,27 @@ +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: SPAT-MESSAGE-PDU-Descriptions +-- +-- This ASN.1 was created: 30.08.2016 +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +SPATEM-PDU-Descriptions { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) spatem (0) version1 (1) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS +SPAT FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } +ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; + + +SPATEM ::= SEQUENCE { + header ItsPduHeader, + spat SPAT +} + +END diff --git a/asn1/IS/ETSI_TS_103301/SREM_PDU_Descriptions.asn b/asn1/IS/ETSI_TS_103301/SREM_PDU_Descriptions.asn new file mode 100755 index 0000000..8d584de --- /dev/null +++ b/asn1/IS/ETSI_TS_103301/SREM_PDU_Descriptions.asn @@ -0,0 +1,24 @@ +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: SRM-MESSAGE-PDU-Descriptions +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +SREM-PDU-Descriptions { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) srem (3) version1 (1) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS +SignalRequestMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } +ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; + +SREM ::= SEQUENCE { + header ItsPduHeader, + srm SignalRequestMessage +} + +END diff --git a/asn1/IS/ETSI_TS_103301/SSEM_PDU_Descriptions.asn b/asn1/IS/ETSI_TS_103301/SSEM_PDU_Descriptions.asn new file mode 100755 index 0000000..50e8b83 --- /dev/null +++ b/asn1/IS/ETSI_TS_103301/SSEM_PDU_Descriptions.asn @@ -0,0 +1,25 @@ +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: SSM-MESSAGE-PDU-Descriptions +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +SSEM-PDU-Descriptions { + itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) ssem (4) version1 (1) +} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS +SignalStatusMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } +ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; + + +SSEM ::= SEQUENCE { + header ItsPduHeader, + ssm SignalStatusMessage +} + +END diff --git a/asn1/IS/ISO_TS_14816.asn b/asn1/IS/ISO_TS_14816/AVIAEINumberingAndDataStructures.asn similarity index 100% rename from asn1/IS/ISO_TS_14816.asn rename to asn1/IS/ISO_TS_14816/AVIAEINumberingAndDataStructures.asn diff --git a/asn1/IS/ISO_TS_14906_Application.asn b/asn1/IS/ISO_TS_14906/EfcDsrcApplication.asn similarity index 100% rename from asn1/IS/ISO_TS_14906_Application.asn rename to asn1/IS/ISO_TS_14906/EfcDsrcApplication.asn diff --git a/asn1/IS/ISO_TS_14906_Generic.asn b/asn1/IS/ISO_TS_14906/EfcDsrcGeneric.asn similarity index 100% rename from asn1/IS/ISO_TS_14906_Generic.asn rename to asn1/IS/ISO_TS_14906/EfcDsrcGeneric.asn diff --git a/asn1/IS/ISO_TS_17419.asn b/asn1/IS/ISO_TS_17419/CITSapplMgmtIDs.asn similarity index 100% rename from asn1/IS/ISO_TS_17419.asn rename to asn1/IS/ISO_TS_17419/CITSapplMgmtIDs.asn diff --git a/asn1/IS/ISO_TS_19091/AddGrpC.asn b/asn1/IS/ISO_TS_19091/AddGrpC.asn new file mode 100755 index 0000000..733d324 --- /dev/null +++ b/asn1/IS/ISO_TS_19091/AddGrpC.asn @@ -0,0 +1,124 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 19091 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains the addendunm extensions for Addgrp-C (e.g. Europe) +-- +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: AddGrpC +-- ISO TS 19091 30.08.2016 + +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +AddGrpC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) } + + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +--FIXME RGY all definitions are moved to IS-DSRC-noCircular to cut circular import loop +--NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, DeltaTime, LaneID FROM DSRC +NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, DeltaTime, LaneID FROM DSRC-REGION-noCircular +Altitude, StationID, DeltaAltitude FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; + + +ConnectionManeuverAssist-addGrpC ::= SEQUENCE { + itsStationPositions ItsStationPositionList OPTIONAL, + rsuGNSSOffset NodeOffsetPointXY OPTIONAL, + ... +} + +ConnectionTrajectory-addGrpC ::= SEQUENCE { + nodes NodeSetXY, + ... +} + +/*FIXME RGY moved to AddGrpC-noCircular to cut circular import loop +Control-addGrpC ::= SEQUENCE { + ptvRequest PtvRequestType, + ... +} +*/ + +IntersectionState-addGrpC ::= SEQUENCE { + activePrioritizations PrioritizationResponseList OPTIONAL, + ... +} + +MapData-addGrpC ::= SEQUENCE { + signalHeadLocations SignalHeadLocationList OPTIONAL, + ... +} + +Position3D-addGrpC ::= SEQUENCE { + altitude Altitude, + ... +} + +PrioritizationResponseList ::= SEQUENCE SIZE(1..10) OF PrioritizationResponse + +PrioritizationResponse ::= SEQUENCE { + stationID StationID, + priorState PrioritizationResponseStatus, + signalGroup SignalGroupID, + ... +} + +RestrictionUserType-addGrpC ::= SEQUENCE { + emission EmissionType OPTIONAL, + ... +} + +SignalHeadLocationList ::= SEQUENCE (SIZE(1..64)) OF SignalHeadLocation + +SignalHeadLocation ::= SEQUENCE { + nodeXY NodeOffsetPointXY, + nodeZ DeltaAltitude, + signalGroupID SignalGroupID, + ... +} + +SignalStatusPackage-addGrpC ::= SEQUENCE { + synchToSchedule DeltaTime OPTIONAL, + ... +} + + +ItsStationPositionList::= SEQUENCE SIZE(1..5) OF ItsStationPosition + +ItsStationPosition ::= SEQUENCE { + stationID StationID, + laneID LaneID OPTIONAL, + nodeXY NodeOffsetPointXY OPTIONAL, + timeReference TimeReference OPTIONAL, + ... +} +EmissionType ::= ENUMERATED { + euro1, + euro2, + euro3, + euro4, + euro5, + euro6, + ... +} + +/*FIXME RGY moved to AddGrpC-noCircular to cut circular import loop +PtvRequestType ::= ENUMERATED { + preRequest, + mainRequest, + doorCloseRequest, + cancelRequest, + emergencyRequest, + ... +} +*/ + +TimeReference ::= INTEGER { oneMilliSec(1) } (0..65535) + +END diff --git a/asn1/IS/ISO_TS_19091/AddGrpC_noCircular.asn b/asn1/IS/ISO_TS_19091/AddGrpC_noCircular.asn new file mode 100644 index 0000000..f7dcf5b --- /dev/null +++ b/asn1/IS/ISO_TS_19091/AddGrpC_noCircular.asn @@ -0,0 +1,30 @@ +--FIXME RGY moved here from file SPAT_MAP_ISO_TS_19091.asn + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: AddGrpC +-- ISO TS 19091 30.08.2016 +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +--FIXME RGY definitions are moved here from AddGrpC; created to cut circular import loops amongst ASN.1 files +AddGrpC-noCircular { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) } + + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + + +Control-addGrpC ::= SEQUENCE { + ptvRequest PtvRequestType, + ... +} + +PtvRequestType ::= ENUMERATED { + preRequest, + mainRequest, + doorCloseRequest, + cancelRequest, + emergencyRequest, + ... +} + +END diff --git a/asn1/IS/ISO_TS_19091/DSRC.asn b/asn1/IS/ISO_TS_19091/DSRC.asn new file mode 100755 index 0000000..6d9b86d --- /dev/null +++ b/asn1/IS/ISO_TS_19091/DSRC.asn @@ -0,0 +1,1913 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 19091 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message +-- as defined in ISO TS 19091 and SAEJ2735 +-- +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: DSRC +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +--FIXME RGY definitions moved to module DSRC-REGION-noCircular are commented our below +StationID, Longitude, Latitude, SpeedConfidence FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } +Reg-SPAT,Reg-SignalRequestMessage, Reg-SignalStatusMessage, Reg-MapData, Reg-AdvisorySpeed, Reg-ComputedLane, Reg-ConnectionManeuverAssist, +Reg-GenericLane, Reg-IntersectionGeometry, Reg-IntersectionState, Reg-LaneAttributes, /*Reg-LaneDataAttribute,*/ Reg-MovementEvent, Reg-MovementState, +/*Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY,*/ Reg-Position3D, Reg-RequestorDescription, Reg-RequestorType, Reg-RestrictionUserType, Reg-RoadSegment, +Reg-SignalControlZone, Reg-SignalRequestPackage, Reg-SignalRequest, Reg-SignalStatusPackage, Reg-SignalStatus FROM REGION {iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1)} + +--FIXME RGY definitions moved to DSRC-REGION-noCircular but also refernced here are re-imported +DeltaAngle, DeltaTime, LaneID, NodeSetXY, PrioritizationResponseStatus, RegionalExtension, SignalGroupID, SpeedLimitList, Velocity, +Reg-LaneDataAttribute, Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY FROM DSRC-REGION-noCircular +Iso3833VehicleType FROM ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1)} +; + + +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- +-- Start of entries from table Messages... +-- This table typicaly contains message entries. +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- + +MessageFrame ::= SEQUENCE { + messageId MESSAGE-ID-AND-TYPE.&id({MessageTypes}), + value MESSAGE-ID-AND-TYPE.&Type({MessageTypes}{@.messageId}), + ... + } + +MESSAGE-ID-AND-TYPE ::= CLASS { + &id DSRCmsgID UNIQUE, + &Type + } WITH SYNTAX {&Type IDENTIFIED BY &id} + +MessageTypes MESSAGE-ID-AND-TYPE ::= { + { MapData IDENTIFIED BY mapData } | + { SPAT IDENTIFIED BY signalPhaseAndTimingMessage } | + { SignalRequestMessage IDENTIFIED BY signalRequestMessage } | + { SignalStatusMessage IDENTIFIED BY signalStatusMessage }, + ... -- Expansion to be used only by the SAE J2735 DSRC TC + } + + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +-- Regional extensions support +REG-EXT-ID-AND-TYPE ::= CLASS { + &id RegionId UNIQUE, + &Type + } WITH SYNTAX {&Type IDENTIFIED BY &id} + +RegionalExtension {REG-EXT-ID-AND-TYPE : Set} ::= SEQUENCE { + regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), + regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) + } +*/ + +SPAT ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + name DescriptiveName OPTIONAL, + -- human readable name for this collection + -- to be used only in debug mode + + intersections IntersectionStateList, + -- sets of SPAT data (one per intersection) + + -- If PrioritizationResponse data is required, it is found + -- in the RegionalSPAT entry below + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SPAT}} OPTIONAL, + ... + } + +SignalRequestMessage ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + second DSecond, + sequenceNumber MsgCount OPTIONAL, + + requests SignalRequestList OPTIONAL, + -- Request Data for one or more signalized + -- intersections that support SRM dialogs + + requestor RequestorDescription, + -- Requesting Device and other User Data + -- contains vehicle ID (if from a vehicle) + -- as well as type data and current position + -- and may contain additional transit data + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL, + ... +} + +SignalStatusMessage ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + second DSecond, + sequenceNumber MsgCount OPTIONAL, + + -- Status Data for one of more signalized intersections + status SignalStatusList, + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL, + ... +} + +MapData ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + msgIssueRevision MsgCount, + layerType LayerType OPTIONAL, + layerID LayerID OPTIONAL, + intersections IntersectionGeometryList OPTIONAL, + -- All Intersection definitions + roadSegments RoadSegmentList OPTIONAL, + -- All roadway descriptions + + dataParameters DataParameters OPTIONAL, + -- Any meta data regarding the map contents + + restrictionList RestrictionClassList OPTIONAL, + -- Any restriction ID tables which have + -- established for these map entries + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MapData}} OPTIONAL, + + -- NOTE: + -- Other map data will be added here as it is defined + -- Examples of the type of content to be added include + -- curve warnings, construction routes, etc. + ... +} + + +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- +-- Start of entries from table Data_Frames... +-- This table typicaly contains data frame entries. +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- + +AdvisorySpeed ::= SEQUENCE { + type AdvisorySpeedType, + -- the type of advisory which this is. + speed SpeedAdvice OPTIONAL, + -- See Section 11 for converting and translating speed + -- expressed in mph into units of m/s + -- This element is optional ONLY when superceded + -- by the presence of a regional speed element found in + -- Reg-AdvisorySpeed entry + confidence SpeedConfidence OPTIONAL, + -- A confidence value for the above speed + distance ZoneLength OPTIONAL, + -- Unit = 1 meter, + -- 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 RestrictionClassID OPTIONAL, + -- the vehicle types to which it applies + -- when absent, the AdvisorySpeed applies to + -- all motor vehicle types + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL, + ... + } + +AdvisorySpeedList ::= SEQUENCE (SIZE(1..16)) OF AdvisorySpeed + +ComputedLane ::= SEQUENCE { + -- Data needed to created a computed lane + referenceLaneId LaneID, + -- the lane ID upon which this + -- computed lane will be based + -- Lane Offset in X and Y direction + offsetXaxis CHOICE { + small DrivenLineOffsetSm, + large DrivenLineOffsetLg + }, + offsetYaxis CHOICE { + small DrivenLineOffsetSm, + large DrivenLineOffsetLg + }, + -- A path X offset value for translations of the + -- path's points when creating translated lanes. + -- The values found in the reference lane are + -- all offset based on the X and Y values from + -- the coordinates of the reference lane's + -- initial path point. + -- Lane Rotation + rotateXY Angle OPTIONAL, + -- A path rotation value for the entire lane + -- Observe that this rotates the existing orientation + -- of the referenced lane, it does not replace it. + -- Rotation occurs about the initial path point. + -- Lane Path Scale (zooming) + scaleXaxis Scale-B12 OPTIONAL, + scaleYaxis Scale-B12 OPTIONAL, + -- value for translations or zooming of the path's + -- points. The values found in the reference lane + -- are all expanded or contracted based on the X + -- and Y and width values from the coordinates of + -- the reference lane's initial path point. + -- The Z axis remains untouched. + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-ComputedLane}} OPTIONAL, + ... + } +ConnectsToList ::= SEQUENCE (SIZE(1..16)) OF Connection + +ConnectingLane ::= SEQUENCE { + lane LaneID, -- Index of the connecting lane + maneuver AllowedManeuvers OPTIONAL + -- The Maneuver between + -- the enclosing lane and this lane + -- at the stop line to connect them + } + + +Connection ::= SEQUENCE { + -- The subject lane connecting to this lane is: + connectingLane ConnectingLane, + -- The index of the connecting lane and also + -- the maneuver from the current lane to it + remoteIntersection IntersectionReferenceID OPTIONAL, + -- This entry is only used when the + -- indicated connecting lane belongs + -- to another intersection layout. This + -- provides a means to create meshes of lanes + + -- SPAT mapping details at the stop line are: + signalGroup SignalGroupID OPTIONAL, + -- The matching signal group send by + -- the SPAT message for this lane/maneuver. + -- Shall be present unless the connectingLane + -- has no signal group (is un-signalized) + userClass RestrictionClassID OPTIONAL, + -- The Restriction Class of users this applies to + -- The use of some lane/maneuver and SignalGroupID + -- pairings are restricted to selected users. + -- When absent, the SignalGroupID applies to all + + -- Movement assist details are given by: + connectionID LaneConnectionID OPTIONAL + -- An optional connection index used to + -- relate this lane connection to any dynamic + -- clearance data in the SPAT. Note that + -- the index may be shared with other + -- connections if the clearance data is common + } + + +ConnectionManeuverAssist ::= SEQUENCE { + connectionID LaneConnectionID, + -- the common connectionID used by all lanes to which + -- this data applies + -- (this value traces to ConnectsTo entries in lanes) + -- Expected Clearance Information + queueLength ZoneLength OPTIONAL, + -- Unit = 1 meter, 0 = no queue + -- The distance from the stop line to the back + -- edge of the last vehicle in the queue, + -- as measured along the lane center line. + availableStorageLength ZoneLength OPTIONAL, + -- Unit = 1 meter, 0 = no space remains + -- Distance (e.g. beginning from the downstream + -- stop-line up to a given distance) with a high + -- probability for successfully executing the + -- connecting maneuver between the two lanes + -- during the current cycle. + -- Used for enhancing the awareness of vehicles + -- to anticipate if they can pass the stop line + -- of the lane. Used for optimizing the green wave, + -- due to knowledge of vehicles waiting in front + -- of a red light (downstream). + -- The element nextTime in TimeChangeDetails + -- in the containing data frame contains the next + -- timemark at which an active phase is expected, + -- a form of storage flush interval. + waitOnStop WaitOnStopline OPTIONAL, + -- If "true", the vehicles on this specific connecting + -- maneuver have to stop on the stop-line and not + -- to enter the collision area + pedBicycleDetect PedestrianBicycleDetect OPTIONAL, + -- true if ANY ped or bicycles are detected crossing + -- the above lanes. Set to false ONLY if there is a + -- high certainty that there are none present, + -- otherwise element is not sent. + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL, + ... + } + +DataParameters ::= SEQUENCE { + processMethod IA5String(SIZE(1..255)) OPTIONAL, + processAgency IA5String(SIZE(1..255)) OPTIONAL, + lastCheckedDate IA5String(SIZE(1..255)) OPTIONAL, + geoidUsed IA5String(SIZE(1..255)) OPTIONAL, + ... + } + +EnabledLaneList ::= SEQUENCE (SIZE(1..16)) OF LaneID + -- The unique ID numbers for each + -- lane object which is 'active' + -- as part of the dynamic map contents. + +GenericLane ::= SEQUENCE { + laneID LaneID, + -- The unique ID number assigned + -- to this lane object + name DescriptiveName OPTIONAL, + -- often for debug use only + -- but at times used to name ped crossings + ingressApproach ApproachID OPTIONAL, -- inbound + egressApproach ApproachID OPTIONAL, -- outbound + -- Approach IDs to which this lane belongs + laneAttributes LaneAttributes, + -- All Attribute information about + -- the basic selected lane type + -- Directions of use, Geometric co-sharing + -- and Type Specific Attributes + -- These Attributes are 'lane - global' that is, + -- they are true for the entire length of the lane + maneuvers AllowedManeuvers OPTIONAL, + -- the permitted maneuvers for this lane + nodeList 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 ConnectsToList OPTIONAL, + -- 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 OverlayLaneList OPTIONAL, + -- A list of any lanes which have spatial paths that + -- overlay (run on top of, and not simply cross) + -- the path of this lane when used + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-GenericLane}} OPTIONAL, + ... + } + +IntersectionAccessPoint ::= CHOICE { + lane LaneID, + approach ApproachID, + connection LaneConnectionID, + ... + } + +IntersectionGeometry ::= SEQUENCE { + name DescriptiveName OPTIONAL, + -- For debug use only + id IntersectionReferenceID, + -- A globally unique value set, + -- consisting of a regionID and + -- intersection ID assignment + revision MsgCount, + + -- Required default values about lane descriptions follow + refPoint Position3D, -- The reference from which subsequent + -- data points are offset until a new + -- point is used. + laneWidth LaneWidth OPTIONAL, + -- Reference width used by all subsequent + -- lanes unless a new width is given + speedLimits SpeedLimitList OPTIONAL, + -- Reference regulatory speed limits + -- used by all subsequent + -- lanes unless a new speed is given + -- See Section 11 for converting and + -- translating speed expressed in mph + -- into units of m/s + -- Complete details regarding each lane type in this intersection + laneSet LaneList, -- Data about one or more lanes + -- (all lane data is found here) + + -- Data describing how to use and request preemption and + -- priority services from this intersection (if supported) + -- NOTE Additonal data may be added in the next release of the + -- standard at this point to handle this concept + preemptPriorityData PreemptPriorityList OPTIONAL, + -- data about one or more regional + -- preempt or priority zones + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-IntersectionGeometry}} OPTIONAL, + ... + } + +IntersectionGeometryList ::= SEQUENCE (SIZE(1..32)) OF IntersectionGeometry + +IntersectionReferenceID ::= SEQUENCE { + region RoadRegulatorID OPTIONAL, + -- a globally unique regional assignment value + -- typical assigned to a regional DOT authority + -- the value zero shall be used for testing needs + id IntersectionID + -- a unique mapping to the intersection + -- in question within the above region of use + } + +IntersectionState ::= SEQUENCE { + name DescriptiveName OPTIONAL, + -- human readable name for intersection + -- to be used only in debug mode + id 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 MsgCount, + status IntersectionStatusObject, + -- general status of the controller(s) + moy MinuteOfTheYear OPTIONAL, + -- Minute of current UTC year + -- used only with messages to be archived + timeStamp DSecond OPTIONAL, + -- the mSec point in the current UTC minute that + -- this message was constructed + enabledLanes EnabledLaneList OPTIONAL, + -- a list of lanes where the RevocableLane bit + -- has been set which are now active and + -- therefore part of the current intersection + states MovementList, + -- 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 ManeuverAssistList OPTIONAL, + -- Assist data + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-IntersectionState}} OPTIONAL, + ... + } + +IntersectionStateList ::= SEQUENCE (SIZE(1..32)) OF IntersectionState + +LaneAttributes ::= SEQUENCE { + directionalUse LaneDirection, -- directions of lane use + sharedWith LaneSharing, -- co-users of the lane path + laneType LaneTypeAttributes, -- specific lane type data + regional RegionalExtension {{Reg-LaneAttributes}} OPTIONAL + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +LaneDataAttribute ::= CHOICE { + -- Segment attribute types and the data needed for each + pathEndPointAngle DeltaAngle, + -- adjusts final point/width slant + -- of the lane to align with the stop line + laneCrownPointCenter RoadwayCrownAngle, + -- sets the canter of the road bed + -- from centerline point + laneCrownPointLeft RoadwayCrownAngle, + -- sets the canter of the road bed + -- from left edge + laneCrownPointRight RoadwayCrownAngle, + -- sets the canter of the road bed + -- from right edge + laneAngle MergeDivergeNodeAngle, + -- the angle or direction of another lane + -- this is required to support Japan style + -- when a merge point angle is required + speedLimits SpeedLimitList, + -- Reference regulatory speed limits + -- used by all segments + + -- Add others as needed, in regional space + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-LaneDataAttribute}}, + ... + } + +LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute +*/ + +LaneList ::= SEQUENCE (SIZE(1..255)) OF GenericLane + +LaneSharing ::= BIT STRING { + -- With bits as defined: + overlappingLaneDescriptionProvided (0), + -- Assert when another lane object is present to describe the + -- path of the overlapping shared lane + -- this construct is not used for lane objects which simply cross + multipleLanesTreatedAsOneLane (1), + -- Assert if the lane object path and width details represents + -- multiple lanes within it that are not further described + + -- Various modes and type of traffic that may share this lane: + otherNonMotorizedTrafficTypes (2), -- horse drawn etc. + individualMotorizedVehicleTraffic (3), + busVehicleTraffic (4), + taxiVehicleTraffic (5), + pedestriansTraffic (6), + cyclistVehicleTraffic (7), + trackedVehicleTraffic (8), + pedestrianTraffic (9) + } (SIZE (10)) + -- All zeros would indicate 'not shared' and 'not overlapping' + +LaneTypeAttributes ::= CHOICE { + vehicle LaneAttributes-Vehicle, -- motor vehicle lanes + crosswalk LaneAttributes-Crosswalk, -- pedestrian crosswalks + bikeLane LaneAttributes-Bike, -- bike lanes + sidewalk LaneAttributes-Sidewalk, -- pedestrian sidewalk paths + median LaneAttributes-Barrier, -- medians & channelization + striping LaneAttributes-Striping, -- roadway markings + trackedVehicle LaneAttributes-TrackedVehicle, -- trains and trolleys + parking LaneAttributes-Parking, -- parking and stopping lanes + ... + } + +ManeuverAssistList ::= SEQUENCE (SIZE(1..16)) OF ConnectionManeuverAssist + +MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent + +MovementEvent ::= SEQUENCE { + eventState MovementPhaseState, + -- Consisting of: + -- Phase state (the basic 11 states) + -- Directional, protected, or permissive state + + timing TimeChangeDetails OPTIONAL, + -- Timing Data in UTC time stamps for event + -- includes start and min/max end times of phase + -- confidence and estimated next occurrence + + speeds AdvisorySpeedList OPTIONAL, + -- various speed advisories for use by + -- general and specific types of vehicles + -- supporting green-wave and other flow needs + -- See Section 11 for converting and translating + -- speed expressed in mph into units of m/s + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MovementEvent}} OPTIONAL, + ... + } + +MovementList ::= SEQUENCE (SIZE(1..255)) OF MovementState + +MovementState ::= SEQUENCE { + movementName DescriptiveName OPTIONAL, + -- uniquely defines movement by name + -- human readable name for intersection + -- to be used only in debug mode + signalGroup SignalGroupID, + -- the group id is used to map to lists + -- of lanes (and their descriptions) + -- which this MovementState data applies to + -- see comments in the Remarks for usage details + state-time-speed MovementEventList, + -- Consisting of sets of movement data with: + -- a) SignalPhaseState + -- b) TimeChangeDetails, and + -- c) AdvisorySpeeds (optional ) + -- Note one or more of the movement events may be for + -- a future time and that this allows conveying multiple + -- predictive phase and movement timing for various uses + -- for the current signal group + maneuverAssistList ManeuverAssistList OPTIONAL, + -- This information may also be placed in the + -- IntersectionState when common information applies to + -- different lanes in the same way + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MovementState}} OPTIONAL, + ... + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +NodeAttributeSetXY ::= SEQUENCE { + localNode NodeAttributeXYList OPTIONAL, + -- Attribute states which pertain to this node point + disabled SegmentAttributeXYList OPTIONAL, + -- Attribute states which are disabled at this node point + enabled SegmentAttributeXYList OPTIONAL, + -- Attribute states which are enabled at this node point + -- and which remain enabled until disabled or the lane ends + data LaneDataAttributeList OPTIONAL, + -- Attributes which require an additional data values + -- some of these are local to the node point, while others + -- persist with the provided values until changed + -- and this is indicated in each entry + dWidth Offset-B10 OPTIONAL, + -- A value added to the current lane width + -- at this node and from this node onwards, in 1cm steps + -- lane width between nodes are a linear taper between pts + -- the value of zero shall not be sent here + dElevation Offset-B10 OPTIONAL, + -- A value added to the current Elevation + -- at this node from this node onwards, in 10cm steps + -- elevations between nodes are a linear taper between pts + -- the value of zero shall not be sent here + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, + ... + } + +NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY + +NodeAttributeXY ::= ENUMERATED { + -- Various values which pertain only to the current node point + + -- General Items + reserved, + stopLine, -- point where a mid-path stop line exists + -- See also 'do not block' for segments + + -- Path finish details + roundedCapStyleA, -- Used to control final path rounded end shape + -- with edge of curve at final point in a circle + roundedCapStyleB, -- Used to control final path rounded end shape + -- with edge of curve extending 50% of width past + -- final point in a circle + + -- Topography Points (items with no concept of a distance along the path) + mergePoint, -- Japan merge with 1 or more lanes + divergePoint, -- Japan diverge with 1 or more lanes + downstreamStopLine, -- Japan style downstream intersection + -- (a 2nd intersection) stop line + downstreamStartNode, -- Japan style downstream intersection + -- (a 2nd intersection) start node + + -- Pedestrian Support Attributes + closedToTraffic, -- where a pedestrian may NOT go + -- to be used during construction events + safeIsland, -- a pedestrian safe stopping point + -- also called a traffic island + -- This usage described a point feature on a path, + -- other entries can describe a path + curbPresentAtStepOff, -- the sidewalk to street curb is NOT + -- angled where it meets the edge of the + -- roadway (user must step up/down) + + -- Lane geometry details (see standard for defined shapes) + hydrantPresent, -- Or other services access + ... + } +*/ + +Node-LLmD-64b ::= SEQUENCE { + lon Longitude, + lat Latitude + } + + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop + Node-XY-20b ::= SEQUENCE { + x Offset-B10, + y Offset-B10 + } + +Node-XY-22b ::= SEQUENCE { + x Offset-B11, + y Offset-B11 + } + + +Node-XY-24b ::= SEQUENCE { + x Offset-B12, + y Offset-B12 + } + + +Node-XY-26b ::= SEQUENCE { + x Offset-B13, + y Offset-B13 + } + + +Node-XY-28b ::= SEQUENCE { + x Offset-B14, + y Offset-B14 + } + + +Node-XY-32b ::= SEQUENCE { + x Offset-B16, + y Offset-B16 + } +*/ + +NodeListXY ::= CHOICE { + nodes NodeSetXY, + -- a lane made up of two or more + -- XY node points and any attributes + -- defined in those nodes + computed ComputedLane, + -- a lane path computed by translating + -- the data defined by another lane + ... + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +NodeOffsetPointXY ::= CHOICE { + -- Nodes with X,Y content + node-XY1 Node-XY-20b, -- node is within 5.11m of last node + node-XY2 Node-XY-22b, -- node is within 10.23m of last node + node-XY3 Node-XY-24b, -- node is within 20.47m of last node + node-XY4 Node-XY-26b, -- node is within 40.96m of last node + node-XY5 Node-XY-28b, -- node is within 81.91m of last node + node-XY6 Node-XY-32b, -- node is within 327.67m of last node + node-LatLon Node-LLmD-64b, -- node is a full 32b Lat/Lon range + regional RegionalExtension {{Reg-NodeOffsetPointXY}} + -- node which follows is of a + -- regional definition type + } + +NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY + +NodeXY ::= SEQUENCE { + delta NodeOffsetPointXY, + -- A choice of which X,Y offset value to use + -- this includes various delta values as well a regional choices + attributes NodeAttributeSetXY OPTIONAL, + -- Any optional Attributes which are needed + -- This includes changes to the current lane width and elevation + ... +} +*/ + +OverlayLaneList ::= SEQUENCE (SIZE(1..5)) OF LaneID + -- The unique ID numbers for any lane object which have + -- spatial paths that overlay (run on top of, and not + -- simply cross with) the current lane. + -- Such as a train path that overlays a motor vehicle + -- lane object for a roadway segment. + +Position3D ::= SEQUENCE { + lat Latitude, -- in 1/10th micro degrees + long Longitude, -- in 1/10th micro degrees + elevation Elevation OPTIONAL, -- in 10 cm units + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-Position3D}} OPTIONAL, + ... + } + +PreemptPriorityList ::= SEQUENCE (SIZE(1..32)) OF SignalControlZone + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +RegulatorySpeedLimit ::= SEQUENCE { + type SpeedLimitType, + -- The type of regulatory speed which follows + speed Velocity + -- The speed in units of 0.02 m/s + -- See Section 11 for converting and translating + -- speed expressed in mph into units of m/s + } +*/ + +RequestorDescription ::= SEQUENCE { + id VehicleID, + -- The ID used in the BSM or CAM of the requestor + -- This ID is presumed not to change + -- during the exchange + type RequestorType OPTIONAL, + -- Information regarding all type and class data + -- about the requesting vehicle + position RequestorPositionVector OPTIONAL, + -- The location of the requesting vehicle + name DescriptiveName OPTIONAL, + -- A human readable name for debugging use + -- Support for Transit requests + routeName DescriptiveName OPTIONAL, + -- A string for transit operations use + transitStatus TransitVehicleStatus OPTIONAL, + -- current vehicle state (loading, etc.) + transitOccupancy TransitVehicleOccupancy OPTIONAL, + -- current vehicle occupancy + transitSchedule DeltaTime OPTIONAL, + -- current vehicle schedule adherence + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RequestorDescription}} OPTIONAL, + ... + } + +RequestorPositionVector ::= SEQUENCE { + position Position3D, + heading Angle OPTIONAL, + speed TransmissionAndSpeed OPTIONAL, + ... + } + +RequestorType ::= SEQUENCE { + -- Defines who is requesting + role BasicVehicleRole, -- Basic role of this user at this time + subrole RequestSubRole OPTIONAL, -- A local list with role based items + + -- Defines what kind of request (a level of importance in the Priority Scheme) + request RequestImportanceLevel OPTIONAL, -- A local list with request items + + -- Additional classification details + iso3883 Iso3833VehicleType OPTIONAL, + hpmsType VehicleType OPTIONAL, -- HPMS classification types + + regional RegionalExtension {{Reg-RequestorType}} OPTIONAL, + ... + } + +RestrictionClassAssignment ::= SEQUENCE { + id RestrictionClassID, + -- the unique value (within an intersection or local region) + -- that is assigned to this group of users + users RestrictionUserTypeList + -- The list of user types/classes + -- to which this restriction ID applies + } + +RestrictionClassList ::= SEQUENCE (SIZE(1..254)) OF RestrictionClassAssignment + +RestrictionUserTypeList ::= SEQUENCE (SIZE(1..16)) OF RestrictionUserType + +RestrictionUserType ::= CHOICE { + basicType RestrictionAppliesTo, + -- a set of the most commonly used types + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RestrictionUserType}}, + ... + } + +RoadLaneSetList ::= SEQUENCE (SIZE(1..255)) OF GenericLane + +RoadSegmentReferenceID ::= SEQUENCE { + region RoadRegulatorID OPTIONAL, + -- a globally unique regional assignment value + -- typically assigned to a regional DOT authority + -- the value zero shall be used for testing needs + id RoadSegmentID + -- a unique mapping to the road segment + -- in question within the above region of use + -- during its period of assignment and use + -- note that unlike intersectionID values, + -- this value can be reused by the region + } + +RoadSegment ::= SEQUENCE { + name DescriptiveName OPTIONAL, + id RoadSegmentReferenceID, + -- a globally unique value for the segment + revision MsgCount, + -- Required default values about the descriptions to follow + refPoint Position3D, -- the reference from which subsequent + -- data points are offset until a new + -- point is used. + laneWidth LaneWidth OPTIONAL, + -- Reference width used by all subsequent + -- lanes unless a new width is given + speedLimits SpeedLimitList OPTIONAL, + -- Reference regulatory speed limits + -- used by all subsequent + -- lanes unless a new speed is given + -- See Section 11 for converting and + -- translating speed expressed in mph + -- into units of m/s + + -- Data describing disruptions in the RoadSegment + -- such as work zones etc will be added here; + -- in the US the SAE ITIS codes would be used here + -- The details regarding each lane type in the RoadSegment + roadLaneSet RoadLaneSetList, + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RoadSegment}} OPTIONAL, + ... + } + +RoadSegmentList ::= SEQUENCE (SIZE(1..32)) OF RoadSegment + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +SegmentAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF SegmentAttributeXY +*/ + +SignalControlZone ::= SEQUENCE { + zone RegionalExtension {{Reg-SignalControlZone}}, + ... + } + +SignalRequesterInfo ::= SEQUENCE { + -- These three items serve to uniquely identify the requester + -- and the specific request to all parties + id VehicleID, + request RequestID, + sequenceNumber MsgCount, + role BasicVehicleRole OPTIONAL, + + typeData RequestorType OPTIONAL, + -- Used when addition data besides the role + -- is needed, at which point the role entry + -- above is not sent. + ... + } + +SignalRequestList ::= SEQUENCE (SIZE(1..32)) OF SignalRequestPackage + +SignalRequestPackage ::= SEQUENCE { + request SignalRequest, + -- The specific request to the intersection + -- contains IntersectionID, request type, + -- requested action (approach/lane request) + + -- The Estimated Time of Arrival (ETA) when the service is requested + minute MinuteOfTheYear OPTIONAL, + second DSecond OPTIONAL, + duration DSecond OPTIONAL, + -- The duration value is used to provide a short interval that + -- extends the ETA so that the requesting vehicle can arrive at + -- the point of service with uncertainty or with some desired + -- duration of service. This concept can be used to avoid needing + -- to frequently update the request. + -- The requester must update the ETA and duration values if the + -- period of services extends beyond the duration time. + -- It should be assumed that if the vehicle does not clear the + -- intersection when the duration is reached, the request will + -- be cancelled and the intersection will revert to + -- normal operation. + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL, + ... + } + +SignalRequest ::= SEQUENCE { + -- the unique ID of the target intersection + id IntersectionReferenceID, + + -- The unique requestID used by the requestor + requestID RequestID, + + -- The type of request or cancel for priority or preempt use + -- when a prior request is canceled, only the requestID is needed + requestType PriorityRequestType, + + -- In typical use either an approach or a lane number would + -- be given, this indicates the requested + -- path through the intersection to the degree it is known. + inBoundLane IntersectionAccessPoint, + -- desired entry approach or lane + outBoundLane IntersectionAccessPoint OPTIONAL, + -- desired exit approach or lane + -- the values zero is used to indicate + -- intent to stop within the intersection + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequest}} OPTIONAL, + ... + } + +SignalStatusList ::= SEQUENCE (SIZE(1..32)) OF SignalStatus + +SignalStatusPackageList ::= SEQUENCE (SIZE(1..32)) OF SignalStatusPackage + +SignalStatusPackage ::= SEQUENCE { + -- The party that made the initial SRM request + requester SignalRequesterInfo OPTIONAL, + -- The lanes or approaches used in the request + inboundOn IntersectionAccessPoint, -- estimated lane / approach of vehicle + outboundOn IntersectionAccessPoint OPTIONAL, + + -- The Estimated Time of Arrival (ETA) when the service is requested + -- This data echos the data of the request + minute MinuteOfTheYear OPTIONAL, + second DSecond OPTIONAL, + duration DSecond OPTIONAL, + + -- the SRM status for this request + status PrioritizationResponseStatus, + -- Status of request, this may include rejection + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatusPackage}} OPTIONAL, + ... + } + +SignalStatus ::= SEQUENCE { + sequenceNumber MsgCount, + -- changed whenever the below contents have change + id IntersectionReferenceID, + -- this provides a unique mapping to the + -- intersection map in question + -- which provides complete location + -- and approach/movement/lane data + -- as well as zones for priority/preemption + sigStatus SignalStatusPackageList, + -- a list of detailed status containing all + -- priority or preemption state data, both + -- active and pending, and who requested it + -- requests which are denied are also listed + -- here for a short period of time + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatus}} OPTIONAL, + ... + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit + +SpeedLimitType ::= ENUMERATED { + unknown, -- Speed limit type not available + maxSpeedInSchoolZone, -- Only sent when the limit is active + maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time + maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc. + -- where a reduced speed is present + vehicleMinSpeed, + vehicleMaxSpeed, -- Regulatory speed limit for general traffic + vehicleNightMaxSpeed, + + truckMinSpeed, + truckMaxSpeed, + truckNightMaxSpeed, + + vehiclesWithTrailersMinSpeed, + vehiclesWithTrailersMaxSpeed, + vehiclesWithTrailersNightMaxSpeed, + ... + } +*/ + +TimeChangeDetails ::= SEQUENCE { + startTime TimeMark OPTIONAL, + -- When this phase 1st started + minEndTime TimeMark, + -- Expected shortest end time + maxEndTime TimeMark OPTIONAL, + -- Expected longest end time + + likelyTime TimeMark OPTIONAL, + -- Best predicted value based on other data + confidence TimeIntervalConfidence OPTIONAL, + -- Applies to above time element only + + nextTime TimeMark OPTIONAL + -- A rough estimate of time when + -- this phase may next occur again + -- used to support various ECO driving power + -- management needs. + } + +TimeMark ::= INTEGER (0..36001) + -- Tenths of a second in the current or next hour + -- In units of 1/10th second from UTC time + -- A range of 0~36000 covers one hour + -- The values 35991..36000 are used when a leap second occurs + -- The value 36001 is used to indicate time >3600 seconds + -- 36002 is to be used when value undefined or unknown + -- Note that this is NOT expressed in GPS time + -- or in local time + +TransmissionAndSpeed ::= SEQUENCE { + transmisson TransmissionState, + speed Velocity + } + +VehicleID ::= CHOICE { + entityID TemporaryID, + stationID StationID + } + + +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- +-- Start of entries from table Data_Elements... +-- This table typicaly contains data element entries. +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- + +AdvisorySpeedType ::= ENUMERATED { + none (0), + greenwave (1), + ecoDrive (2), + transit (3), + ... + } -- Note: subject to further growth + +AllowedManeuvers ::= BIT STRING { + -- With bits as defined: + -- Allowed maneuvers at path end (stop line) + -- All maneuvers with bits not set are therefore prohibited ! + -- A value of zero shall be used for unknown, indicating no Maneuver + maneuverStraightAllowed (0), + -- a Straight movement is allowed in this lane + maneuverLeftAllowed (1), + -- a Left Turn movement is allowed in this lane + maneuverRightAllowed (2), + -- a Right Turn movement is allowed in this lane + maneuverUTurnAllowed (3), + -- a U turn movement is allowed in this lane + maneuverLeftTurnOnRedAllowed (4), + -- a Stop, and then proceed when safe movement + -- is allowed in this lane + maneuverRightTurnOnRedAllowed (5), + -- a Stop, and then proceed when safe movement + -- is allowed in this lane + maneuverLaneChangeAllowed (6), + -- a movement which changes to an outer lane + -- on the egress side is allowed in this lane + -- (example: left into either outbound lane) + maneuverNoStoppingAllowed (7), + -- the vehicle should not stop at the stop line + -- (example: a flashing green arrow) + yieldAllwaysRequired (8), + -- the allowed movements above are not protected + -- (example: an permanent yellow condition) + goWithHalt (9), + -- after making a full stop, may proceed + caution (10), + -- proceed past stop line with caution + reserved1 (11) + -- used to align to 12 Bit Field + + } (SIZE(12)) + +Angle ::= INTEGER (0..28800) + -- LSB of 0.0125 degrees + -- A range of 0 to 359.9875 degrees + +ApproachID ::= INTEGER (0..15) -- zero to be used when valid value is unknown + +BasicVehicleRole ::= ENUMERATED { + -- Values used in the EU and in the US + basicVehicle (0), -- Light duty passenger vehicle type + publicTransport (1), -- Used in EU for Transit us + specialTransport (2), -- Used in EU (e.g. heavy load) + dangerousGoods (3), -- Used in EU for any HAZMAT + roadWork (4), -- Used in EU for State and Local DOT uses + roadRescue (5), -- Used in EU and in the US to include tow trucks. + emergency (6), -- Used in EU for Police, Fire and Ambulance units + safetyCar (7), -- Used in EU for Escort vehicles + -- Begin US unique numbering + none-unknown (8), -- added to follow current SAE style guidelines + truck (9), -- Heavy trucks with additional BSM rights and obligations + motorcycle (10), -- + roadSideSource (11), -- For infrastructure generated calls such as + -- fire house, rail infrastructure, roadwork site, etc. + police (12), -- + fire (13), -- + ambulance (14), -- (does not include private para-transit etc.) + dot (15), -- all roadwork vehicles + transit (16), -- all transit vehicles + slowMoving (17), -- to also include oversize etc. + stopNgo (18), -- to include trash trucks, school buses and others + -- that routinely disturb the free flow of traffic + cyclist (19), -- + pedestrian (20), -- also includes those with mobility limitations + nonMotorized (21), -- other, horse drawn, etc. + military (22), -- + ... + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +DeltaAngle ::= INTEGER (-150..150) + -- With an angle range from + -- negative 150 to positive 150 + -- in one degree steps where zero is directly + -- along the axis or the lane center line as defined by the + -- two closest points + +DeltaTime ::= INTEGER (-122 .. 121) + -- Supporting a range of +/- 20 minute in steps of 10 seconds + -- the value of -121 shall be used when more than -20 minutes + -- the value of +120 shall be used when more than +20 minutes + -- the value -122 shall be used when the value is unavailable +*/ + +DescriptiveName ::= IA5String (SIZE(1..63)) + +DrivenLineOffsetLg ::= INTEGER (-32767..32767) + -- LSB units are 1 cm. + +DrivenLineOffsetSm ::= INTEGER (-2047..2047) + -- LSB units are 1 cm. + +DSecond ::= INTEGER (0..65535) -- units of milliseconds + +DSRCmsgID ::= INTEGER (0..32767) + mapData DSRCmsgID ::= 18 -- MAP, intersections + signalPhaseAndTimingMessage DSRCmsgID ::= 19 -- SPAT + signalRequestMessage DSRCmsgID ::= 29 -- SRM + signalStatusMessage DSRCmsgID ::= 30 -- SSM + +Elevation ::= INTEGER (-4096..61439) + -- In units of 10 cm steps above or below the reference ellipsoid + -- Providing a range of -409.5 to + 6143.9 meters + -- The value -4096 shall be used when Unknown is to be sent + +IntersectionID ::= INTEGER (0..65535) + -- The values zero through 255 are allocated for testing purposes + -- Note that the value assigned to an intersection will be + -- unique within a given regional ID only + +IntersectionStatusObject ::= BIT STRING { + manualControlIsEnabled (0), + -- Timing reported is per programmed values, etc. but person + -- at cabinet can manually request that certain intervals are + -- terminated early (e.g. green). + stopTimeIsActivated (1), + -- And all counting/timing has stopped. + failureFlash (2), + -- Above to be used for any detected hardware failures, + -- e.g. conflict monitor as well as for police flash + preemptIsActive (3), + signalPriorityIsActive (4), + + -- Additional states + fixedTimeOperation (5), + -- Schedule of signals is based on time only + -- (i.e. the state can be calculated) + trafficDependentOperation (6), + -- Operation is based on different levels of traffic parameters + -- (requests, duration of gaps or more complex parameters) + standbyOperation (7), + -- Controller: partially switched off or partially amber flashing + failureMode (8), + -- Controller has a problem or failure in operation + off (9), + -- Controller is switched off + + -- Related to MAP and SPAT bindings + recentMAPmessageUpdate (10), + -- Map revision with content changes + recentChangeInMAPassignedLanesIDsUsed (11), + -- Change in MAP's assigned lanes used (lane changes) + -- Changes in the active lane list description + noValidMAPisAvailableAtThisTime (12), + -- MAP (and various lanes indexes) not available + noValidSPATisAvailableAtThisTime (13) + -- SPAT system is not working at this time + + -- Bits 14,15 reserved at this time and shall be zero + } (SIZE(16)) + + +LaneAttributes-Barrier ::= BIT STRING { + -- With bits as defined: + median-RevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + median (1), + whiteLineHashing (2), + stripedLines (3), + doubleStripedLines (4), + trafficCones (5), + constructionBarrier (6), + trafficChannels (7), + lowCurbs (8), + highCurbs (9) + -- Bits 10~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Bike ::= BIT STRING { + -- With bits as defined: + bikeRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + pedestrianUseAllowed (1), + -- The path allows pedestrian traffic, + -- if not set, this mode is prohibited + isBikeFlyOverLane (2), + -- path of lane is not at grade + fixedCycleTime (3), + -- the phases use preset times + -- i.e. there is not a 'push to cross' button + biDirectionalCycleTimes (4), + -- ped walk phases use different SignalGroupID + -- for each direction. The first SignalGroupID + -- in the first Connection represents 'inbound' + -- flow (the direction of travel towards the first + -- node point) while second SignalGroupID in the + -- next Connection entry represents the 'outbound' + -- flow. And use of RestrictionClassID entries + -- in the Connect follow this same pattern in pairs. + isolatedByBarrier (5), + unsignalizedSegmentsPresent (6) + -- The lane path consists of one of more segments + -- which are not part of a signal group ID + + -- Bits 7~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Crosswalk ::= BIT STRING { + -- With bits as defined: + -- MUTCD provides no suitable "types" to use here + crosswalkRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + bicyleUseAllowed (1), + -- The path allows bicycle traffic, + -- if not set, this mode is prohibited + isXwalkFlyOverLane (2), + -- path of lane is not at grade + fixedCycleTime (3), + -- ped walk phases use preset times + -- i.e. there is not a 'push to cross' button + biDirectionalCycleTimes (4), + -- ped walk phases use different SignalGroupID + -- for each direction. The first SignalGroupID + -- in the first Connection represents 'inbound' + -- flow (the direction of travel towards the first + -- node point) while second SignalGroupID in the + -- next Connection entry represents the 'outbound' + -- flow. And use of RestrictionClassID entries + -- in the Connect follow this same pattern in pairs. + hasPushToWalkButton (5), + -- Has a demand input + audioSupport (6), + -- audio crossing cues present + rfSignalRequestPresent (7), + -- Supports RF push to walk technologies + unsignalizedSegmentsPresent (8) + -- The lane path consists of one of more segments + -- which are not part of a signal group ID + -- Bits 9~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Parking ::= BIT STRING { + -- With bits as defined: + -- Parking use details, note that detailed restrictions such as + -- allowed hours are sent by way of ITIS codes in the TIM message + parkingRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + parallelParkingInUse (1), + headInParkingInUse (2), + doNotParkZone (3), + -- used to denote fire hydrants as well as + -- short disruptions in a parking zone + parkingForBusUse (4), + parkingForTaxiUse (5), + noPublicParkingUse (6) + -- private parking, as in front of + -- private property + -- Bits 7~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Sidewalk ::= BIT STRING { + -- With bits as defined: + sidewalk-RevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + bicyleUseAllowed (1), + -- The path allows bicycle traffic, + -- if not set, this mode is prohibited + isSidewalkFlyOverLane (2), + -- path of lane is not at grade + walkBikes (3) + -- bike traffic must dismount and walk + -- Bits 4~15 reserved and set to zero + } (SIZE (16)) + + +LaneAttributes-Striping ::= BIT STRING { + -- With bits as defined: + stripeToConnectingLanesRevocableLane (0), + -- this lane may be activated or not activated based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + stripeDrawOnLeft (1), + stripeDrawOnRight (2), + -- which side of lane to mark + stripeToConnectingLanesLeft (3), + stripeToConnectingLanesRight (4), + stripeToConnectingLanesAhead (5) + -- the stripe type should be + -- presented to the user visually + -- to reflect stripes in the + -- intersection for the type of + -- movement indicated + -- Bits 6~15 reserved and set to zero + } (SIZE (16)) + + +LaneAttributes-TrackedVehicle ::= BIT STRING { + -- With bits as defined: + spec-RevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + spec-commuterRailRoadTrack (1), + spec-lightRailRoadTrack (2), + spec-heavyRailRoadTrack (3), + spec-otherRailType (4) + -- Bits 5~15 reserved and set to zero + } (SIZE (16)) + + +LaneAttributes-Vehicle ::= BIT STRING { + -- With bits as defined: + isVehicleRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + isVehicleFlyOverLane (1), + -- path of lane is not at grade + hovLaneUseOnly (2), + restrictedToBusUse (3), + restrictedToTaxiUse (4), + restrictedFromPublicUse (5), + hasIRbeaconCoverage (6), + permissionOnRequest (7) -- e.g. to inform about a lane for e-cars + + } (SIZE (8,...)) + +LaneConnectionID ::= INTEGER (0..255) + +LaneDirection ::= BIT STRING { + -- With bits as defined: + -- Allowed directions of travel in the lane object + -- All lanes are described from the stop line outwards + ingressPath (0), + -- travel from rear of path to front + -- is allowed + egressPath (1) + -- travel from front of path to rear + -- is allowed + -- Notes: No Travel, i.e. the lane object type does not support + -- travel (medians, curbs, etc.) is indicated by not + -- asserting any bit value + -- Bi-Directional Travel (such as a ped crosswalk) is + -- indicated by asserting both of the bits + } (SIZE (2)) + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +LaneID ::= INTEGER (0..255) + -- the value 0 shall be used when the lane ID is + -- not available or not known + -- the value 255 is reserved for future use +*/ + +LayerID ::= INTEGER (0..100) + +LayerType ::= ENUMERATED { + none, + mixedContent, -- two or more of the below types + generalMapData, + intersectionData, + curveData, + roadwaySectionData, + parkingAreaData, + sharedLaneData, + ... + } + +LaneWidth ::= INTEGER (0..32767) -- units of 1 cm + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +MergeDivergeNodeAngle ::= INTEGER (-180..180) + -- In units of 1.5 degrees from north + -- the value -180 shall be used to represent + -- data is not available or unknown +*/ + +MinuteOfTheYear ::= INTEGER (0..527040) + -- the value 527040 shall be used for invalid + +MovementPhaseState ::= ENUMERATED { + -- Note that based on the regions and the operating mode not every + -- phase will be used in all transportation modes and that not + -- every phase will be used in all transportation modes + + unavailable (0), + -- This state is used for unknown or error + dark (1), + -- The signal head is dark (unlit) + + -- Reds + stop-Then-Proceed (2), + -- Often called 'flashing red' in US + -- Driver Action: + -- Stop vehicle at stop line. + -- Do not proceed unless it is safe. + -- Note that the right to proceed either right or left when + -- it is safe may be contained in the lane description to + -- handle what is called a 'right on red' + stop-And-Remain (3), + -- e.g. called 'red light' in US + -- Driver Action: + -- Stop vehicle at stop line. + -- Do not proceed. + -- Note that the right to proceed either right or left when + -- it is safe may be contained in the lane description to + -- handle what is called a 'right on red' + + -- Greens + pre-Movement (4), + -- Not used in the US, red+yellow partly in EU + -- Driver Action: + -- Stop vehicle. + -- Prepare to proceed (pending green) + -- (Prepare for transition to green/go) + permissive-Movement-Allowed (5), + -- Often called 'permissive green' in US + -- Driver Action: + -- Proceed with caution, + -- must yield to all conflicting traffic + -- Conflicting traffic may be present + -- in the intersection conflict area + protected-Movement-Allowed (6), + -- Often called 'protected green' in US + -- Driver Action: + -- Proceed, tossing caution to the wind, + -- in indicated (allowed) direction. + + -- Yellows / Ambers + -- The vehicle is not allowed to cross the stop bar if it is possible + -- to stop without danger. + permissive-clearance (7), + -- Often called 'permissive yellow' in US + -- Driver Action: + -- Prepare to stop. + -- Proceed if unable to stop, + -- Clear Intersection. + -- Conflicting traffic may be present + -- in the intersection conflict area + protected-clearance (8), + -- Often called 'protected yellow' in US + -- Driver Action: + -- Prepare to stop. + -- Proceed if unable to stop, + -- in indicated direction (to connected lane) + -- Clear Intersection. + + caution-Conflicting-Traffic (9) + -- Often called 'flashing yellow' in US + -- Often used for extended periods of time + -- Driver Action: + -- Proceed with caution, + -- Conflicting traffic may be present + -- in the intersection conflict area + } + -- The above number assignments are not used with UPER encoding + -- and are only to be used with DER or implicit encoding + +MsgCount ::= INTEGER (0..127) + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +Offset-B10 ::= INTEGER (-512..511) + -- a range of +- 5.11 meters + +Offset-B11 ::= INTEGER (-1024..1023) + -- a range of +- 10.23 meters + +Offset-B12 ::= INTEGER (-2048..2047) + -- a range of +- 20.47 meters + +Offset-B13 ::= INTEGER (-4096..4095) + -- a range of +- 40.95 meters + +Offset-B14 ::= INTEGER (-8192..8191) + -- a range of +- 81.91 meters + +Offset-B16 ::= INTEGER (-32768..32767) + -- a range of +- 327.68 meters +*/ + +PedestrianBicycleDetect ::= BOOLEAN + -- true if ANY Pedestrians or Bicyclists are + -- detected crossing the target lane or lanes + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +PrioritizationResponseStatus ::= ENUMERATED { + unknown (0), + -- Unknown state + requested (1), + -- This prioritization request was detected + -- by the traffic controller + processing (2), + -- Checking request + -- (request is in queue, other requests are prior) + watchOtherTraffic (3), + -- Cannot give full permission, + -- therefore watch for other traffic + -- Note that other requests may be present + granted (4), + -- Intervention was successful + -- and now prioritization is active + rejected (5), + -- The prioritization or preemption request was + -- rejected by the traffic controller + maxPresence (6), + -- The Request has exceeded maxPresence time + -- Used when the controller has determined that + -- the requester should then back off and + -- request an alternative. + reserviceLocked (7), + -- Prior conditions have resulted in a reservice + -- locked event: the controller requires the + -- passage of time before another similar request + -- will be accepted + ... +} +*/ + +PriorityRequestType ::= ENUMERATED { + priorityRequestTypeReserved (0), + priorityRequest (1), + priorityRequestUpdate (2), + priorityCancellation (3), + ... + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +RegionId ::= INTEGER (0..255) + noRegion RegionId ::= 0 -- Use default supplied stubs + addGrpA RegionId ::= 1 -- USA + addGrpB RegionId ::= 2 -- Japan + addGrpC RegionId ::= 3 -- EU + -- NOTE: new registered regional IDs will be added here + -- The values 128 and above are for local region use +*/ + +RequestID ::= INTEGER (0..255) + +RequestImportanceLevel ::= ENUMERATED { + requestImportanceLevelUnKnown (0), + requestImportanceLevel1 (1), -- The least important request + requestImportanceLevel2 (2), -- The values here shall be assigned + requestImportanceLevel3 (3), -- Meanings based on regional needs + requestImportanceLevel4 (4), -- for each of the basic roles which + requestImportanceLevel5 (5), -- are defined elsewhere + requestImportanceLevel6 (6), + requestImportanceLevel7 (7), + requestImportanceLevel8 (8), + requestImportanceLevel9 (9), + requestImportanceLevel10 (10), + requestImportanceLevel11 (11), + requestImportanceLevel12 (12), + requestImportanceLevel13 (13), + requestImportanceLevel14 (14), -- The most important request + requestImportanceReserved (15) -- Reserved for future use + } + +RequestSubRole ::= ENUMERATED { + requestSubRoleUnKnown (0), + requestSubRole1 (1), -- The first type of sub role + requestSubRole2 (2), -- The values here shall be assigned + requestSubRole3 (3), -- Meanings based on regional needs + requestSubRole4 (4), -- to refine and expand the basic + requestSubRole5 (5), -- roles which are defined elsewhere + requestSubRole6 (6), + requestSubRole7 (7), + requestSubRole8 (8), + requestSubRole9 (9), + requestSubRole10 (10), + requestSubRole11 (11), + requestSubRole12 (12), + requestSubRole13 (13), + requestSubRole14 (14), -- The last type of sub role + requestSubRoleReserved (15) -- Reserved for future use + } + +RestrictionAppliesTo ::= ENUMERATED { + none, -- applies to nothing + equippedTransit, -- buses etc. + equippedTaxis, + equippedOther, -- other vehicle types with + -- necessary signal phase state + -- reception equipment + emissionCompliant, -- regional variants with more + -- definitive items also exist + equippedBicycle, + weightCompliant, + heightCompliant, + -- Items dealing with traveler needs serviced by the infrastructure + -- These end users (which are not vehicles) are presumed to be suitably equipped + pedestrians, + slowMovingPersons, + wheelchairUsers, + visualDisabilities, + audioDisabilities, -- hearing + otherUnknownDisabilities, + ... + } + +RestrictionClassID ::= INTEGER (0..255) + -- An index value to identify data about classes of users + -- the value used varies with each intersection's + -- needs and is defined in the map to the assigned + -- classes of supported users. + +RoadRegulatorID ::= INTEGER (0..65535) + -- The value zero shall be used for testing only + +RoadSegmentID ::= INTEGER (0..65535) + -- The values zero to 255 shall be used for testing only + -- Note that the value assigned to an RoadSegment will be + -- unique within a given regional ID only during its use + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +RoadwayCrownAngle ::= INTEGER (-128..127) + -- In LSB units of 0.3 degrees of angle + -- over a range of -38.1 to + 38.1 degrees + -- The value -128 shall be used for unknown + -- The value zero shall be used for angles + -- which are between -0.15 and +0.15 +*/ + +Scale-B12 ::= INTEGER (-2048..2047) -- in steps of 0.05 percent + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +SignalGroupID ::= INTEGER (0..255) + -- The value 0 shall be used when the ID is + -- not available or not known + -- the value 255 is reserved to indicate a + -- permanent green movement state + -- therefore a simple 8 phase signal controller + -- device might use 1..9 as its groupIDs +*/ + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +SegmentAttributeXY ::= ENUMERATED { + -- Various values which can be Enabled and Disabled for a lane segment + + -- General Items + reserved , + doNotBlock , -- segment where a vehicle + -- may not come to a stop + whiteLine , -- segment where lane crossing not allowed + -- such as the final few meters of a lane + + -- Porous Lane states, merging, turn outs, parking etc. + + mergingLaneLeft , -- indicates porous lanes + mergingLaneRight , + + curbOnLeft , -- indicates presence of curbs + curbOnRight , + + loadingzoneOnLeft , -- loading or drop off zones + loadingzoneOnRight , + + turnOutPointOnLeft , -- opening to adjacent street/alley/road + turnOutPointOnRight , + + adjacentParkingOnLeft , -- side of road parking + adjacentParkingOnRight , + + -- Bike Lane Needs + adjacentBikeLaneOnLeft , -- presence of marked bike lanes + adjacentBikeLaneOnRight , + sharedBikeLane , -- right of way is shared with bikes + -- who may occupy entire lane width + bikeBoxInFront , + + -- Transit Needs + transitStopOnLeft , -- any form of bus/transit loading + -- with pull in-out access to lane on left + transitStopOnRight , -- any form of bus/transit loading + -- with pull in-out access to lane on right + transitStopInLane , -- any form of bus/transit loading + -- in mid path of the lane + sharedWithTrackedVehicle , -- lane is shared with train or trolley + -- not used for crossing tracks + + + -- Pedestrian Support Attributes + safeIsland , -- begin/end a safety island in path + lowCurbsPresent , -- for ADA support + rumbleStripPresent , -- for ADA support + audibleSignalingPresent , -- for ADA support + adaptiveTimingPresent , -- for ADA support + rfSignalRequestPresent , -- Supports RF push to walk technologies + partialCurbIntrusion , -- path is blocked by a median or curb + -- but at least 1 meter remains open for use + -- and at-grade passage + + -- Lane geometry details (see standard for defined shapes) + taperToLeft , -- Used to control final path shape + taperToRight , -- Used to control final path shape + taperToCenterLine , -- Used to control final path shape + + -- Parking Lane and Curb Attributes + parallelParking , -- + headInParking , -- Parking at an angle with the street + freeParking , -- no restriction on use of parking + timeRestrictionsOnParking , -- Parking is not permitted at all times + -- typically used when the 'parking' lane + -- becomes a driving lane at times + costToPark , -- Used where parking has a cost + midBlockCurbPresent , -- a protruding curb near lane edge + unEvenPavementPresent , -- a disjoint height at lane edge + ... + } +*/ + +SpeedAdvice ::= INTEGER (0..500) + -- LSB units are 0.1 m/s^2 + -- the value 499 shall be used for values at or greater than 49.9 m/s + -- the value 500 shall be used to indicate that speed is unavailable + + +TemporaryID ::= OCTET STRING (SIZE(4)) + +TimeIntervalConfidence ::= INTEGER (0..15) + -- Value Probability + -- 0 21% + -- 1 36% + -- 2 47% + -- 3 56% + -- 4 62% + -- 5 68% + -- 6 73% + -- 7 77% + -- 8 81% + -- 9 85% + -- 10 88% + -- 11 91% + -- 12 94% + -- 13 96% + -- 14 98% + -- 15 100% + +TransitVehicleOccupancy ::= ENUMERATED { + occupancyUnknown (0), + occupancyEmpty (1), + occupancyVeryLow (2), + occupancyLow (3), + occupancyMed (4), + occupancyHigh (5), + occupancyNearlyFull (6), + occupancyFull (7) + } + +TransitVehicleStatus ::= BIT STRING { + loading (0), -- parking and unable to move at this time + anADAuse (1), -- an ADA access is in progress (wheelchairs, kneeling, etc.) + aBikeLoad (2), -- loading of a bicycle is in progress + doorOpen (3), -- a vehicle door is open for passenger access + charging (4), -- a vehicle is connected to charging point + atStopLine (5) -- a vehicle is at the stop line for the lane it is in + } (SIZE(8)) + +TransmissionState ::= ENUMERATED { + neutral (0), -- Neutral + park (1), -- Park + forwardGears (2), -- Forward gears + reverseGears (3), -- Reverse gears + reserved1 (4), + reserved2 (5), + reserved3 (6), + unavailable (7) -- not-equipped or unavailable value, + -- Any related speed is relative to the vehicle reference frame used + } + +VehicleType ::= ENUMERATED { + none (0), -- Not Equipped, Not known or unavailable + unknown (1), -- Does not fit any other category + special (2), -- Special use + moto (3), -- Motorcycle + car (4), -- Passenger car + carOther (5), -- Four tire single units + bus (6), -- Buses + axleCnt2 (7), -- Two axle, six tire single units + axleCnt3 (8), -- Three axle, single units + axleCnt4 (9), -- Four or more axle, single unit + axleCnt4Trailer (10), -- Four or less axle, single trailer + axleCnt5Trailer (11), -- Five or less axle, single trailer + axleCnt6Trailer (12), -- Six or more axle, single trailer + axleCnt5MultiTrailer (13), -- Five or less axle, multi-trailer + axleCnt6MultiTrailer (14), -- Six axle, multi-trailer + axleCnt7MultiTrailer (15), -- Seven or more axle, multi-trailer + ... + } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s + -- The value 8191 indicates that + -- velocity is unavailable +*/ + +WaitOnStopline ::= BOOLEAN -- + -- True or False + -- If "true", the vehicles on this specific connecting + -- maneuver have to stop on the stop-line + -- and not to enter the collision area + +ZoneLength ::= INTEGER (0..10000) + -- Unit = 1 meter, 0 = unknown, + -- The value 10000 to be used for Distances >=10000 m + -- (e.g. from known point to another point along a + -- known path, often against traffic flow direction + -- when used for measuring queues) + +END + + diff --git a/asn1/IS/ISO_TS_19091/DSRC_REGION_noCircular.asn b/asn1/IS/ISO_TS_19091/DSRC_REGION_noCircular.asn new file mode 100644 index 0000000..f352d2a --- /dev/null +++ b/asn1/IS/ISO_TS_19091/DSRC_REGION_noCircular.asn @@ -0,0 +1,419 @@ +--FIXME RGY moved here from file SPAT_MAP_ISO_TS_19091.asn + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: DSRC +-- ISO TS 19091 30.08.2016 +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +--FIXME RGY definitions are moved here from IS-DSRC and IS-REGION; created to cut circular import loops amongst ASN.1 files +DSRC-REGION-noCircular { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +Longitude, Latitude FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } + +Control-addGrpC FROM AddGrpC-noCircular { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) }; + +------------------------------------------------------ +--FIXME RGY BELOW ARE DEFINITIONS MOVED FROM DSRC +------------------------------------------------------ + +DeltaAngle ::= INTEGER (-150..150) + -- With an angle range from + -- negative 150 to positive 150 + -- in one degree steps where zero is directly + -- along the axis or the lane center line as defined by the + -- two closest points + +DeltaTime ::= INTEGER (-122 .. 121) + -- Supporting a range of +/- 20 minute in steps of 10 seconds + -- the value of -121 shall be used when more than -20 minutes + -- the value of +120 shall be used when more than +20 minutes + -- the value -122 shall be used when the value is unavailable + +LaneDataAttribute ::= CHOICE { + -- Segment attribute types and the data needed for each + pathEndPointAngle DeltaAngle, + -- adjusts final point/width slant + -- of the lane to align with the stop line + laneCrownPointCenter RoadwayCrownAngle, + -- sets the canter of the road bed + -- from centerline point + laneCrownPointLeft RoadwayCrownAngle, + -- sets the canter of the road bed + -- from left edge + laneCrownPointRight RoadwayCrownAngle, + -- sets the canter of the road bed + -- from right edge + laneAngle MergeDivergeNodeAngle, + -- the angle or direction of another lane + -- this is required to support Japan style + -- when a merge point angle is required + speedLimits SpeedLimitList, + -- Reference regulatory speed limits + -- used by all segments + + -- Add others as needed, in regional space + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-LaneDataAttribute}}, + ... + } + +LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute + +LaneID ::= INTEGER (0..255) + -- the value 0 shall be used when the lane ID is + -- not available or not known + -- the value 255 is reserved for future use + +MergeDivergeNodeAngle ::= INTEGER (-180..180) + -- In units of 1.5 degrees from north + -- the value -180 shall be used to represent + -- data is not available or unknown + +NodeOffsetPointXY ::= CHOICE { + -- Nodes with X,Y content + node-XY1 Node-XY-20b, -- node is within 5.11m of last node + node-XY2 Node-XY-22b, -- node is within 10.23m of last node + node-XY3 Node-XY-24b, -- node is within 20.47m of last node + node-XY4 Node-XY-26b, -- node is within 40.96m of last node + node-XY5 Node-XY-28b, -- node is within 81.91m of last node + node-XY6 Node-XY-32b, -- node is within 327.67m of last node + node-LatLon Node-LLmD-64b, -- node is a full 32b Lat/Lon range + regional RegionalExtension {{Reg-NodeOffsetPointXY}} + -- node which follows is of a + -- regional definition type + } + +Node-LLmD-64b ::= SEQUENCE { + lon Longitude, + lat Latitude + } + + +Node-XY-20b ::= SEQUENCE { + x Offset-B10, + y Offset-B10 + } + +Node-XY-22b ::= SEQUENCE { + x Offset-B11, + y Offset-B11 + } + + +Node-XY-24b ::= SEQUENCE { + x Offset-B12, + y Offset-B12 + } + + +Node-XY-26b ::= SEQUENCE { + x Offset-B13, + y Offset-B13 + } + + +Node-XY-28b ::= SEQUENCE { + x Offset-B14, + y Offset-B14 + } + + +Node-XY-32b ::= SEQUENCE { + x Offset-B16, + y Offset-B16 + } + +NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY + +NodeXY ::= SEQUENCE { + delta NodeOffsetPointXY, + -- A choice of which X,Y offset value to use + -- this includes various delta values as well a regional choices + attributes NodeAttributeSetXY OPTIONAL, + -- Any optional Attributes which are needed + -- This includes changes to the current lane width and elevation + ... +} + +NodeAttributeSetXY ::= SEQUENCE { + localNode NodeAttributeXYList OPTIONAL, + -- Attribute states which pertain to this node point + disabled SegmentAttributeXYList OPTIONAL, + -- Attribute states which are disabled at this node point + enabled SegmentAttributeXYList OPTIONAL, + -- Attribute states which are enabled at this node point + -- and which remain enabled until disabled or the lane ends + data LaneDataAttributeList OPTIONAL, + -- Attributes which require an additional data values + -- some of these are local to the node point, while others + -- persist with the provided values until changed + -- and this is indicated in each entry + dWidth Offset-B10 OPTIONAL, + -- A value added to the current lane width + -- at this node and from this node onwards, in 1cm steps + -- lane width between nodes are a linear taper between pts + -- the value of zero shall not be sent here + dElevation Offset-B10 OPTIONAL, + -- A value added to the current Elevation + -- at this node from this node onwards, in 10cm steps + -- elevations between nodes are a linear taper between pts + -- the value of zero shall not be sent here + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, + ... + } + +NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY + +NodeAttributeXY ::= ENUMERATED { + -- Various values which pertain only to the current node point + + -- General Items + reserved, + stopLine, -- point where a mid-path stop line exists + -- See also 'do not block' for segments + + -- Path finish details + roundedCapStyleA, -- Used to control final path rounded end shape + -- with edge of curve at final point in a circle + roundedCapStyleB, -- Used to control final path rounded end shape + -- with edge of curve extending 50% of width past + -- final point in a circle + + -- Topography Points (items with no concept of a distance along the path) + mergePoint, -- Japan merge with 1 or more lanes + divergePoint, -- Japan diverge with 1 or more lanes + downstreamStopLine, -- Japan style downstream intersection + -- (a 2nd intersection) stop line + downstreamStartNode, -- Japan style downstream intersection + -- (a 2nd intersection) start node + + -- Pedestrian Support Attributes + closedToTraffic, -- where a pedestrian may NOT go + -- to be used during construction events + safeIsland, -- a pedestrian safe stopping point + -- also called a traffic island + -- This usage described a point feature on a path, + -- other entries can describe a path + curbPresentAtStepOff, -- the sidewalk to street curb is NOT + -- angled where it meets the edge of the + -- roadway (user must step up/down) + + -- Lane geometry details (see standard for defined shapes) + hydrantPresent, -- Or other services access + ... + } + +Offset-B10 ::= INTEGER (-512..511) + -- a range of +- 5.11 meters + +Offset-B11 ::= INTEGER (-1024..1023) + -- a range of +- 10.23 meters + +Offset-B12 ::= INTEGER (-2048..2047) + -- a range of +- 20.47 meters + +Offset-B13 ::= INTEGER (-4096..4095) + -- a range of +- 40.95 meters + +Offset-B14 ::= INTEGER (-8192..8191) + -- a range of +- 81.91 meters + +Offset-B16 ::= INTEGER (-32768..32767) + -- a range of +- 327.68 meters + +PrioritizationResponseStatus ::= ENUMERATED { + unknown (0), + -- Unknown state + requested (1), + -- This prioritization request was detected + -- by the traffic controller + processing (2), + -- Checking request + -- (request is in queue, other requests are prior) + watchOtherTraffic (3), + -- Cannot give full permission, + -- therefore watch for other traffic + -- Note that other requests may be present + granted (4), + -- Intervention was successful + -- and now prioritization is active + rejected (5), + -- The prioritization or preemption request was + -- rejected by the traffic controller + maxPresence (6), + -- The Request has exceeded maxPresence time + -- Used when the controller has determined that + -- the requester should then back off and + -- request an alternative. + reserviceLocked (7), + -- Prior conditions have resulted in a reservice + -- locked event: the controller requires the + -- passage of time before another similar request + -- will be accepted + ... +} + +RegionId ::= INTEGER (0..255) + noRegion RegionId ::= 0 -- Use default supplied stubs + addGrpA RegionId ::= 1 -- USA + addGrpB RegionId ::= 2 -- Japan + addGrpC RegionId ::= 3 -- EU + -- NOTE: new registered regional IDs will be added here + -- The values 128 and above are for local region use + +-- Regional extensions support +REG-EXT-ID-AND-TYPE ::= CLASS { + &id RegionId UNIQUE, + &Type + } WITH SYNTAX {&Type IDENTIFIED BY &id} + +RegionalExtension {REG-EXT-ID-AND-TYPE : Set} ::= SEQUENCE { + regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), + regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) + } + +RegulatorySpeedLimit ::= SEQUENCE { + type SpeedLimitType, + -- The type of regulatory speed which follows + speed Velocity + -- The speed in units of 0.02 m/s + -- See Section 11 for converting and translating + -- speed expressed in mph into units of m/s + } + +RoadwayCrownAngle ::= INTEGER (-128..127) + -- In LSB units of 0.3 degrees of angle + -- over a range of -38.1 to + 38.1 degrees + -- The value -128 shall be used for unknown + -- The value zero shall be used for angles + -- which are between -0.15 and +0.15 + + +SegmentAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF SegmentAttributeXY + +SegmentAttributeXY ::= ENUMERATED { + -- Various values which can be Enabled and Disabled for a lane segment + + -- General Items + reserved , + doNotBlock , -- segment where a vehicle + -- may not come to a stop + whiteLine , -- segment where lane crossing not allowed + -- such as the final few meters of a lane + + -- Porous Lane states, merging, turn outs, parking etc. + + mergingLaneLeft , -- indicates porous lanes + mergingLaneRight , + + curbOnLeft , -- indicates presence of curbs + curbOnRight , + + loadingzoneOnLeft , -- loading or drop off zones + loadingzoneOnRight , + + turnOutPointOnLeft , -- opening to adjacent street/alley/road + turnOutPointOnRight , + + adjacentParkingOnLeft , -- side of road parking + adjacentParkingOnRight , + + -- Bike Lane Needs + adjacentBikeLaneOnLeft , -- presence of marked bike lanes + adjacentBikeLaneOnRight , + sharedBikeLane , -- right of way is shared with bikes + -- who may occupy entire lane width + bikeBoxInFront , + + -- Transit Needs + transitStopOnLeft , -- any form of bus/transit loading + -- with pull in-out access to lane on left + transitStopOnRight , -- any form of bus/transit loading + -- with pull in-out access to lane on right + transitStopInLane , -- any form of bus/transit loading + -- in mid path of the lane + sharedWithTrackedVehicle , -- lane is shared with train or trolley + -- not used for crossing tracks + + + -- Pedestrian Support Attributes + safeIsland , -- begin/end a safety island in path + lowCurbsPresent , -- for ADA support + rumbleStripPresent , -- for ADA support + audibleSignalingPresent , -- for ADA support + adaptiveTimingPresent , -- for ADA support + rfSignalRequestPresent , -- Supports RF push to walk technologies + partialCurbIntrusion , -- path is blocked by a median or curb + -- but at least 1 meter remains open for use + -- and at-grade passage + + -- Lane geometry details (see standard for defined shapes) + taperToLeft , -- Used to control final path shape + taperToRight , -- Used to control final path shape + taperToCenterLine , -- Used to control final path shape + + -- Parking Lane and Curb Attributes + parallelParking , -- + headInParking , -- Parking at an angle with the street + freeParking , -- no restriction on use of parking + timeRestrictionsOnParking , -- Parking is not permitted at all times + -- typically used when the 'parking' lane + -- becomes a driving lane at times + costToPark , -- Used where parking has a cost + midBlockCurbPresent , -- a protruding curb near lane edge + unEvenPavementPresent , -- a disjoint height at lane edge + ... + } + +SignalGroupID ::= INTEGER (0..255) + -- The value 0 shall be used when the ID is + -- not available or not known + -- the value 255 is reserved to indicate a + -- permanent green movement state + -- therefore a simple 8 phase signal controller + -- device might use 1..9 as its groupIDs + +SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit + +SpeedLimitType ::= ENUMERATED { + unknown, -- Speed limit type not available + maxSpeedInSchoolZone, -- Only sent when the limit is active + maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time + maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc. + -- where a reduced speed is present + vehicleMinSpeed, + vehicleMaxSpeed, -- Regulatory speed limit for general traffic + vehicleNightMaxSpeed, + + truckMinSpeed, + truckMaxSpeed, + truckNightMaxSpeed, + + vehiclesWithTrailersMinSpeed, + vehiclesWithTrailersMaxSpeed, + vehiclesWithTrailersNightMaxSpeed, + ... + } + +Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s + -- The value 8191 indicates that + -- velocity is unavailable + +------------------------------------------------------ +--FIXME RGY BELOW ARE DEFINITIONS MOVED FROM IS-REGION +------------------------------------------------------ + +Reg-LaneDataAttribute REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-NodeOffsetPointXY REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-NodeAttributeSetXY REG-EXT-ID-AND-TYPE ::= { + {Control-addGrpC IDENTIFIED BY addGrpC} , + ... +} +END diff --git a/asn1/IS/ISO_TS_19091.asn b/asn1/IS/ISO_TS_19091/ISO_TS_19091.asn similarity index 100% rename from asn1/IS/ISO_TS_19091.asn rename to asn1/IS/ISO_TS_19091/ISO_TS_19091.asn diff --git a/asn1/IS/ISO_TS_19091/REGION.asn b/asn1/IS/ISO_TS_19091/REGION.asn new file mode 100755 index 0000000..5e82f5d --- /dev/null +++ b/asn1/IS/ISO_TS_19091/REGION.asn @@ -0,0 +1,117 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 19091 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message +-- as defined in ISO TS 19091 and SAEJ2735 +-- +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: REGION +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- + +REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1) } + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +--FIXME RGY definitions moved to non-circularity module +--addGrpC, REG-EXT-ID-AND-TYPE FROM DSRC +addGrpC, REG-EXT-ID-AND-TYPE FROM DSRC-REGION-noCircular +--FIXME RGY Control-addGrpC has been moved to a non-circularity module +Control-addGrpC FROM AddGrpC-noCircular +ConnectionManeuverAssist-addGrpC, ConnectionTrajectory-addGrpC, IntersectionState-addGrpC, /*Control-addGrpC,*/ Position3D-addGrpC, RestrictionUserType-addGrpC, +SignalStatusPackage-addGrpC, MapData-addGrpC FROM AddGrpC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1)}; + + +Reg-AdvisorySpeed REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-ComputedLane REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-ConnectionManeuverAssist REG-EXT-ID-AND-TYPE ::= { + {ConnectionManeuverAssist-addGrpC IDENTIFIED BY addGrpC} , + ... +} + +Reg-GenericLane REG-EXT-ID-AND-TYPE ::= { + {ConnectionTrajectory-addGrpC IDENTIFIED BY addGrpC} , + ... +} + +Reg-IntersectionGeometry REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-IntersectionState REG-EXT-ID-AND-TYPE ::= { + {IntersectionState-addGrpC IDENTIFIED BY addGrpC} , + ... +} + +Reg-LaneAttributes REG-EXT-ID-AND-TYPE ::= { ... } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +Reg-LaneDataAttribute REG-EXT-ID-AND-TYPE ::= { ... } +*/ + +Reg-MapData REG-EXT-ID-AND-TYPE ::= { + {MapData-addGrpC IDENTIFIED BY addGrpC}, + ... +} + +Reg-MovementEvent REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-MovementState REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-NodeAttributeSetLL REG-EXT-ID-AND-TYPE ::= { ... } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +Reg-NodeAttributeSetXY REG-EXT-ID-AND-TYPE ::= { + {Control-addGrpC IDENTIFIED BY addGrpC} , + ... +} +*/ + +Reg-NodeOffsetPointLL REG-EXT-ID-AND-TYPE ::= { ... } + +/*FIXME RGY moved to IS-DSRC-REGION-noCircular to cut circular import loop +Reg-NodeOffsetPointXY REG-EXT-ID-AND-TYPE ::= { ... } +*/ + +Reg-Position3D REG-EXT-ID-AND-TYPE ::= { + {Position3D-addGrpC IDENTIFIED BY addGrpC} , + ... +} + +Reg-RequestorDescription REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-RequestorType REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-RestrictionUserType REG-EXT-ID-AND-TYPE ::= { + {RestrictionUserType-addGrpC IDENTIFIED BY addGrpC} , + ... +} + +Reg-RoadSegment REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalControlZone REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalRequest REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalRequestMessage REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalRequestPackage REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalStatus REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalStatusMessage REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-SignalStatusPackage REG-EXT-ID-AND-TYPE ::= { + { SignalStatusPackage-addGrpC IDENTIFIED BY addGrpC} , + ... +} + +Reg-SPAT REG-EXT-ID-AND-TYPE ::= { ... } + +END diff --git a/asn1/IS/ISO_TS_19321.asn b/asn1/IS/ISO_TS_19321/IVI.asn similarity index 100% rename from asn1/IS/ISO_TS_19321.asn rename to asn1/IS/ISO_TS_19321/IVI.asn diff --git a/asn1/IS/ISO_TS_24534-3.asn b/asn1/IS/ISO_TS_24534-3/ElectronicRegistrationIdentificationVehicleDataModule.asn similarity index 100% rename from asn1/IS/ISO_TS_24534-3.asn rename to asn1/IS/ISO_TS_24534-3/ElectronicRegistrationIdentificationVehicleDataModule.asn -- GitLab From f5d2e09a374b712d900179e7a474ee49f8af1341 Mon Sep 17 00:00:00 2001 From: filatov Date: Mon, 6 Mar 2017 09:56:11 +0000 Subject: [PATCH 008/320] Separation of asn.1 modules of EV-RSR --- ...ions.asn => EV_RechargingSpotReservation_PDU_Descriptions.asn} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename asn1/EV-RSR/{EV-RSR-PDU-Descriptions.asn => EV_RechargingSpotReservation_PDU_Descriptions.asn} (100%) diff --git a/asn1/EV-RSR/EV-RSR-PDU-Descriptions.asn b/asn1/EV-RSR/EV_RechargingSpotReservation_PDU_Descriptions.asn similarity index 100% rename from asn1/EV-RSR/EV-RSR-PDU-Descriptions.asn rename to asn1/EV-RSR/EV_RechargingSpotReservation_PDU_Descriptions.asn -- GitLab From ce55310049c16d296945a74ec5b5992bb05b2a90 Mon Sep 17 00:00:00 2001 From: filatov Date: Mon, 6 Mar 2017 09:57:25 +0000 Subject: [PATCH 009/320] Separation of asn.1 modules of EVCSN --- .../{EVCSN-PDU-Descriptions.asn => EVCSN_PDU_Descriptions.asn} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename asn1/EVCSN/{EVCSN-PDU-Descriptions.asn => EVCSN_PDU_Descriptions.asn} (100%) diff --git a/asn1/EVCSN/EVCSN-PDU-Descriptions.asn b/asn1/EVCSN/EVCSN_PDU_Descriptions.asn similarity index 100% rename from asn1/EVCSN/EVCSN-PDU-Descriptions.asn rename to asn1/EVCSN/EVCSN_PDU_Descriptions.asn -- GitLab From 6f94fc94d2d4fe18442a24c2759562f10e6f6ac5 Mon Sep 17 00:00:00 2001 From: filatov Date: Mon, 6 Mar 2017 09:57:51 +0000 Subject: [PATCH 010/320] Separation of asn.1 modules of ITS-Container --- asn1/ITS-Container/{ITS-Container.asn => ITS_Container.asn} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename asn1/ITS-Container/{ITS-Container.asn => ITS_Container.asn} (100%) diff --git a/asn1/ITS-Container/ITS-Container.asn b/asn1/ITS-Container/ITS_Container.asn similarity index 100% rename from asn1/ITS-Container/ITS-Container.asn rename to asn1/ITS-Container/ITS_Container.asn -- GitLab From 77ffa63eea4eb2f7616fb8b96cfd294f069a332d Mon Sep 17 00:00:00 2001 From: filatov Date: Mon, 6 Mar 2017 10:20:37 +0000 Subject: [PATCH 011/320] Separation of asn.1 modules of IS --- asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn | 146 -- asn1/IS/ISO_TS_19091/ISO_TS_19091.asn | 2077 --------------------- 2 files changed, 2223 deletions(-) delete mode 100644 asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn delete mode 100644 asn1/IS/ISO_TS_19091/ISO_TS_19091.asn diff --git a/asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn b/asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn deleted file mode 100644 index a37d593..0000000 --- a/asn1/IS/ETSI_TS_103301/ETSI_TS_103301.asn +++ /dev/null @@ -1,146 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ETSI TS 103 301 --- --- This ASN.1 was generated: 30.08.2016 --- --- This document contains the data element needed for the encoding the SPATEM, MAPEM, IVIM, SSEM and SREM message --- as defined in ETSI TS 103 301 --- --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: SPAT-MESSAGE-PDU-Descriptions --- --- This ASN.1 was created: 30.08.2016 --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -SPATEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) spatem (0) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -SPAT FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - - -SPATEM ::= SEQUENCE { - header ItsPduHeader, - spat SPAT -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: MAP-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -MAPEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) mapem (1) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -MapData FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)}; - - -MAPEM ::= SEQUENCE { - header ItsPduHeader, - map MapData -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: IVI-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -IVIM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) ivim (2) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -IviStructure FROM IVI {iso (1) standard (0) ivi (19321) version1 (1)} -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)}; - - -IVIM ::= SEQUENCE { - header ItsPduHeader, - ivi IviStructure -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: SRM-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -SREM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) srem (3) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -SignalRequestMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - -SREM ::= SEQUENCE { - header ItsPduHeader, - srm SignalRequestMessage -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: SSM-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -SSEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) ssem (4) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -SignalStatusMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - - -SSEM ::= SEQUENCE { - header ItsPduHeader, - ssm SignalStatusMessage -} - -END - diff --git a/asn1/IS/ISO_TS_19091/ISO_TS_19091.asn b/asn1/IS/ISO_TS_19091/ISO_TS_19091.asn deleted file mode 100644 index 6f8ca68..0000000 --- a/asn1/IS/ISO_TS_19091/ISO_TS_19091.asn +++ /dev/null @@ -1,2077 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 19091 --- --- This ASN.1 was generated: 30.08.2016 --- --- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message --- as defined in ISO TS 19091 and SAEJ2735 --- --- It includes the addendunm extensions for Addgrp-C (e.g. Europe) --- --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: AddGrpC --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -AddGrpC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) } - - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -IMPORTS -NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, DeltaTime, LaneID FROM DSRC -Altitude, StationID, DeltaAltitude FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - - -ConnectionManeuverAssist-addGrpC ::= SEQUENCE { - itsStationPositions ItsStationPositionList OPTIONAL, - rsuGNSSOffset NodeOffsetPointXY OPTIONAL, - ... -} - -ConnectionTrajectory-addGrpC ::= SEQUENCE { - nodes NodeSetXY, - ... -} - -Control-addGrpC ::= SEQUENCE { - ptvRequest PtvRequestType, - ... -} - -IntersectionState-addGrpC ::= SEQUENCE { - activePrioritizations PrioritizationResponseList OPTIONAL, - ... -} - -MapData-addGrpC ::= SEQUENCE { - signalHeadLocations SignalHeadLocationList OPTIONAL, - ... -} - -Position3D-addGrpC ::= SEQUENCE { - altitude Altitude, - ... -} - -PrioritizationResponseList ::= SEQUENCE SIZE(1..10) OF PrioritizationResponse - -PrioritizationResponse ::= SEQUENCE { - stationID StationID, - priorState PrioritizationResponseStatus, - signalGroup SignalGroupID, - ... -} - -RestrictionUserType-addGrpC ::= SEQUENCE { - emission EmissionType OPTIONAL, - ... -} - -SignalHeadLocationList ::= SEQUENCE (SIZE(1..64)) OF SignalHeadLocation - -SignalHeadLocation ::= SEQUENCE { - nodeXY NodeOffsetPointXY, - nodeZ DeltaAltitude, - signalGroupID SignalGroupID, - ... -} - -SignalStatusPackage-addGrpC ::= SEQUENCE { - synchToSchedule DeltaTime OPTIONAL, - ... -} - - -ItsStationPositionList::= SEQUENCE SIZE(1..5) OF ItsStationPosition - -ItsStationPosition ::= SEQUENCE { - stationID StationID, - laneID LaneID OPTIONAL, - nodeXY NodeOffsetPointXY OPTIONAL, - timeReference TimeReference OPTIONAL, - ... -} -EmissionType ::= ENUMERATED { - euro1, - euro2, - euro3, - euro4, - euro5, - euro6, - ... -} - -PtvRequestType ::= ENUMERATED { - preRequest, - mainRequest, - doorCloseRequest, - cancelRequest, - emergencyRequest, - ... -} - -TimeReference ::= INTEGER { oneMilliSec(1) } (0..65535) - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: REGION --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1) } - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -IMPORTS -addGrpC, REG-EXT-ID-AND-TYPE FROM DSRC -ConnectionManeuverAssist-addGrpC, ConnectionTrajectory-addGrpC, IntersectionState-addGrpC, Control-addGrpC, Position3D-addGrpC, RestrictionUserType-addGrpC, -SignalStatusPackage-addGrpC, MapData-addGrpC FROM AddGrpC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1)}; - -Reg-AdvisorySpeed REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-ComputedLane REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-ConnectionManeuverAssist REG-EXT-ID-AND-TYPE ::= { - {ConnectionManeuverAssist-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-GenericLane REG-EXT-ID-AND-TYPE ::= { - {ConnectionTrajectory-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-IntersectionGeometry REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-IntersectionState REG-EXT-ID-AND-TYPE ::= { - {IntersectionState-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-LaneAttributes REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-LaneDataAttribute REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-MapData REG-EXT-ID-AND-TYPE ::= { - {MapData-addGrpC IDENTIFIED BY addGrpC}, - ... -} - -Reg-MovementEvent REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-MovementState REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-NodeAttributeSetLL REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-NodeAttributeSetXY REG-EXT-ID-AND-TYPE ::= { - {Control-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-NodeOffsetPointLL REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-NodeOffsetPointXY REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-Position3D REG-EXT-ID-AND-TYPE ::= { - {Position3D-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-RequestorDescription REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-RequestorType REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-RestrictionUserType REG-EXT-ID-AND-TYPE ::= { - {RestrictionUserType-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-RoadSegment REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalControlZone REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalRequest REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalRequestMessage REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalRequestPackage REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalStatus REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalStatusMessage REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalStatusPackage REG-EXT-ID-AND-TYPE ::= { - { SignalStatusPackage-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-SPAT REG-EXT-ID-AND-TYPE ::= { ... } - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: DSRC --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -IMPORTS -StationID, Longitude, Latitude, SpeedConfidence FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } -Reg-SPAT,Reg-SignalRequestMessage, Reg-SignalStatusMessage, Reg-MapData, Reg-AdvisorySpeed, Reg-ComputedLane, Reg-ConnectionManeuverAssist, -Reg-GenericLane, Reg-IntersectionGeometry, Reg-IntersectionState, Reg-LaneAttributes, Reg-LaneDataAttribute, Reg-MovementEvent, Reg-MovementState, -Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY,Reg-Position3D, Reg-RequestorDescription, Reg-RequestorType, Reg-RestrictionUserType, Reg-RoadSegment, -Reg-SignalControlZone, Reg-SignalRequestPackage, Reg-SignalRequest, Reg-SignalStatusPackage, Reg-SignalStatus FROM REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1)} -Iso3833VehicleType FROM ElectronicRegistrationIdentificationVehicleDataModule { iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1) }; - --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Messages... --- This table typicaly contains message entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- - -MessageFrame ::= SEQUENCE { - messageId MESSAGE-ID-AND-TYPE.&id({MessageTypes}), - value MESSAGE-ID-AND-TYPE.&Type({MessageTypes}{@.messageId}), - ... - } - -MESSAGE-ID-AND-TYPE ::= CLASS { - &id DSRCmsgID UNIQUE, - &Type - } WITH SYNTAX {&Type IDENTIFIED BY &id} - -MessageTypes MESSAGE-ID-AND-TYPE ::= { - { MapData IDENTIFIED BY mapData } | - { SPAT IDENTIFIED BY signalPhaseAndTimingMessage } | - { SignalRequestMessage IDENTIFIED BY signalRequestMessage } | - { SignalStatusMessage IDENTIFIED BY signalStatusMessage }, - ... -- Expansion to be used only by the SAE J2735 DSRC TC - } - - --- Regional extensions support -REG-EXT-ID-AND-TYPE ::= CLASS { - &id RegionId UNIQUE, - &Type - } WITH SYNTAX {&Type IDENTIFIED BY &id} - -RegionalExtension {REG-EXT-ID-AND-TYPE : Set} ::= SEQUENCE { - regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), - regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) - } - -SPAT ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - name DescriptiveName OPTIONAL, - -- human readable name for this collection - -- to be used only in debug mode - - intersections IntersectionStateList, - -- sets of SPAT data (one per intersection) - - -- If PrioritizationResponse data is required, it is found - -- in the RegionalSPAT entry below - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SPAT}} OPTIONAL, - ... - } - -SignalRequestMessage ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - second DSecond, - sequenceNumber MsgCount OPTIONAL, - - requests SignalRequestList OPTIONAL, - -- Request Data for one or more signalized - -- intersections that support SRM dialogs - - requestor RequestorDescription, - -- Requesting Device and other User Data - -- contains vehicle ID (if from a vehicle) - -- as well as type data and current position - -- and may contain additional transit data - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL, - ... -} - -SignalStatusMessage ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - second DSecond, - sequenceNumber MsgCount OPTIONAL, - - -- Status Data for one of more signalized intersections - status SignalStatusList, - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL, - ... -} - -MapData ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - msgIssueRevision MsgCount, - layerType LayerType OPTIONAL, - layerID LayerID OPTIONAL, - intersections IntersectionGeometryList OPTIONAL, - -- All Intersection definitions - roadSegments RoadSegmentList OPTIONAL, - -- All roadway descriptions - - dataParameters DataParameters OPTIONAL, - -- Any meta data regarding the map contents - - restrictionList RestrictionClassList OPTIONAL, - -- Any restriction ID tables which have - -- established for these map entries - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MapData}} OPTIONAL, - - -- NOTE: - -- Other map data will be added here as it is defined - -- Examples of the type of content to be added include - -- curve warnings, construction routes, etc. - ... -} - - --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Data_Frames... --- This table typicaly contains data frame entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- - -AdvisorySpeed ::= SEQUENCE { - type AdvisorySpeedType, - -- the type of advisory which this is. - speed SpeedAdvice OPTIONAL, - -- See Section 11 for converting and translating speed - -- expressed in mph into units of m/s - -- This element is optional ONLY when superceded - -- by the presence of a regional speed element found in - -- Reg-AdvisorySpeed entry - confidence SpeedConfidence OPTIONAL, - -- A confidence value for the above speed - distance ZoneLength OPTIONAL, - -- Unit = 1 meter, - -- 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 RestrictionClassID OPTIONAL, - -- the vehicle types to which it applies - -- when absent, the AdvisorySpeed applies to - -- all motor vehicle types - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL, - ... - } - -AdvisorySpeedList ::= SEQUENCE (SIZE(1..16)) OF AdvisorySpeed - -ComputedLane ::= SEQUENCE { - -- Data needed to created a computed lane - referenceLaneId LaneID, - -- the lane ID upon which this - -- computed lane will be based - -- Lane Offset in X and Y direction - offsetXaxis CHOICE { - small DrivenLineOffsetSm, - large DrivenLineOffsetLg - }, - offsetYaxis CHOICE { - small DrivenLineOffsetSm, - large DrivenLineOffsetLg - }, - -- A path X offset value for translations of the - -- path's points when creating translated lanes. - -- The values found in the reference lane are - -- all offset based on the X and Y values from - -- the coordinates of the reference lane's - -- initial path point. - -- Lane Rotation - rotateXY Angle OPTIONAL, - -- A path rotation value for the entire lane - -- Observe that this rotates the existing orientation - -- of the referenced lane, it does not replace it. - -- Rotation occurs about the initial path point. - -- Lane Path Scale (zooming) - scaleXaxis Scale-B12 OPTIONAL, - scaleYaxis Scale-B12 OPTIONAL, - -- value for translations or zooming of the path's - -- points. The values found in the reference lane - -- are all expanded or contracted based on the X - -- and Y and width values from the coordinates of - -- the reference lane's initial path point. - -- The Z axis remains untouched. - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-ComputedLane}} OPTIONAL, - ... - } -ConnectsToList ::= SEQUENCE (SIZE(1..16)) OF Connection - -ConnectingLane ::= SEQUENCE { - lane LaneID, -- Index of the connecting lane - maneuver AllowedManeuvers OPTIONAL - -- The Maneuver between - -- the enclosing lane and this lane - -- at the stop line to connect them - } - - -Connection ::= SEQUENCE { - -- The subject lane connecting to this lane is: - connectingLane ConnectingLane, - -- The index of the connecting lane and also - -- the maneuver from the current lane to it - remoteIntersection IntersectionReferenceID OPTIONAL, - -- This entry is only used when the - -- indicated connecting lane belongs - -- to another intersection layout. This - -- provides a means to create meshes of lanes - - -- SPAT mapping details at the stop line are: - signalGroup SignalGroupID OPTIONAL, - -- The matching signal group send by - -- the SPAT message for this lane/maneuver. - -- Shall be present unless the connectingLane - -- has no signal group (is un-signalized) - userClass RestrictionClassID OPTIONAL, - -- The Restriction Class of users this applies to - -- The use of some lane/maneuver and SignalGroupID - -- pairings are restricted to selected users. - -- When absent, the SignalGroupID applies to all - - -- Movement assist details are given by: - connectionID LaneConnectionID OPTIONAL - -- An optional connection index used to - -- relate this lane connection to any dynamic - -- clearance data in the SPAT. Note that - -- the index may be shared with other - -- connections if the clearance data is common - } - - -ConnectionManeuverAssist ::= SEQUENCE { - connectionID LaneConnectionID, - -- the common connectionID used by all lanes to which - -- this data applies - -- (this value traces to ConnectsTo entries in lanes) - -- Expected Clearance Information - queueLength ZoneLength OPTIONAL, - -- Unit = 1 meter, 0 = no queue - -- The distance from the stop line to the back - -- edge of the last vehicle in the queue, - -- as measured along the lane center line. - availableStorageLength ZoneLength OPTIONAL, - -- Unit = 1 meter, 0 = no space remains - -- Distance (e.g. beginning from the downstream - -- stop-line up to a given distance) with a high - -- probability for successfully executing the - -- connecting maneuver between the two lanes - -- during the current cycle. - -- Used for enhancing the awareness of vehicles - -- to anticipate if they can pass the stop line - -- of the lane. Used for optimizing the green wave, - -- due to knowledge of vehicles waiting in front - -- of a red light (downstream). - -- The element nextTime in TimeChangeDetails - -- in the containing data frame contains the next - -- timemark at which an active phase is expected, - -- a form of storage flush interval. - waitOnStop WaitOnStopline OPTIONAL, - -- If "true", the vehicles on this specific connecting - -- maneuver have to stop on the stop-line and not - -- to enter the collision area - pedBicycleDetect PedestrianBicycleDetect OPTIONAL, - -- true if ANY ped or bicycles are detected crossing - -- the above lanes. Set to false ONLY if there is a - -- high certainty that there are none present, - -- otherwise element is not sent. - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL, - ... - } - -DataParameters ::= SEQUENCE { - processMethod IA5String(SIZE(1..255)) OPTIONAL, - processAgency IA5String(SIZE(1..255)) OPTIONAL, - lastCheckedDate IA5String(SIZE(1..255)) OPTIONAL, - geoidUsed IA5String(SIZE(1..255)) OPTIONAL, - ... - } - -EnabledLaneList ::= SEQUENCE (SIZE(1..16)) OF LaneID - -- The unique ID numbers for each - -- lane object which is 'active' - -- as part of the dynamic map contents. - -GenericLane ::= SEQUENCE { - laneID LaneID, - -- The unique ID number assigned - -- to this lane object - name DescriptiveName OPTIONAL, - -- often for debug use only - -- but at times used to name ped crossings - ingressApproach ApproachID OPTIONAL, -- inbound - egressApproach ApproachID OPTIONAL, -- outbound - -- Approach IDs to which this lane belongs - laneAttributes LaneAttributes, - -- All Attribute information about - -- the basic selected lane type - -- Directions of use, Geometric co-sharing - -- and Type Specific Attributes - -- These Attributes are 'lane - global' that is, - -- they are true for the entire length of the lane - maneuvers AllowedManeuvers OPTIONAL, - -- the permitted maneuvers for this lane - nodeList 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 ConnectsToList OPTIONAL, - -- 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 OverlayLaneList OPTIONAL, - -- A list of any lanes which have spatial paths that - -- overlay (run on top of, and not simply cross) - -- the path of this lane when used - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-GenericLane}} OPTIONAL, - ... - } - -IntersectionAccessPoint ::= CHOICE { - lane LaneID, - approach ApproachID, - connection LaneConnectionID, - ... - } - -IntersectionGeometry ::= SEQUENCE { - name DescriptiveName OPTIONAL, - -- For debug use only - id IntersectionReferenceID, - -- A globally unique value set, - -- consisting of a regionID and - -- intersection ID assignment - revision MsgCount, - - -- Required default values about lane descriptions follow - refPoint Position3D, -- The reference from which subsequent - -- data points are offset until a new - -- point is used. - laneWidth LaneWidth OPTIONAL, - -- Reference width used by all subsequent - -- lanes unless a new width is given - speedLimits SpeedLimitList OPTIONAL, - -- Reference regulatory speed limits - -- used by all subsequent - -- lanes unless a new speed is given - -- See Section 11 for converting and - -- translating speed expressed in mph - -- into units of m/s - -- Complete details regarding each lane type in this intersection - laneSet LaneList, -- Data about one or more lanes - -- (all lane data is found here) - - -- Data describing how to use and request preemption and - -- priority services from this intersection (if supported) - -- NOTE Additonal data may be added in the next release of the - -- standard at this point to handle this concept - preemptPriorityData PreemptPriorityList OPTIONAL, - -- data about one or more regional - -- preempt or priority zones - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-IntersectionGeometry}} OPTIONAL, - ... - } - -IntersectionGeometryList ::= SEQUENCE (SIZE(1..32)) OF IntersectionGeometry - -IntersectionReferenceID ::= SEQUENCE { - region RoadRegulatorID OPTIONAL, - -- a globally unique regional assignment value - -- typical assigned to a regional DOT authority - -- the value zero shall be used for testing needs - id IntersectionID - -- a unique mapping to the intersection - -- in question within the above region of use - } - -IntersectionState ::= SEQUENCE { - name DescriptiveName OPTIONAL, - -- human readable name for intersection - -- to be used only in debug mode - id 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 MsgCount, - status IntersectionStatusObject, - -- general status of the controller(s) - moy MinuteOfTheYear OPTIONAL, - -- Minute of current UTC year - -- used only with messages to be archived - timeStamp DSecond OPTIONAL, - -- the mSec point in the current UTC minute that - -- this message was constructed - enabledLanes EnabledLaneList OPTIONAL, - -- a list of lanes where the RevocableLane bit - -- has been set which are now active and - -- therefore part of the current intersection - states MovementList, - -- 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 ManeuverAssistList OPTIONAL, - -- Assist data - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-IntersectionState}} OPTIONAL, - ... - } - -IntersectionStateList ::= SEQUENCE (SIZE(1..32)) OF IntersectionState - -LaneAttributes ::= SEQUENCE { - directionalUse LaneDirection, -- directions of lane use - sharedWith LaneSharing, -- co-users of the lane path - laneType LaneTypeAttributes, -- specific lane type data - regional RegionalExtension {{Reg-LaneAttributes}} OPTIONAL - } - -LaneDataAttribute ::= CHOICE { - -- Segment attribute types and the data needed for each - pathEndPointAngle DeltaAngle, - -- adjusts final point/width slant - -- of the lane to align with the stop line - laneCrownPointCenter RoadwayCrownAngle, - -- sets the canter of the road bed - -- from centerline point - laneCrownPointLeft RoadwayCrownAngle, - -- sets the canter of the road bed - -- from left edge - laneCrownPointRight RoadwayCrownAngle, - -- sets the canter of the road bed - -- from right edge - laneAngle MergeDivergeNodeAngle, - -- the angle or direction of another lane - -- this is required to support Japan style - -- when a merge point angle is required - speedLimits SpeedLimitList, - -- Reference regulatory speed limits - -- used by all segments - - -- Add others as needed, in regional space - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-LaneDataAttribute}}, - ... - } - -LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute - -LaneList ::= SEQUENCE (SIZE(1..255)) OF GenericLane - -LaneSharing ::= BIT STRING { - -- With bits as defined: - overlappingLaneDescriptionProvided (0), - -- Assert when another lane object is present to describe the - -- path of the overlapping shared lane - -- this construct is not used for lane objects which simply cross - multipleLanesTreatedAsOneLane (1), - -- Assert if the lane object path and width details represents - -- multiple lanes within it that are not further described - - -- Various modes and type of traffic that may share this lane: - otherNonMotorizedTrafficTypes (2), -- horse drawn etc. - individualMotorizedVehicleTraffic (3), - busVehicleTraffic (4), - taxiVehicleTraffic (5), - pedestriansTraffic (6), - cyclistVehicleTraffic (7), - trackedVehicleTraffic (8), - pedestrianTraffic (9) - } (SIZE (10)) - -- All zeros would indicate 'not shared' and 'not overlapping' - -LaneTypeAttributes ::= CHOICE { - vehicle LaneAttributes-Vehicle, -- motor vehicle lanes - crosswalk LaneAttributes-Crosswalk, -- pedestrian crosswalks - bikeLane LaneAttributes-Bike, -- bike lanes - sidewalk LaneAttributes-Sidewalk, -- pedestrian sidewalk paths - median LaneAttributes-Barrier, -- medians & channelization - striping LaneAttributes-Striping, -- roadway markings - trackedVehicle LaneAttributes-TrackedVehicle, -- trains and trolleys - parking LaneAttributes-Parking, -- parking and stopping lanes - ... - } - -ManeuverAssistList ::= SEQUENCE (SIZE(1..16)) OF ConnectionManeuverAssist - -MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent - -MovementEvent ::= SEQUENCE { - eventState MovementPhaseState, - -- Consisting of: - -- Phase state (the basic 11 states) - -- Directional, protected, or permissive state - - timing TimeChangeDetails OPTIONAL, - -- Timing Data in UTC time stamps for event - -- includes start and min/max end times of phase - -- confidence and estimated next occurrence - - speeds AdvisorySpeedList OPTIONAL, - -- various speed advisories for use by - -- general and specific types of vehicles - -- supporting green-wave and other flow needs - -- See Section 11 for converting and translating - -- speed expressed in mph into units of m/s - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MovementEvent}} OPTIONAL, - ... - } - -MovementList ::= SEQUENCE (SIZE(1..255)) OF MovementState - -MovementState ::= SEQUENCE { - movementName DescriptiveName OPTIONAL, - -- uniquely defines movement by name - -- human readable name for intersection - -- to be used only in debug mode - signalGroup SignalGroupID, - -- the group id is used to map to lists - -- of lanes (and their descriptions) - -- which this MovementState data applies to - -- see comments in the Remarks for usage details - state-time-speed MovementEventList, - -- Consisting of sets of movement data with: - -- a) SignalPhaseState - -- b) TimeChangeDetails, and - -- c) AdvisorySpeeds (optional ) - -- Note one or more of the movement events may be for - -- a future time and that this allows conveying multiple - -- predictive phase and movement timing for various uses - -- for the current signal group - maneuverAssistList ManeuverAssistList OPTIONAL, - -- This information may also be placed in the - -- IntersectionState when common information applies to - -- different lanes in the same way - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MovementState}} OPTIONAL, - ... - } - -NodeAttributeSetXY ::= SEQUENCE { - localNode NodeAttributeXYList OPTIONAL, - -- Attribute states which pertain to this node point - disabled SegmentAttributeXYList OPTIONAL, - -- Attribute states which are disabled at this node point - enabled SegmentAttributeXYList OPTIONAL, - -- Attribute states which are enabled at this node point - -- and which remain enabled until disabled or the lane ends - data LaneDataAttributeList OPTIONAL, - -- Attributes which require an additional data values - -- some of these are local to the node point, while others - -- persist with the provided values until changed - -- and this is indicated in each entry - dWidth Offset-B10 OPTIONAL, - -- A value added to the current lane width - -- at this node and from this node onwards, in 1cm steps - -- lane width between nodes are a linear taper between pts - -- the value of zero shall not be sent here - dElevation Offset-B10 OPTIONAL, - -- A value added to the current Elevation - -- at this node from this node onwards, in 10cm steps - -- elevations between nodes are a linear taper between pts - -- the value of zero shall not be sent here - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, - ... - } - -NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY - -NodeAttributeXY ::= ENUMERATED { - -- Various values which pertain only to the current node point - - -- General Items - reserved, - stopLine, -- point where a mid-path stop line exists - -- See also 'do not block' for segments - - -- Path finish details - roundedCapStyleA, -- Used to control final path rounded end shape - -- with edge of curve at final point in a circle - roundedCapStyleB, -- Used to control final path rounded end shape - -- with edge of curve extending 50% of width past - -- final point in a circle - - -- Topography Points (items with no concept of a distance along the path) - mergePoint, -- Japan merge with 1 or more lanes - divergePoint, -- Japan diverge with 1 or more lanes - downstreamStopLine, -- Japan style downstream intersection - -- (a 2nd intersection) stop line - downstreamStartNode, -- Japan style downstream intersection - -- (a 2nd intersection) start node - - -- Pedestrian Support Attributes - closedToTraffic, -- where a pedestrian may NOT go - -- to be used during construction events - safeIsland, -- a pedestrian safe stopping point - -- also called a traffic island - -- This usage described a point feature on a path, - -- other entries can describe a path - curbPresentAtStepOff, -- the sidewalk to street curb is NOT - -- angled where it meets the edge of the - -- roadway (user must step up/down) - - -- Lane geometry details (see standard for defined shapes) - hydrantPresent, -- Or other services access - ... - } - -Node-LLmD-64b ::= SEQUENCE { - lon Longitude, - lat Latitude - } - - Node-XY-20b ::= SEQUENCE { - x Offset-B10, - y Offset-B10 - } - -Node-XY-22b ::= SEQUENCE { - x Offset-B11, - y Offset-B11 - } - - -Node-XY-24b ::= SEQUENCE { - x Offset-B12, - y Offset-B12 - } - - -Node-XY-26b ::= SEQUENCE { - x Offset-B13, - y Offset-B13 - } - - -Node-XY-28b ::= SEQUENCE { - x Offset-B14, - y Offset-B14 - } - - -Node-XY-32b ::= SEQUENCE { - x Offset-B16, - y Offset-B16 - } - -NodeListXY ::= CHOICE { - nodes NodeSetXY, - -- a lane made up of two or more - -- XY node points and any attributes - -- defined in those nodes - computed ComputedLane, - -- a lane path computed by translating - -- the data defined by another lane - ... - } - -NodeOffsetPointXY ::= CHOICE { - -- Nodes with X,Y content - node-XY1 Node-XY-20b, -- node is within 5.11m of last node - node-XY2 Node-XY-22b, -- node is within 10.23m of last node - node-XY3 Node-XY-24b, -- node is within 20.47m of last node - node-XY4 Node-XY-26b, -- node is within 40.96m of last node - node-XY5 Node-XY-28b, -- node is within 81.91m of last node - node-XY6 Node-XY-32b, -- node is within 327.67m of last node - node-LatLon Node-LLmD-64b, -- node is a full 32b Lat/Lon range - regional RegionalExtension {{Reg-NodeOffsetPointXY}} - -- node which follows is of a - -- regional definition type - } - -NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY - -NodeXY ::= SEQUENCE { - delta NodeOffsetPointXY, - -- A choice of which X,Y offset value to use - -- this includes various delta values as well a regional choices - attributes NodeAttributeSetXY OPTIONAL, - -- Any optional Attributes which are needed - -- This includes changes to the current lane width and elevation - ... -} - -OverlayLaneList ::= SEQUENCE (SIZE(1..5)) OF LaneID - -- The unique ID numbers for any lane object which have - -- spatial paths that overlay (run on top of, and not - -- simply cross with) the current lane. - -- Such as a train path that overlays a motor vehicle - -- lane object for a roadway segment. - -Position3D ::= SEQUENCE { - lat Latitude, -- in 1/10th micro degrees - long Longitude, -- in 1/10th micro degrees - elevation Elevation OPTIONAL, -- in 10 cm units - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-Position3D}} OPTIONAL, - ... - } - -PreemptPriorityList ::= SEQUENCE (SIZE(1..32)) OF SignalControlZone - -RegulatorySpeedLimit ::= SEQUENCE { - type SpeedLimitType, - -- The type of regulatory speed which follows - speed Velocity - -- The speed in units of 0.02 m/s - -- See Section 11 for converting and translating - -- speed expressed in mph into units of m/s - } - -RequestorDescription ::= SEQUENCE { - id VehicleID, - -- The ID used in the BSM or CAM of the requestor - -- This ID is presumed not to change - -- during the exchange - type RequestorType OPTIONAL, - -- Information regarding all type and class data - -- about the requesting vehicle - position RequestorPositionVector OPTIONAL, - -- The location of the requesting vehicle - name DescriptiveName OPTIONAL, - -- A human readable name for debugging use - -- Support for Transit requests - routeName DescriptiveName OPTIONAL, - -- A string for transit operations use - transitStatus TransitVehicleStatus OPTIONAL, - -- current vehicle state (loading, etc.) - transitOccupancy TransitVehicleOccupancy OPTIONAL, - -- current vehicle occupancy - transitSchedule DeltaTime OPTIONAL, - -- current vehicle schedule adherence - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RequestorDescription}} OPTIONAL, - ... - } - -RequestorPositionVector ::= SEQUENCE { - position Position3D, - heading Angle OPTIONAL, - speed TransmissionAndSpeed OPTIONAL, - ... - } - -RequestorType ::= SEQUENCE { - -- Defines who is requesting - role BasicVehicleRole, -- Basic role of this user at this time - subrole RequestSubRole OPTIONAL, -- A local list with role based items - - -- Defines what kind of request (a level of importance in the Priority Scheme) - request RequestImportanceLevel OPTIONAL, -- A local list with request items - - -- Additional classification details - iso3883 Iso3833VehicleType OPTIONAL, - hpmsType VehicleType OPTIONAL, -- HPMS classification types - - regional RegionalExtension {{Reg-RequestorType}} OPTIONAL, - ... - } - -RestrictionClassAssignment ::= SEQUENCE { - id RestrictionClassID, - -- the unique value (within an intersection or local region) - -- that is assigned to this group of users - users RestrictionUserTypeList - -- The list of user types/classes - -- to which this restriction ID applies - } - -RestrictionClassList ::= SEQUENCE (SIZE(1..254)) OF RestrictionClassAssignment - -RestrictionUserTypeList ::= SEQUENCE (SIZE(1..16)) OF RestrictionUserType - -RestrictionUserType ::= CHOICE { - basicType RestrictionAppliesTo, - -- a set of the most commonly used types - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RestrictionUserType}}, - ... - } - -RoadLaneSetList ::= SEQUENCE (SIZE(1..255)) OF GenericLane - -RoadSegmentReferenceID ::= SEQUENCE { - region RoadRegulatorID OPTIONAL, - -- a globally unique regional assignment value - -- typically assigned to a regional DOT authority - -- the value zero shall be used for testing needs - id RoadSegmentID - -- a unique mapping to the road segment - -- in question within the above region of use - -- during its period of assignment and use - -- note that unlike intersectionID values, - -- this value can be reused by the region - } - -RoadSegment ::= SEQUENCE { - name DescriptiveName OPTIONAL, - id RoadSegmentReferenceID, - -- a globally unique value for the segment - revision MsgCount, - -- Required default values about the descriptions to follow - refPoint Position3D, -- the reference from which subsequent - -- data points are offset until a new - -- point is used. - laneWidth LaneWidth OPTIONAL, - -- Reference width used by all subsequent - -- lanes unless a new width is given - speedLimits SpeedLimitList OPTIONAL, - -- Reference regulatory speed limits - -- used by all subsequent - -- lanes unless a new speed is given - -- See Section 11 for converting and - -- translating speed expressed in mph - -- into units of m/s - - -- Data describing disruptions in the RoadSegment - -- such as work zones etc will be added here; - -- in the US the SAE ITIS codes would be used here - -- The details regarding each lane type in the RoadSegment - roadLaneSet RoadLaneSetList, - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RoadSegment}} OPTIONAL, - ... - } - -RoadSegmentList ::= SEQUENCE (SIZE(1..32)) OF RoadSegment - -SegmentAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF SegmentAttributeXY - -SignalControlZone ::= SEQUENCE { - zone RegionalExtension {{Reg-SignalControlZone}}, - ... - } - -SignalRequesterInfo ::= SEQUENCE { - -- These three items serve to uniquely identify the requester - -- and the specific request to all parties - id VehicleID, - request RequestID, - sequenceNumber MsgCount, - role BasicVehicleRole OPTIONAL, - - typeData RequestorType OPTIONAL, - -- Used when addition data besides the role - -- is needed, at which point the role entry - -- above is not sent. - ... - } - -SignalRequestList ::= SEQUENCE (SIZE(1..32)) OF SignalRequestPackage - -SignalRequestPackage ::= SEQUENCE { - request SignalRequest, - -- The specific request to the intersection - -- contains IntersectionID, request type, - -- requested action (approach/lane request) - - -- The Estimated Time of Arrival (ETA) when the service is requested - minute MinuteOfTheYear OPTIONAL, - second DSecond OPTIONAL, - duration DSecond OPTIONAL, - -- The duration value is used to provide a short interval that - -- extends the ETA so that the requesting vehicle can arrive at - -- the point of service with uncertainty or with some desired - -- duration of service. This concept can be used to avoid needing - -- to frequently update the request. - -- The requester must update the ETA and duration values if the - -- period of services extends beyond the duration time. - -- It should be assumed that if the vehicle does not clear the - -- intersection when the duration is reached, the request will - -- be cancelled and the intersection will revert to - -- normal operation. - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL, - ... - } - -SignalRequest ::= SEQUENCE { - -- the unique ID of the target intersection - id IntersectionReferenceID, - - -- The unique requestID used by the requestor - requestID RequestID, - - -- The type of request or cancel for priority or preempt use - -- when a prior request is canceled, only the requestID is needed - requestType PriorityRequestType, - - -- In typical use either an approach or a lane number would - -- be given, this indicates the requested - -- path through the intersection to the degree it is known. - inBoundLane IntersectionAccessPoint, - -- desired entry approach or lane - outBoundLane IntersectionAccessPoint OPTIONAL, - -- desired exit approach or lane - -- the values zero is used to indicate - -- intent to stop within the intersection - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequest}} OPTIONAL, - ... - } - -SignalStatusList ::= SEQUENCE (SIZE(1..32)) OF SignalStatus - -SignalStatusPackageList ::= SEQUENCE (SIZE(1..32)) OF SignalStatusPackage - -SignalStatusPackage ::= SEQUENCE { - -- The party that made the initial SRM request - requester SignalRequesterInfo OPTIONAL, - -- The lanes or approaches used in the request - inboundOn IntersectionAccessPoint, -- estimated lane / approach of vehicle - outboundOn IntersectionAccessPoint OPTIONAL, - - -- The Estimated Time of Arrival (ETA) when the service is requested - -- This data echos the data of the request - minute MinuteOfTheYear OPTIONAL, - second DSecond OPTIONAL, - duration DSecond OPTIONAL, - - -- the SRM status for this request - status PrioritizationResponseStatus, - -- Status of request, this may include rejection - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatusPackage}} OPTIONAL, - ... - } - -SignalStatus ::= SEQUENCE { - sequenceNumber MsgCount, - -- changed whenever the below contents have change - id IntersectionReferenceID, - -- this provides a unique mapping to the - -- intersection map in question - -- which provides complete location - -- and approach/movement/lane data - -- as well as zones for priority/preemption - sigStatus SignalStatusPackageList, - -- a list of detailed status containing all - -- priority or preemption state data, both - -- active and pending, and who requested it - -- requests which are denied are also listed - -- here for a short period of time - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatus}} OPTIONAL, - ... - } - -SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit - -SpeedLimitType ::= ENUMERATED { - unknown, -- Speed limit type not available - maxSpeedInSchoolZone, -- Only sent when the limit is active - maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time - maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc. - -- where a reduced speed is present - vehicleMinSpeed, - vehicleMaxSpeed, -- Regulatory speed limit for general traffic - vehicleNightMaxSpeed, - - truckMinSpeed, - truckMaxSpeed, - truckNightMaxSpeed, - - vehiclesWithTrailersMinSpeed, - vehiclesWithTrailersMaxSpeed, - vehiclesWithTrailersNightMaxSpeed, - ... - } - -TimeChangeDetails ::= SEQUENCE { - startTime TimeMark OPTIONAL, - -- When this phase 1st started - minEndTime TimeMark, - -- Expected shortest end time - maxEndTime TimeMark OPTIONAL, - -- Expected longest end time - - likelyTime TimeMark OPTIONAL, - -- Best predicted value based on other data - confidence TimeIntervalConfidence OPTIONAL, - -- Applies to above time element only - - nextTime TimeMark OPTIONAL - -- A rough estimate of time when - -- this phase may next occur again - -- used to support various ECO driving power - -- management needs. - } - -TimeMark ::= INTEGER (0..36001) - -- Tenths of a second in the current or next hour - -- In units of 1/10th second from UTC time - -- A range of 0~36000 covers one hour - -- The values 35991..36000 are used when a leap second occurs - -- The value 36001 is used to indicate time >3600 seconds - -- 36002 is to be used when value undefined or unknown - -- Note that this is NOT expressed in GPS time - -- or in local time - -TransmissionAndSpeed ::= SEQUENCE { - transmisson TransmissionState, - speed Velocity - } - -VehicleID ::= CHOICE { - entityID TemporaryID, - stationID StationID - } - - --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Data_Elements... --- This table typicaly contains data element entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- - -AdvisorySpeedType ::= ENUMERATED { - none (0), - greenwave (1), - ecoDrive (2), - transit (3), - ... - } -- Note: subject to further growth - -AllowedManeuvers ::= BIT STRING { - -- With bits as defined: - -- Allowed maneuvers at path end (stop line) - -- All maneuvers with bits not set are therefore prohibited ! - -- A value of zero shall be used for unknown, indicating no Maneuver - maneuverStraightAllowed (0), - -- a Straight movement is allowed in this lane - maneuverLeftAllowed (1), - -- a Left Turn movement is allowed in this lane - maneuverRightAllowed (2), - -- a Right Turn movement is allowed in this lane - maneuverUTurnAllowed (3), - -- a U turn movement is allowed in this lane - maneuverLeftTurnOnRedAllowed (4), - -- a Stop, and then proceed when safe movement - -- is allowed in this lane - maneuverRightTurnOnRedAllowed (5), - -- a Stop, and then proceed when safe movement - -- is allowed in this lane - maneuverLaneChangeAllowed (6), - -- a movement which changes to an outer lane - -- on the egress side is allowed in this lane - -- (example: left into either outbound lane) - maneuverNoStoppingAllowed (7), - -- the vehicle should not stop at the stop line - -- (example: a flashing green arrow) - yieldAllwaysRequired (8), - -- the allowed movements above are not protected - -- (example: an permanent yellow condition) - goWithHalt (9), - -- after making a full stop, may proceed - caution (10), - -- proceed past stop line with caution - reserved1 (11) - -- used to align to 12 Bit Field - - } (SIZE(12)) - -Angle ::= INTEGER (0..28800) - -- LSB of 0.0125 degrees - -- A range of 0 to 359.9875 degrees - -ApproachID ::= INTEGER (0..15) -- zero to be used when valid value is unknown - -BasicVehicleRole ::= ENUMERATED { - -- Values used in the EU and in the US - basicVehicle (0), -- Light duty passenger vehicle type - publicTransport (1), -- Used in EU for Transit us - specialTransport (2), -- Used in EU (e.g. heavy load) - dangerousGoods (3), -- Used in EU for any HAZMAT - roadWork (4), -- Used in EU for State and Local DOT uses - roadRescue (5), -- Used in EU and in the US to include tow trucks. - emergency (6), -- Used in EU for Police, Fire and Ambulance units - safetyCar (7), -- Used in EU for Escort vehicles - -- Begin US unique numbering - none-unknown (8), -- added to follow current SAE style guidelines - truck (9), -- Heavy trucks with additional BSM rights and obligations - motorcycle (10), -- - roadSideSource (11), -- For infrastructure generated calls such as - -- fire house, rail infrastructure, roadwork site, etc. - police (12), -- - fire (13), -- - ambulance (14), -- (does not include private para-transit etc.) - dot (15), -- all roadwork vehicles - transit (16), -- all transit vehicles - slowMoving (17), -- to also include oversize etc. - stopNgo (18), -- to include trash trucks, school buses and others - -- that routinely disturb the free flow of traffic - cyclist (19), -- - pedestrian (20), -- also includes those with mobility limitations - nonMotorized (21), -- other, horse drawn, etc. - military (22), -- - ... - } - -DeltaAngle ::= INTEGER (-150..150) - -- With an angle range from - -- negative 150 to positive 150 - -- in one degree steps where zero is directly - -- along the axis or the lane center line as defined by the - -- two closest points - -DeltaTime ::= INTEGER (-122 .. 121) - -- Supporting a range of +/- 20 minute in steps of 10 seconds - -- the value of -121 shall be used when more than -20 minutes - -- the value of +120 shall be used when more than +20 minutes - -- the value -122 shall be used when the value is unavailable - -DescriptiveName ::= IA5String (SIZE(1..63)) - -DrivenLineOffsetLg ::= INTEGER (-32767..32767) - -- LSB units are 1 cm. - -DrivenLineOffsetSm ::= INTEGER (-2047..2047) - -- LSB units are 1 cm. - -DSecond ::= INTEGER (0..65535) -- units of milliseconds - -DSRCmsgID ::= INTEGER (0..32767) - mapData DSRCmsgID ::= 18 -- MAP, intersections - signalPhaseAndTimingMessage DSRCmsgID ::= 19 -- SPAT - signalRequestMessage DSRCmsgID ::= 29 -- SRM - signalStatusMessage DSRCmsgID ::= 30 -- SSM - -Elevation ::= INTEGER (-4096..61439) - -- In units of 10 cm steps above or below the reference ellipsoid - -- Providing a range of -409.5 to + 6143.9 meters - -- The value -4096 shall be used when Unknown is to be sent - -IntersectionID ::= INTEGER (0..65535) - -- The values zero through 255 are allocated for testing purposes - -- Note that the value assigned to an intersection will be - -- unique within a given regional ID only - -IntersectionStatusObject ::= BIT STRING { - manualControlIsEnabled (0), - -- Timing reported is per programmed values, etc. but person - -- at cabinet can manually request that certain intervals are - -- terminated early (e.g. green). - stopTimeIsActivated (1), - -- And all counting/timing has stopped. - failureFlash (2), - -- Above to be used for any detected hardware failures, - -- e.g. conflict monitor as well as for police flash - preemptIsActive (3), - signalPriorityIsActive (4), - - -- Additional states - fixedTimeOperation (5), - -- Schedule of signals is based on time only - -- (i.e. the state can be calculated) - trafficDependentOperation (6), - -- Operation is based on different levels of traffic parameters - -- (requests, duration of gaps or more complex parameters) - standbyOperation (7), - -- Controller: partially switched off or partially amber flashing - failureMode (8), - -- Controller has a problem or failure in operation - off (9), - -- Controller is switched off - - -- Related to MAP and SPAT bindings - recentMAPmessageUpdate (10), - -- Map revision with content changes - recentChangeInMAPassignedLanesIDsUsed (11), - -- Change in MAP's assigned lanes used (lane changes) - -- Changes in the active lane list description - noValidMAPisAvailableAtThisTime (12), - -- MAP (and various lanes indexes) not available - noValidSPATisAvailableAtThisTime (13) - -- SPAT system is not working at this time - - -- Bits 14,15 reserved at this time and shall be zero - } (SIZE(16)) - - -LaneAttributes-Barrier ::= BIT STRING { - -- With bits as defined: - median-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - median (1), - whiteLineHashing (2), - stripedLines (3), - doubleStripedLines (4), - trafficCones (5), - constructionBarrier (6), - trafficChannels (7), - lowCurbs (8), - highCurbs (9) - -- Bits 10~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Bike ::= BIT STRING { - -- With bits as defined: - bikeRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - pedestrianUseAllowed (1), - -- The path allows pedestrian traffic, - -- if not set, this mode is prohibited - isBikeFlyOverLane (2), - -- path of lane is not at grade - fixedCycleTime (3), - -- the phases use preset times - -- i.e. there is not a 'push to cross' button - biDirectionalCycleTimes (4), - -- ped walk phases use different SignalGroupID - -- for each direction. The first SignalGroupID - -- in the first Connection represents 'inbound' - -- flow (the direction of travel towards the first - -- node point) while second SignalGroupID in the - -- next Connection entry represents the 'outbound' - -- flow. And use of RestrictionClassID entries - -- in the Connect follow this same pattern in pairs. - isolatedByBarrier (5), - unsignalizedSegmentsPresent (6) - -- The lane path consists of one of more segments - -- which are not part of a signal group ID - - -- Bits 7~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Crosswalk ::= BIT STRING { - -- With bits as defined: - -- MUTCD provides no suitable "types" to use here - crosswalkRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - bicyleUseAllowed (1), - -- The path allows bicycle traffic, - -- if not set, this mode is prohibited - isXwalkFlyOverLane (2), - -- path of lane is not at grade - fixedCycleTime (3), - -- ped walk phases use preset times - -- i.e. there is not a 'push to cross' button - biDirectionalCycleTimes (4), - -- ped walk phases use different SignalGroupID - -- for each direction. The first SignalGroupID - -- in the first Connection represents 'inbound' - -- flow (the direction of travel towards the first - -- node point) while second SignalGroupID in the - -- next Connection entry represents the 'outbound' - -- flow. And use of RestrictionClassID entries - -- in the Connect follow this same pattern in pairs. - hasPushToWalkButton (5), - -- Has a demand input - audioSupport (6), - -- audio crossing cues present - rfSignalRequestPresent (7), - -- Supports RF push to walk technologies - unsignalizedSegmentsPresent (8) - -- The lane path consists of one of more segments - -- which are not part of a signal group ID - -- Bits 9~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Parking ::= BIT STRING { - -- With bits as defined: - -- Parking use details, note that detailed restrictions such as - -- allowed hours are sent by way of ITIS codes in the TIM message - parkingRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - parallelParkingInUse (1), - headInParkingInUse (2), - doNotParkZone (3), - -- used to denote fire hydrants as well as - -- short disruptions in a parking zone - parkingForBusUse (4), - parkingForTaxiUse (5), - noPublicParkingUse (6) - -- private parking, as in front of - -- private property - -- Bits 7~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Sidewalk ::= BIT STRING { - -- With bits as defined: - sidewalk-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - bicyleUseAllowed (1), - -- The path allows bicycle traffic, - -- if not set, this mode is prohibited - isSidewalkFlyOverLane (2), - -- path of lane is not at grade - walkBikes (3) - -- bike traffic must dismount and walk - -- Bits 4~15 reserved and set to zero - } (SIZE (16)) - - -LaneAttributes-Striping ::= BIT STRING { - -- With bits as defined: - stripeToConnectingLanesRevocableLane (0), - -- this lane may be activated or not activated based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - stripeDrawOnLeft (1), - stripeDrawOnRight (2), - -- which side of lane to mark - stripeToConnectingLanesLeft (3), - stripeToConnectingLanesRight (4), - stripeToConnectingLanesAhead (5) - -- the stripe type should be - -- presented to the user visually - -- to reflect stripes in the - -- intersection for the type of - -- movement indicated - -- Bits 6~15 reserved and set to zero - } (SIZE (16)) - - -LaneAttributes-TrackedVehicle ::= BIT STRING { - -- With bits as defined: - spec-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - spec-commuterRailRoadTrack (1), - spec-lightRailRoadTrack (2), - spec-heavyRailRoadTrack (3), - spec-otherRailType (4) - -- Bits 5~15 reserved and set to zero - } (SIZE (16)) - - -LaneAttributes-Vehicle ::= BIT STRING { - -- With bits as defined: - isVehicleRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - isVehicleFlyOverLane (1), - -- path of lane is not at grade - hovLaneUseOnly (2), - restrictedToBusUse (3), - restrictedToTaxiUse (4), - restrictedFromPublicUse (5), - hasIRbeaconCoverage (6), - permissionOnRequest (7) -- e.g. to inform about a lane for e-cars - - } (SIZE (8,...)) - -LaneConnectionID ::= INTEGER (0..255) - -LaneDirection ::= BIT STRING { - -- With bits as defined: - -- Allowed directions of travel in the lane object - -- All lanes are described from the stop line outwards - ingressPath (0), - -- travel from rear of path to front - -- is allowed - egressPath (1) - -- travel from front of path to rear - -- is allowed - -- Notes: No Travel, i.e. the lane object type does not support - -- travel (medians, curbs, etc.) is indicated by not - -- asserting any bit value - -- Bi-Directional Travel (such as a ped crosswalk) is - -- indicated by asserting both of the bits - } (SIZE (2)) - -LaneID ::= INTEGER (0..255) - -- the value 0 shall be used when the lane ID is - -- not available or not known - -- the value 255 is reserved for future use - -LayerID ::= INTEGER (0..100) - -LayerType ::= ENUMERATED { - none, - mixedContent, -- two or more of the below types - generalMapData, - intersectionData, - curveData, - roadwaySectionData, - parkingAreaData, - sharedLaneData, - ... - } - -LaneWidth ::= INTEGER (0..32767) -- units of 1 cm - -MergeDivergeNodeAngle ::= INTEGER (-180..180) - -- In units of 1.5 degrees from north - -- the value -180 shall be used to represent - -- data is not available or unknown - -MinuteOfTheYear ::= INTEGER (0..527040) - -- the value 527040 shall be used for invalid - -MovementPhaseState ::= ENUMERATED { - -- Note that based on the regions and the operating mode not every - -- phase will be used in all transportation modes and that not - -- every phase will be used in all transportation modes - - unavailable (0), - -- This state is used for unknown or error - dark (1), - -- The signal head is dark (unlit) - - -- Reds - stop-Then-Proceed (2), - -- Often called 'flashing red' in US - -- Driver Action: - -- Stop vehicle at stop line. - -- Do not proceed unless it is safe. - -- Note that the right to proceed either right or left when - -- it is safe may be contained in the lane description to - -- handle what is called a 'right on red' - stop-And-Remain (3), - -- e.g. called 'red light' in US - -- Driver Action: - -- Stop vehicle at stop line. - -- Do not proceed. - -- Note that the right to proceed either right or left when - -- it is safe may be contained in the lane description to - -- handle what is called a 'right on red' - - -- Greens - pre-Movement (4), - -- Not used in the US, red+yellow partly in EU - -- Driver Action: - -- Stop vehicle. - -- Prepare to proceed (pending green) - -- (Prepare for transition to green/go) - permissive-Movement-Allowed (5), - -- Often called 'permissive green' in US - -- Driver Action: - -- Proceed with caution, - -- must yield to all conflicting traffic - -- Conflicting traffic may be present - -- in the intersection conflict area - protected-Movement-Allowed (6), - -- Often called 'protected green' in US - -- Driver Action: - -- Proceed, tossing caution to the wind, - -- in indicated (allowed) direction. - - -- Yellows / Ambers - -- The vehicle is not allowed to cross the stop bar if it is possible - -- to stop without danger. - permissive-clearance (7), - -- Often called 'permissive yellow' in US - -- Driver Action: - -- Prepare to stop. - -- Proceed if unable to stop, - -- Clear Intersection. - -- Conflicting traffic may be present - -- in the intersection conflict area - protected-clearance (8), - -- Often called 'protected yellow' in US - -- Driver Action: - -- Prepare to stop. - -- Proceed if unable to stop, - -- in indicated direction (to connected lane) - -- Clear Intersection. - - caution-Conflicting-Traffic (9) - -- Often called 'flashing yellow' in US - -- Often used for extended periods of time - -- Driver Action: - -- Proceed with caution, - -- Conflicting traffic may be present - -- in the intersection conflict area - } - -- The above number assignments are not used with UPER encoding - -- and are only to be used with DER or implicit encoding - -MsgCount ::= INTEGER (0..127) - -Offset-B10 ::= INTEGER (-512..511) - -- a range of +- 5.11 meters - -Offset-B11 ::= INTEGER (-1024..1023) - -- a range of +- 10.23 meters - -Offset-B12 ::= INTEGER (-2048..2047) - -- a range of +- 20.47 meters - -Offset-B13 ::= INTEGER (-4096..4095) - -- a range of +- 40.95 meters - -Offset-B14 ::= INTEGER (-8192..8191) - -- a range of +- 81.91 meters - -Offset-B16 ::= INTEGER (-32768..32767) - -- a range of +- 327.68 meters - -PedestrianBicycleDetect ::= BOOLEAN - -- true if ANY Pedestrians or Bicyclists are - -- detected crossing the target lane or lanes - -PrioritizationResponseStatus ::= ENUMERATED { - unknown (0), - -- Unknown state - requested (1), - -- This prioritization request was detected - -- by the traffic controller - processing (2), - -- Checking request - -- (request is in queue, other requests are prior) - watchOtherTraffic (3), - -- Cannot give full permission, - -- therefore watch for other traffic - -- Note that other requests may be present - granted (4), - -- Intervention was successful - -- and now prioritization is active - rejected (5), - -- The prioritization or preemption request was - -- rejected by the traffic controller - maxPresence (6), - -- The Request has exceeded maxPresence time - -- Used when the controller has determined that - -- the requester should then back off and - -- request an alternative. - reserviceLocked (7), - -- Prior conditions have resulted in a reservice - -- locked event: the controller requires the - -- passage of time before another similar request - -- will be accepted - ... -} - -PriorityRequestType ::= ENUMERATED { - priorityRequestTypeReserved (0), - priorityRequest (1), - priorityRequestUpdate (2), - priorityCancellation (3), - ... - } - -RegionId ::= INTEGER (0..255) - noRegion RegionId ::= 0 -- Use default supplied stubs - addGrpA RegionId ::= 1 -- USA - addGrpB RegionId ::= 2 -- Japan - addGrpC RegionId ::= 3 -- EU - -- NOTE: new registered regional IDs will be added here - -- The values 128 and above are for local region use - -RequestID ::= INTEGER (0..255) - -RequestImportanceLevel ::= ENUMERATED { - requestImportanceLevelUnKnown (0), - requestImportanceLevel1 (1), -- The least important request - requestImportanceLevel2 (2), -- The values here shall be assigned - requestImportanceLevel3 (3), -- Meanings based on regional needs - requestImportanceLevel4 (4), -- for each of the basic roles which - requestImportanceLevel5 (5), -- are defined elsewhere - requestImportanceLevel6 (6), - requestImportanceLevel7 (7), - requestImportanceLevel8 (8), - requestImportanceLevel9 (9), - requestImportanceLevel10 (10), - requestImportanceLevel11 (11), - requestImportanceLevel12 (12), - requestImportanceLevel13 (13), - requestImportanceLevel14 (14), -- The most important request - requestImportanceReserved (15) -- Reserved for future use - } - -RequestSubRole ::= ENUMERATED { - requestSubRoleUnKnown (0), - requestSubRole1 (1), -- The first type of sub role - requestSubRole2 (2), -- The values here shall be assigned - requestSubRole3 (3), -- Meanings based on regional needs - requestSubRole4 (4), -- to refine and expand the basic - requestSubRole5 (5), -- roles which are defined elsewhere - requestSubRole6 (6), - requestSubRole7 (7), - requestSubRole8 (8), - requestSubRole9 (9), - requestSubRole10 (10), - requestSubRole11 (11), - requestSubRole12 (12), - requestSubRole13 (13), - requestSubRole14 (14), -- The last type of sub role - requestSubRoleReserved (15) -- Reserved for future use - } - -RestrictionAppliesTo ::= ENUMERATED { - none, -- applies to nothing - equippedTransit, -- buses etc. - equippedTaxis, - equippedOther, -- other vehicle types with - -- necessary signal phase state - -- reception equipment - emissionCompliant, -- regional variants with more - -- definitive items also exist - equippedBicycle, - weightCompliant, - heightCompliant, - -- Items dealing with traveler needs serviced by the infrastructure - -- These end users (which are not vehicles) are presumed to be suitably equipped - pedestrians, - slowMovingPersons, - wheelchairUsers, - visualDisabilities, - audioDisabilities, -- hearing - otherUnknownDisabilities, - ... - } - -RestrictionClassID ::= INTEGER (0..255) - -- An index value to identify data about classes of users - -- the value used varies with each intersection's - -- needs and is defined in the map to the assigned - -- classes of supported users. - -RoadRegulatorID ::= INTEGER (0..65535) - -- The value zero shall be used for testing only - -RoadSegmentID ::= INTEGER (0..65535) - -- The values zero to 255 shall be used for testing only - -- Note that the value assigned to an RoadSegment will be - -- unique within a given regional ID only during its use - -RoadwayCrownAngle ::= INTEGER (-128..127) - -- In LSB units of 0.3 degrees of angle - -- over a range of -38.1 to + 38.1 degrees - -- The value -128 shall be used for unknown - -- The value zero shall be used for angles - -- which are between -0.15 and +0.15 - -Scale-B12 ::= INTEGER (-2048..2047) -- in steps of 0.05 percent - -SignalGroupID ::= INTEGER (0..255) - -- The value 0 shall be used when the ID is - -- not available or not known - -- the value 255 is reserved to indicate a - -- permanent green movement state - -- therefore a simple 8 phase signal controller - -- device might use 1..9 as its groupIDs - -SegmentAttributeXY ::= ENUMERATED { - -- Various values which can be Enabled and Disabled for a lane segment - - -- General Items - reserved , - doNotBlock , -- segment where a vehicle - -- may not come to a stop - whiteLine , -- segment where lane crossing not allowed - -- such as the final few meters of a lane - - -- Porous Lane states, merging, turn outs, parking etc. - - mergingLaneLeft , -- indicates porous lanes - mergingLaneRight , - - curbOnLeft , -- indicates presence of curbs - curbOnRight , - - loadingzoneOnLeft , -- loading or drop off zones - loadingzoneOnRight , - - turnOutPointOnLeft , -- opening to adjacent street/alley/road - turnOutPointOnRight , - - adjacentParkingOnLeft , -- side of road parking - adjacentParkingOnRight , - - -- Bike Lane Needs - adjacentBikeLaneOnLeft , -- presence of marked bike lanes - adjacentBikeLaneOnRight , - sharedBikeLane , -- right of way is shared with bikes - -- who may occupy entire lane width - bikeBoxInFront , - - -- Transit Needs - transitStopOnLeft , -- any form of bus/transit loading - -- with pull in-out access to lane on left - transitStopOnRight , -- any form of bus/transit loading - -- with pull in-out access to lane on right - transitStopInLane , -- any form of bus/transit loading - -- in mid path of the lane - sharedWithTrackedVehicle , -- lane is shared with train or trolley - -- not used for crossing tracks - - - -- Pedestrian Support Attributes - safeIsland , -- begin/end a safety island in path - lowCurbsPresent , -- for ADA support - rumbleStripPresent , -- for ADA support - audibleSignalingPresent , -- for ADA support - adaptiveTimingPresent , -- for ADA support - rfSignalRequestPresent , -- Supports RF push to walk technologies - partialCurbIntrusion , -- path is blocked by a median or curb - -- but at least 1 meter remains open for use - -- and at-grade passage - - -- Lane geometry details (see standard for defined shapes) - taperToLeft , -- Used to control final path shape - taperToRight , -- Used to control final path shape - taperToCenterLine , -- Used to control final path shape - - -- Parking Lane and Curb Attributes - parallelParking , -- - headInParking , -- Parking at an angle with the street - freeParking , -- no restriction on use of parking - timeRestrictionsOnParking , -- Parking is not permitted at all times - -- typically used when the 'parking' lane - -- becomes a driving lane at times - costToPark , -- Used where parking has a cost - midBlockCurbPresent , -- a protruding curb near lane edge - unEvenPavementPresent , -- a disjoint height at lane edge - ... - } - -SpeedAdvice ::= INTEGER (0..500) - -- LSB units are 0.1 m/s^2 - -- the value 499 shall be used for values at or greater than 49.9 m/s - -- the value 500 shall be used to indicate that speed is unavailable - - -TemporaryID ::= OCTET STRING (SIZE(4)) - -TimeIntervalConfidence ::= INTEGER (0..15) - -- Value Probability - -- 0 21% - -- 1 36% - -- 2 47% - -- 3 56% - -- 4 62% - -- 5 68% - -- 6 73% - -- 7 77% - -- 8 81% - -- 9 85% - -- 10 88% - -- 11 91% - -- 12 94% - -- 13 96% - -- 14 98% - -- 15 100% - -TransitVehicleOccupancy ::= ENUMERATED { - occupancyUnknown (0), - occupancyEmpty (1), - occupancyVeryLow (2), - occupancyLow (3), - occupancyMed (4), - occupancyHigh (5), - occupancyNearlyFull (6), - occupancyFull (7) - } - -TransitVehicleStatus ::= BIT STRING { - loading (0), -- parking and unable to move at this time - anADAuse (1), -- an ADA access is in progress (wheelchairs, kneeling, etc.) - aBikeLoad (2), -- loading of a bicycle is in progress - doorOpen (3), -- a vehicle door is open for passenger access - charging (4), -- a vehicle is connected to charging point - atStopLine (5) -- a vehicle is at the stop line for the lane it is in - } (SIZE(8)) - -TransmissionState ::= ENUMERATED { - neutral (0), -- Neutral - park (1), -- Park - forwardGears (2), -- Forward gears - reverseGears (3), -- Reverse gears - reserved1 (4), - reserved2 (5), - reserved3 (6), - unavailable (7) -- not-equipped or unavailable value, - -- Any related speed is relative to the vehicle reference frame used - } - -VehicleType ::= ENUMERATED { - none (0), -- Not Equipped, Not known or unavailable - unknown (1), -- Does not fit any other category - special (2), -- Special use - moto (3), -- Motorcycle - car (4), -- Passenger car - carOther (5), -- Four tire single units - bus (6), -- Buses - axleCnt2 (7), -- Two axle, six tire single units - axleCnt3 (8), -- Three axle, single units - axleCnt4 (9), -- Four or more axle, single unit - axleCnt4Trailer (10), -- Four or less axle, single trailer - axleCnt5Trailer (11), -- Five or less axle, single trailer - axleCnt6Trailer (12), -- Six or more axle, single trailer - axleCnt5MultiTrailer (13), -- Five or less axle, multi-trailer - axleCnt6MultiTrailer (14), -- Six axle, multi-trailer - axleCnt7MultiTrailer (15), -- Seven or more axle, multi-trailer - ... - } - -Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s - -- The value 8191 indicates that - -- velocity is unavailable - -WaitOnStopline ::= BOOLEAN -- - -- True or False - -- If "true", the vehicles on this specific connecting - -- maneuver have to stop on the stop-line - -- and not to enter the collision area - -ZoneLength ::= INTEGER (0..10000) - -- Unit = 1 meter, 0 = unknown, - -- The value 10000 to be used for Distances >=10000 m - -- (e.g. from known point to another point along a - -- known path, often against traffic flow direction - -- when used for measuring queues) - -END - -- GitLab From db0e9190478dbed7898cc42442178dee17cf136b Mon Sep 17 00:00:00 2001 From: filatov Date: Mon, 6 Mar 2017 13:41:05 +0000 Subject: [PATCH 012/320] TTITANIZATION: GeoNetworking --- .../LibItsGeoNetworking_Functions.ttcn | 25 ++++++++++++++++++- .../LibItsGeoNetworking_Templates.ttcn | 14 +++++------ .../LibItsGeoNetworking_TestSystem.ttcn | 25 +++++++++++++------ 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 5cbaee1..fbc2d27 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -1,5 +1,5 @@ /** - * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @author ETSI / STF405 / STF449 / STF484 / STF517 / STF525 * @version $URL$ * $Id$ * @desc Module containing functions for GeoNetworking @@ -155,6 +155,7 @@ module LibItsGeoNetworking_Functions { * - Area2 which only includes NodeB * NodeB being close to the area center */ +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { // Variables @@ -183,6 +184,7 @@ module LibItsGeoNetworking_Functions { } // end f_cf01Up +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf01Down() runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { f_uninitialiseSecuredMode(); @@ -208,6 +210,8 @@ module LibItsGeoNetworking_Functions { * * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables @@ -271,6 +275,8 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf02 */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf02Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables @@ -302,6 +308,7 @@ module LibItsGeoNetworking_Functions { * NodeB being close to the area center * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables @@ -365,6 +372,8 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf03 */ + + //FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf03Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables @@ -398,6 +407,8 @@ module LibItsGeoNetworking_Functions { * NodeB being close to the area center * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables @@ -461,6 +472,8 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf04 */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf04Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */{ // Local variables @@ -490,6 +503,8 @@ module LibItsGeoNetworking_Functions { * - Area1 which only includes NodeB, NodeD and IUT * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables @@ -552,6 +567,8 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf05 */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf05Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables @@ -582,6 +599,7 @@ module LibItsGeoNetworking_Functions { * - IUT not in sectorial area of NodeB-NodeF * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Variables @@ -644,6 +662,8 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf06 */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf06Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables @@ -673,6 +693,8 @@ module LibItsGeoNetworking_Functions { * - Area1 which only includes NodeB, NodeD and IUT * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages */ + +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO mtc ItsMtc system ItsGeoNetworkingSystem */{ // Variables @@ -735,6 +757,7 @@ module LibItsGeoNetworking_Functions { /** * @desc Deletes configuration cf06 */ +//FIXME RGY Titan doesn't support mtc and system clauses yet function f_cf07Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { // Local variables diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index 0f890cf..bb5a4d7 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -44,9 +44,9 @@ module LibItsGeoNetworking_Templates { * @param p_geoNwMsg GeoNetworking packet to be sent * @param p_its_aid ITS-AID used in secured mode. Default: 0, means unused */ - template (value) GeoNetworkingReq m_geoNwReq_linkLayerBroadcast( - in template (value) GeoNetworkingPdu p_geoNwMsg, - in template (value) UInt32 p_its_aid := 0 + template (omit) GeoNetworkingReq m_geoNwReq_linkLayerBroadcast( + in template (value) GeoNetworkingPdu p_geoNwMsg, + in template (value) UInt32 p_its_aid := 0 ) := { msgOut := p_geoNwMsg, macDestinationAddress := c_llBroadcast, @@ -59,10 +59,10 @@ module LibItsGeoNetworking_Templates { * @param p_its_aid ITS-AID used in secured mode. Default: 0, means unused * @param p_llDestinationAdress Link-layer destination address */ - template (value) GeoNetworkingReq m_geoNwReq_withLinkLayerDestination( - in template (value) GeoNetworkingPdu p_geoNwMsg, - in template (value) UInt32 p_its_aid := 0, - in template (value) MacAddress p_llDestinationAdress + template (omit) GeoNetworkingReq m_geoNwReq_withLinkLayerDestination( + in template (value) GeoNetworkingPdu p_geoNwMsg, + in template (value) UInt32 p_its_aid := 0, + in template (value) MacAddress p_llDestinationAdress ) modifies m_geoNwReq_linkLayerBroadcast := { macDestinationAddress := p_llDestinationAdress } diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index 725702f..3baf0d4 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -39,7 +39,10 @@ module LibItsGeoNetworking_TestSystem { out AcGnPrimitive, AcGn6Primitive, AcGnssPrimitive, AcSecPrimitive; in - AcGnResponse, AcGn6Response, AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; + +//FIXME RGY As discussed, boolean results are replaced by a top-level union of results +// AcGnResponse, AcGn6Response, AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; + AcGnResponse, AcGn6Response, AdapterControlResults; } // end AdapterControlPort /** @@ -49,7 +52,9 @@ module LibItsGeoNetworking_TestSystem { out UtInitialize, UtChangePosition, UtGnTrigger; in - UtInitializeResult, UtChangePositionResult, UtGnTriggerResult, UtGnEventInd; +//FIXME RGY As discussed, boolean results are replaced by a top-level union of results +// UtInitializeResult, UtChangePositionResult, UtGnTriggerResult, UtGnEventInd; + UtCommonResults, UtGnTriggerResult, UtGnEventInd; } // end UpperTesterPort } // end portDefinitions @@ -79,20 +84,24 @@ module LibItsGeoNetworking_TestSystem { /** * @desc ITS Main Test Component */ - type component ItsMtc extends ItsBaseMtc, ServerSyncComp, ItsSecurityBaseComponent { - +//FIXME RGY ItsMtc can extend ItsBaseGeoNetworking instead of ItsSecurityBaseComponent, as it contains +// everything defined here but vc_componentTable and already extends ItsSecurityBaseComponent +// also, ItsBaseMtc already extends ServerSyncComp +// type component ItsMtc extends ItsBaseMtc, ServerSyncComp, ItsSecurityBaseComponent { // TODO Extend ItsBaseMtc with ItsSecurityBaseComponent? { + type component ItsMtc extends ItsBaseMtc, ItsBaseGeoNetworking { +/*FIXME RGY all these objects are inherited from ItsBaseGeoNetworking, they shall not be defined again: see $6.2.10.2 port UpperTesterPort utPort; port AdapterControlPort acPort; - +*/ var ComponentTable vc_componentTable := {}; - +/* // UT indications var UtGnEventIndList vc_utInds := {}; var boolean vc_utDefaultActive := true; var boolean vc_acDefaultActive := true; var boolean vc_gnDefaultActive := true; - +*/ } // end ItsMtc /** @@ -110,7 +119,7 @@ module LibItsGeoNetworking_TestSystem { } // End of group componentDefinitions - type component ItsBaseGeoNetworking extends ItsBaseComponent, ItsSecurityBaseComponent { + type component ItsBaseGeoNetworking extends ItsBaseComponent, ItsSecurityBaseComponent { port UpperTesterPort utPort; port AdapterControlPort acPort; -- GitLab From be41dfbaaf4c6e4fea6532d0d7972446b52563ea Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 7 Mar 2017 14:43:27 +0000 Subject: [PATCH 013/320] Rename ttcn3 extension into ttcn --- ...bItsSecurity_Functions.ttcn3 => LibItsSecurity_Functions.ttcn} | 0 .../{LibItsSecurity_Pics.ttcn3 => LibItsSecurity_Pics.ttcn} | 0 .../{LibItsSecurity_Pixits.ttcn3 => LibItsSecurity_Pixits.ttcn} | 0 ...bItsSecurity_Templates.ttcn3 => LibItsSecurity_Templates.ttcn} | 0 ...tsSecurity_TestSystem.ttcn3 => LibItsSecurity_TestSystem.ttcn} | 0 ...ty_TypesAndValues.ttcn3 => LibItsSecurity_TypesAndValues.ttcn} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename ttcn/Security/{LibItsSecurity_Functions.ttcn3 => LibItsSecurity_Functions.ttcn} (100%) rename ttcn/Security/{LibItsSecurity_Pics.ttcn3 => LibItsSecurity_Pics.ttcn} (100%) rename ttcn/Security/{LibItsSecurity_Pixits.ttcn3 => LibItsSecurity_Pixits.ttcn} (100%) rename ttcn/Security/{LibItsSecurity_Templates.ttcn3 => LibItsSecurity_Templates.ttcn} (100%) rename ttcn/Security/{LibItsSecurity_TestSystem.ttcn3 => LibItsSecurity_TestSystem.ttcn} (100%) rename ttcn/Security/{LibItsSecurity_TypesAndValues.ttcn3 => LibItsSecurity_TypesAndValues.ttcn} (100%) diff --git a/ttcn/Security/LibItsSecurity_Functions.ttcn3 b/ttcn/Security/LibItsSecurity_Functions.ttcn similarity index 100% rename from ttcn/Security/LibItsSecurity_Functions.ttcn3 rename to ttcn/Security/LibItsSecurity_Functions.ttcn diff --git a/ttcn/Security/LibItsSecurity_Pics.ttcn3 b/ttcn/Security/LibItsSecurity_Pics.ttcn similarity index 100% rename from ttcn/Security/LibItsSecurity_Pics.ttcn3 rename to ttcn/Security/LibItsSecurity_Pics.ttcn diff --git a/ttcn/Security/LibItsSecurity_Pixits.ttcn3 b/ttcn/Security/LibItsSecurity_Pixits.ttcn similarity index 100% rename from ttcn/Security/LibItsSecurity_Pixits.ttcn3 rename to ttcn/Security/LibItsSecurity_Pixits.ttcn diff --git a/ttcn/Security/LibItsSecurity_Templates.ttcn3 b/ttcn/Security/LibItsSecurity_Templates.ttcn similarity index 100% rename from ttcn/Security/LibItsSecurity_Templates.ttcn3 rename to ttcn/Security/LibItsSecurity_Templates.ttcn diff --git a/ttcn/Security/LibItsSecurity_TestSystem.ttcn3 b/ttcn/Security/LibItsSecurity_TestSystem.ttcn similarity index 100% rename from ttcn/Security/LibItsSecurity_TestSystem.ttcn3 rename to ttcn/Security/LibItsSecurity_TestSystem.ttcn diff --git a/ttcn/Security/LibItsSecurity_TypesAndValues.ttcn3 b/ttcn/Security/LibItsSecurity_TypesAndValues.ttcn similarity index 100% rename from ttcn/Security/LibItsSecurity_TypesAndValues.ttcn3 rename to ttcn/Security/LibItsSecurity_TypesAndValues.ttcn -- GitLab From 3b6ac5308d84ab6277250ae4b2af889f3e2f19e8 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 30 Mar 2017 13:42:40 +0000 Subject: [PATCH 014/320] STF525: Starting development of ItsAutoInterop ATS --- ttcn/Common/LibItsCommon_TestSystem.ttcn | 2 +- ttcn/IVIM/LibItsIvim_Templates.ttcn | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ttcn/Common/LibItsCommon_TestSystem.ttcn b/ttcn/Common/LibItsCommon_TestSystem.ttcn index 8c5011e..d7c0e60 100644 --- a/ttcn/Common/LibItsCommon_TestSystem.ttcn +++ b/ttcn/Common/LibItsCommon_TestSystem.ttcn @@ -27,7 +27,7 @@ module LibItsCommon_TestSystem { // timers timer tc_guard := PX_TDONE; - } // end ItsMtc + } // end ItsBaseMtc /** * @desc Upper tester and Adapter control component diff --git a/ttcn/IVIM/LibItsIvim_Templates.ttcn b/ttcn/IVIM/LibItsIvim_Templates.ttcn index 51a5982..42bb2b9 100644 --- a/ttcn/IVIM/LibItsIvim_Templates.ttcn +++ b/ttcn/IVIM/LibItsIvim_Templates.ttcn @@ -167,13 +167,13 @@ module LibItsIvim_Templates { * @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit) * @param p_optional_ Optional field (Default: omit) */ - template (value) UtIvimUpdate m_utUpdateEvent( - template (value) IviIdentificationNumber p_iviIdentificationNumber, - template (omit) TimestampIts p_timeStamp := c_duration_2sec, - template (omit) TimestampIts p_validFrom := omit, - template (omit) TimestampIts p_validTo := omit, - template (omit) IVIManagementContainer.connectedIviStructures p_connectedIviStructures := omit, - template (omit) IviStructure.optional_ p_optional_ := omit + template (value) UtIvimUpdate m_utIvimUpdateEvent( + template (value) IviIdentificationNumber p_iviIdentificationNumber, + template (omit) TimestampIts p_timeStamp := c_duration_2sec, + template (omit) TimestampIts p_validFrom := omit, + template (omit) TimestampIts p_validTo := omit, + template (omit) IVIManagementContainer.connectedIviStructures p_connectedIviStructures := omit, + template (omit) IviStructure.optional_ p_optional_ := omit ) := { iviIdentificationNumber := p_iviIdentificationNumber, timeStamp := p_timeStamp, @@ -181,7 +181,7 @@ module LibItsIvim_Templates { validTo := p_validTo, connectedIviStructures := p_connectedIviStructures, optional_ := p_optional_ - } // End of template m_utUpdateEvent + } // End of template m_utIvimUpdateEvent /** * @desc Send template for Upper Tester event cancellation -- GitLab From 10fbceff734b7335b625eaf1223aafc012a1c309 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 7 Jun 2017 09:25:39 +0000 Subject: [PATCH 015/320] Add TTCN-3 tests for CAM codec --- ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn | 8 ++++---- ttcn/CAM/LibItsCam_TestSystem.ttcn | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn index 0926594..b6d6323 100644 --- a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn +++ b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn @@ -11,11 +11,11 @@ module LibItsCam_EncdecDeclarations { external function fx_enc_CamReq (CamReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} - external function fx_enc_CAM (CAM p) return octetstring - with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} + external function fx_enc_CAM (CAM p) return bitstring + with {extension "prototype(convert) encode(PER)"}//LibItsCam_asn1 - /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) + /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) */ external function fx_dec_CamReq (inout bitstring b, out CamReq p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} - */ + } // End of module LibItsCam_EncdecDeclarations diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn index bbc4cab..6752c4b 100644 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ b/ttcn/CAM/LibItsCam_TestSystem.ttcn @@ -141,7 +141,17 @@ module LibItsCam_TestSystem { UInt32 its_aid optional } with { - encode (msgIn) "LibItsCam_asn1" + variant "" + encode (msgIn) "PER"//LibItsCam_asn1 + encode (gnNextHeader) "RAW" + encode (gnHeaderType) "RAW" + encode (gnHeaderSubtype) "RAW" + encode (gnLifetime) "RAW" + encode (gnTrafficClass) "RAW" + encode (btpDestinationPort) "RAW" + encode (btpInfo) "RAW" + encode (ssp) "RAW" + encode (its_aid) "RAW" } /** @@ -151,7 +161,8 @@ module LibItsCam_TestSystem { CAM msgOut } with { - encode (msgOut) "LibItsCam_asn1" + variant "" + encode (msgOut) "PER"//LibItsCam_asn1 } } // end fa1Primitives -- GitLab From 927b844e801d9ebdc4dd0353de65d13339820949 Mon Sep 17 00:00:00 2001 From: filatov Date: Wed, 7 Jun 2017 16:23:42 +0000 Subject: [PATCH 016/320] PERization of CAM/DENM --- ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn | 20 +++++++++++++------- ttcn/CAM/LibItsCam_Functions.ttcn | 8 ++++---- ttcn/CAM/LibItsCam_Templates.ttcn | 2 +- ttcn/CAM/LibItsCam_TestSystem.ttcn | 12 +++++++----- ttcn/CAM/LibItsCam_TypesAndValues.ttcn | 4 ++-- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 15 ++++++++++----- ttcn/DENM/LibItsDenm_TestSystem.ttcn | 8 ++++---- 7 files changed, 41 insertions(+), 28 deletions(-) diff --git a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn index b6d6323..c298696 100644 --- a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn +++ b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn @@ -1,9 +1,7 @@ module LibItsCam_EncdecDeclarations { // LibIts - import from ITS_Container language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCam import from LibItsCam_TestSystem all; @@ -11,11 +9,19 @@ module LibItsCam_EncdecDeclarations { external function fx_enc_CamReq (CamReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} - external function fx_enc_CAM (CAM p) return bitstring - with {extension "prototype(convert) encode(PER)"}//LibItsCam_asn1 - - /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) */ external function fx_dec_CamReq (inout bitstring b, out CamReq p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} - + + external function fx_dec_CamInd (inout bitstring b, out CamInd p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + + external function fx_enc_CAM (CAM p) return bitstring + with {extension "prototype(convert) encode(PER)"} + + external function fx_dec_CAM (inout bitstring b, out CAM p) return integer + with {extension "prototype(sliding) decode(PER)"} +/* + external function fx_enc_CAM (CAM p) return octetstring + with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} +*/ } // End of module LibItsCam_EncdecDeclarations diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn index b1c443d..aadbf34 100644 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ b/ttcn/CAM/LibItsCam_Functions.ttcn @@ -18,8 +18,8 @@ module LibItsCam_Functions { // LibIts import from ITS_Container language "ASN.1:1997" all; - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; +// import from CAM_PDU_Descriptions language "ASN.1:1997" all; +// import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_Pixits all; @@ -32,8 +32,8 @@ module LibItsCam_Functions { import from LibItsCam_Templates all; import from LibItsCam_TypesAndValues all; import from LibItsCam_Pics all; - import from LibItsCam_Pixits all; - import from LibItsCam_EncdecDeclarations all; +// import from LibItsCam_Pixits all; +// import from LibItsCam_EncdecDeclarations all; group utFuntions { diff --git a/ttcn/CAM/LibItsCam_Templates.ttcn b/ttcn/CAM/LibItsCam_Templates.ttcn index 018d52e..7f8793b 100644 --- a/ttcn/CAM/LibItsCam_Templates.ttcn +++ b/ttcn/CAM/LibItsCam_Templates.ttcn @@ -18,7 +18,7 @@ module LibItsCam_Templates { // LibIts import from ITS_Container language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; +// import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_Functions all; diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn index 6752c4b..4d0bd3d 100644 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ b/ttcn/CAM/LibItsCam_TestSystem.ttcn @@ -12,14 +12,14 @@ module LibItsCam_TestSystem { // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; +// import from LibCommon_Time {modulepar all}; +// import from LibCommon_Sync all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; // LibIts import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; +// import from DENM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCommon import from LibItsCommon_TestSystem all; @@ -141,8 +141,9 @@ module LibItsCam_TestSystem { UInt32 its_aid optional } with { - variant "" +// variant "" encode (msgIn) "PER"//LibItsCam_asn1 +/* encode (gnNextHeader) "RAW" encode (gnHeaderType) "RAW" encode (gnHeaderSubtype) "RAW" @@ -152,6 +153,7 @@ module LibItsCam_TestSystem { encode (btpInfo) "RAW" encode (ssp) "RAW" encode (its_aid) "RAW" +*/ } /** @@ -161,7 +163,7 @@ module LibItsCam_TestSystem { CAM msgOut } with { - variant "" +// variant "" encode (msgOut) "PER"//LibItsCam_asn1 } diff --git a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn index f215e97..35fe1f0 100644 --- a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn +++ b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn @@ -13,12 +13,12 @@ module LibItsCam_TypesAndValues { // LibCommon import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; +// import from LibCommon_DataStrings all; // LibIts import from ITS_Container language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; +// import from DENM_PDU_Descriptions language "ASN.1:1997" all; group camValues { diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index c1910b5..b6c4216 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -6,11 +6,16 @@ module LibItsDenm_EncdecDeclarations { external function fx_enc_DenmReq (DenmReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} - external function fx_enc_DENM (DENM p) return octetstring + external function fx_dec_DenmInd (inout bitstring b, out DenmInd p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + + external function fx_enc_DENM (DENM p) return bitstring with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} +// with {extension "prototype(convert) encode(PER)"} - /* not needed yet, no decvalue is used in TTCN-3 code - external function fx_dec_DenmReq (inout bitstring b, out DenmReq p) return integer - with {extension "prototype(sliding) decode(LibIts_Interface)"} - */ + external function fx_dec_DENM (inout bitstring b, out DENM p) return integer + with {extension "prototype(sliding) decode(BER:BER_ENCODE_CER)"} +// with {extension "prototype(sliding) encode(PER)"} + + } // End of module LibItsDenm_EncdecDeclarations diff --git a/ttcn/DENM/LibItsDenm_TestSystem.ttcn b/ttcn/DENM/LibItsDenm_TestSystem.ttcn index 4c26f5f..e6be924 100644 --- a/ttcn/DENM/LibItsDenm_TestSystem.ttcn +++ b/ttcn/DENM/LibItsDenm_TestSystem.ttcn @@ -12,8 +12,8 @@ module LibItsDenm_TestSystem { // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; +// import from LibCommon_Time {modulepar all}; +// import from LibCommon_Sync all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; @@ -147,7 +147,7 @@ module LibItsDenm_TestSystem { UInt32 its_aid optional } with { - encode (msgIn) "LibItsDenm_asn1" + encode (msgIn) "PER" } /** @@ -159,7 +159,7 @@ module LibItsDenm_TestSystem { DENM msgOut } with { - encode (msgOut) "LibItsDenm_asn1" + encode (msgOut) "PER" } } // End of group fa1Primitives -- GitLab From 2286026ae1a1a38b3d4241dcf0ed9b73af490c08 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 13 Jun 2017 13:18:27 +0000 Subject: [PATCH 017/320] GeoNetworking codecs & Layers ongoing Add PCAP layer --- ...ibItsGeoNetworking_EncdecDeclarations.ttcn | 13 +++ .../LibItsGeoNetworking_Functions.ttcn | 2 +- .../LibItsGeoNetworking_TestSystem.ttcn | 8 +- .../LibItsGeoNetworking_TypesAndValues.ttcn | 90 ++++++++++++++++--- 4 files changed, 98 insertions(+), 15 deletions(-) diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn index ecfefbd..0af2d10 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn @@ -1,7 +1,20 @@ module LibItsGeoNetworking_EncdecDeclarations { import from LibItsGeoNetworking_TypesAndValues all; + import from LibItsGeoNetworking_TestSystem all; + external function fx_enc_GeoNetworkingReq (GeoNetworkingReq p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_dec_GeoNetworkingReq (inout bitstring b, out GeoNetworkingReq p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + + external function fx_enc_GeoNetworkingInd (GeoNetworkingInd p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_dec_GeoNetworkingInd (inout bitstring b, out GeoNetworkingInd p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + external function fx_enc_GeoNetworkingPdu (GeoNetworkingPdu p) return bitstring with {extension "prototype(convert) encode(LibItsGeoNetworking)"} diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index fbc2d27..32b1a2f 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -836,7 +836,7 @@ module LibItsGeoNetworking_Functions { if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { f_acDisableSecurity(); } - } // End of function f_initialiseSecuredMode() + } // End of function f_uninitialiseSecuredMode() } // end geoConfigurationFunctions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index 3baf0d4..3bab45f 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -50,7 +50,7 @@ module LibItsGeoNetworking_TestSystem { */ type port UpperTesterPort message { out - UtInitialize, UtChangePosition, UtGnTrigger; + UtInitialize, UtChangePosition, UtAutoInteropTrigger, UtGnTrigger; in //FIXME RGY As discussed, boolean results are replaced by a top-level union of results // UtInitializeResult, UtChangePositionResult, UtGnTriggerResult, UtGnEventInd; @@ -163,6 +163,9 @@ module LibItsGeoNetworking_TestSystem { MacAddress macDestinationAddress, Bit256 ssp optional, UInt32 its_aid optional + } with { +// encode "RAW"; + variant "" } /** @@ -172,6 +175,9 @@ module LibItsGeoNetworking_TestSystem { GeoNetworkingPdu msgOut, MacAddress macDestinationAddress, UInt32 its_aid + } with { +// encode "RAW"; + variant "" } } // end nt2Primitives diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index 4dfef02..b16b7ef 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -231,6 +231,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt8 reserved, Lifetime lifeTime, UInt8 routerHopLimit + } with { + variant "FIELDORDER(msb)" } type enumerated BasicNextHeader { @@ -239,7 +241,7 @@ module LibItsGeoNetworking_TypesAndValues { e_securedPacket(2), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -250,6 +252,8 @@ module LibItsGeoNetworking_TypesAndValues { type record Lifetime { UInt6 multiplier, LtBase ltBase + } with { + variant "FIELDORDER(msb)" } /** @@ -261,7 +265,7 @@ module LibItsGeoNetworking_TypesAndValues { e_10s(2), e_100s(3) } with { - variant "2 bit" + variant "FIELDLENGTH(2)" //variant "2 bit" } } // end group geoNetworkingBasicHeader @@ -301,6 +305,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 plLength, // The Codec shall set the length of the paylaod if present UInt8 maxHopLimit, UInt8 reserved2 + } with { + variant "FIELDORDER(msb)" } /** @@ -313,7 +319,7 @@ module LibItsGeoNetworking_TypesAndValues { e_ipv6(3), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -337,18 +343,21 @@ module LibItsGeoNetworking_TypesAndValues { SCF scf, ChannelOffload channelOffload, TcId tcId + } with { + variant "FIELDORDER(msb)" } + type enumerated SCF { e_scfDisabled(0), e_scfEnable (1) } with { - variant "1 bit" + variant "FIELDLENGTH(1)" //variant "1 bit" } type enumerated ChannelOffload { e_choffDisabled(0), e_choffEnable (1) } with { - variant "1 bit" + variant "FIELDLENGTH(1)" //variant "1 bit" } type UInt6 TcId; @@ -374,6 +383,8 @@ module LibItsGeoNetworking_TypesAndValues { LSRequestHeader lsRequestHeader, LSReplyHeader lsReplyHeader, AnyHeader anyHeader + } with { + variant "" } /** @@ -385,6 +396,8 @@ module LibItsGeoNetworking_TypesAndValues { type record AnyHeader { UInt16 seqNumber, UInt16 reserved + } with { + variant "FIELDORDER(msb)" } /** @@ -396,6 +409,8 @@ module LibItsGeoNetworking_TypesAndValues { */ type record BeaconHeader { LongPosVector srcPosVector + } with { + variant "FIELDORDER(msb)" } /** @@ -423,6 +438,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 distanceB, UInt16 angle, UInt16 reserved2 + } with { + variant "FIELDORDER(msb)" } /** @@ -457,6 +474,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 reserved, LongPosVector srcPosVector, ShortPosVector dstPosVector + } with { + variant "FIELDORDER(msb)" } /** @@ -474,6 +493,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 reserved, LongPosVector srcPosVector, ShortPosVector dstPosVector + } with { + variant "FIELDORDER(msb)" } /** @@ -491,6 +512,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 reserved, LongPosVector srcPosVector, GN_Address gnAddress + } with { + variant "FIELDORDER(msb)" } /** @@ -504,6 +527,8 @@ module LibItsGeoNetworking_TypesAndValues { type record SHBHeader { LongPosVector srcPosVector, UInt32 reserved + } with { + variant "FIELDORDER(msb)" } /** @@ -519,6 +544,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 seqNumber, UInt16 reserved, LongPosVector srcPosVector + } with { + variant "FIELDORDER(msb)" } group geoNetworkingHeadersSubtypes { @@ -531,6 +558,8 @@ module LibItsGeoNetworking_TypesAndValues { type record AnyHeaderType { HeaderType headerType(e_any), UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -541,6 +570,8 @@ module LibItsGeoNetworking_TypesAndValues { type record BeaconHeaderType { HeaderType headerType(e_beacon), UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -551,6 +582,8 @@ module LibItsGeoNetworking_TypesAndValues { type record GeoAnycastHeaderType { HeaderType headerType(e_geoAnycast), HeaderSubTypeGeoAnycast headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -561,6 +594,8 @@ module LibItsGeoNetworking_TypesAndValues { type record GeoBroadcastHeaderType { HeaderType headerType(e_geoBroadcast), HeaderSubTypeGeoBroadcast headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -571,6 +606,8 @@ module LibItsGeoNetworking_TypesAndValues { type record GeoUnicastHeaderType { HeaderType headerType(e_geoUnicast), UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -581,6 +618,8 @@ module LibItsGeoNetworking_TypesAndValues { type record LsHeaderType { HeaderType headerType(e_locationService), HeaderSubTypeLs headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -591,6 +630,8 @@ module LibItsGeoNetworking_TypesAndValues { type record SaHeaderType { HeaderType headerType(e_serviceAnnouncement), HeaderSubTypeSa headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -601,6 +642,8 @@ module LibItsGeoNetworking_TypesAndValues { type record TsbHeaderType { HeaderType headerType(e_topologicallyScopedBroadcast), HeaderSubTypeTSB headerSubType + } with { + variant "FIELDORDER(msb)" } /** @@ -612,7 +655,7 @@ module LibItsGeoNetworking_TypesAndValues { e_geoAnycastElip(2), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -624,7 +667,7 @@ module LibItsGeoNetworking_TypesAndValues { e_geoBroadcastElip(2), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -635,7 +678,7 @@ module LibItsGeoNetworking_TypesAndValues { e_multiHop(1), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -646,7 +689,7 @@ module LibItsGeoNetworking_TypesAndValues { e_lsReply(1), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -657,7 +700,7 @@ module LibItsGeoNetworking_TypesAndValues { e_saEos(1), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -682,6 +725,8 @@ module LibItsGeoNetworking_TypesAndValues { LsHeaderType lsHdr, SaHeaderType saHdr, UInt8 reserved + } with { + variant "FIELDORDER(msb)" } /** @@ -698,7 +743,7 @@ module LibItsGeoNetworking_TypesAndValues { e_serviceAnnouncement(7), e_reserved } with { - variant "4 bit" + variant "FIELDLENGTH(4)" //variant "4 bit" } /** @@ -738,6 +783,8 @@ module LibItsGeoNetworking_TypesAndValues { Bit1 pai, Int15 speed, UInt16 heading + } with { + variant "FIELDORDER(msb)" } /** @@ -769,6 +816,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt32 timestamp_, Int32 latitude, Int32 longitude + } with { + variant "FIELDORDER(msb)" } group geoNetworkingAddress { @@ -796,6 +845,8 @@ module LibItsGeoNetworking_TypesAndValues { StationType stationType, UInt10 stationCountryCode, Oct6 mid + } with { + variant "FIELDORDER(msb)" } group geoNetworkingAddressSubtypes { @@ -818,7 +869,7 @@ module LibItsGeoNetworking_TypesAndValues { e_tram(11), e_roadSideUnit(15) } with { - variant "5 bit" + variant "FIELDLENGTH(5)" //variant "5 bit" } /** @@ -829,7 +880,7 @@ module LibItsGeoNetworking_TypesAndValues { e_manual(1), e_initial(0) } with { - variant "1 bit" + variant "FIELDLENGTH(1)" //variant "1 bit" } } // end group geoNetworkingAddressSubtypes @@ -854,6 +905,8 @@ module LibItsGeoNetworking_TypesAndValues { type record Payload { DecodedPayload decodedPayload optional, GnRawPayload rawPayload + } with { + variant "FIELDORDER(msb)" } /** @@ -905,6 +958,16 @@ module LibItsGeoNetworking_TypesAndValues { group utPrimitives { + /** + * @desc AutoInterop UpperTester trigger + * @member utRadioOnOff Set to true to power on the radio (on-link mode), false to power off the radio (off-link). + */ + type union UtAutoInteropTrigger { + boolean utRadioOnOff + } // End of type UtAutoInteropTrigger + + type boolean UtAutoInteropTriggerResult; + /** * @desc UT primitives for GeoNetworking * @member geoUnicast - @@ -1121,5 +1184,6 @@ module LibItsGeoNetworking_TypesAndValues { } } with { + variant "" encode "LibItsGeoNetworking" } -- GitLab From 3bdb33a35aca6fd27566c3af1cd1183d038ff584 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 21 Jun 2017 11:41:56 +0000 Subject: [PATCH 018/320] GeoNetworking codecs & Layers ongoing --- ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index 3bab45f..e306026 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -164,8 +164,8 @@ module LibItsGeoNetworking_TestSystem { Bit256 ssp optional, UInt32 its_aid optional } with { -// encode "RAW"; - variant "" + //encode "RAW"; + variant "FIELDORDER(msb)" } /** @@ -176,14 +176,15 @@ module LibItsGeoNetworking_TestSystem { MacAddress macDestinationAddress, UInt32 its_aid } with { -// encode "RAW"; - variant "" + //encode "RAW"; + variant "FIELDORDER(msb)" } } // end nt2Primitives } // End of group networkAndTransportPrimitives with { + variant "" encode "LibIts_Interface" } // end interfacePrimitives -- GitLab From 07f1abb50dcfccf0d4509873e9694b32b5c837e5 Mon Sep 17 00:00:00 2001 From: filatov Date: Tue, 4 Jul 2017 14:51:02 +0000 Subject: [PATCH 019/320] Remove unneeded imports --- ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn | 22 +++++++++++++++++- ttcn/BTP/LibItsBtp_Functions.ttcn | 6 ++--- ttcn/BTP/LibItsBtp_TestSystem.ttcn | 8 +++---- ttcn/BTP/LibItsBtp_TypesAndValues.ttcn | 23 +++++++++++-------- ttcn/Common/LibItsCommon_Functions.ttcn | 4 ++-- ttcn/DENM/LibItsDenm_Functions.ttcn | 2 +- ttcn/DENM/LibItsDenm_TypesAndValues.ttcn | 2 +- .../LibItsGeoNetworking_Functions.ttcn | 4 ++-- .../LibItsGeoNetworking_Pixits.ttcn | 2 +- .../LibItsGeoNetworking_Templates.ttcn | 6 ++--- .../LibItsGeoNetworking_TestSystem.ttcn | 4 ++-- .../LibItsGeoNetworking_TypesAndValues.ttcn | 2 +- 12 files changed, 54 insertions(+), 31 deletions(-) diff --git a/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn b/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn index a336617..92c9cd4 100644 --- a/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn +++ b/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn @@ -2,12 +2,32 @@ module LibItsBtp_EncdecDeclarations { // LibItsBtp import from LibItsBtp_TypesAndValues all; + import from LibItsBtp_TestSystem all; external function fx_enc_BtpPayload (BtpPayload p) return bitstring - with {extension "prototype(convert) encode(LibItsBtp)"} + with {extension "prototype(convert) encode(LibItsBtp_BtpPayload)"} /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) external function fx_dec_BtpPayload (inout bitstring b, out BtpPayload p) return integer with {extension "prototype(sliding) decode(LibItsBtp)"} */ + + external function fx_enc_BtpReq (BtpReq p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_enc_BtpInd (BtpInd p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_dec_BtpInd (inout bitstring b, out BtpInd p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + + external function fx_dec_BtpReq (inout bitstring b, out BtpReq p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + + external function fx_enc_BtpPacket (BtpPacket p) return bitstring + with {extension "prototype(convert) encode(LibIts_Interface)"} + + external function fx_dec_BtpPacket (inout bitstring b, out BtpPacket p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + } // End of module LibItsBtp_EncdecDeclarations diff --git a/ttcn/BTP/LibItsBtp_Functions.ttcn b/ttcn/BTP/LibItsBtp_Functions.ttcn index 8f31833..0a91b67 100644 --- a/ttcn/BTP/LibItsBtp_Functions.ttcn +++ b/ttcn/BTP/LibItsBtp_Functions.ttcn @@ -14,11 +14,11 @@ // LibCommon import from LibCommon_Sync all; - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; +// import from LibCommon_Time all; +// import from LibCommon_VerdictControl all; // LibItsCommon - import from LibItsCommon_Functions all; +// import from LibItsCommon_Functions all; import from LibItsCommon_TypesAndValues all; // LibItsBtp diff --git a/ttcn/BTP/LibItsBtp_TestSystem.ttcn b/ttcn/BTP/LibItsBtp_TestSystem.ttcn index e131d71..cc4b320 100644 --- a/ttcn/BTP/LibItsBtp_TestSystem.ttcn +++ b/ttcn/BTP/LibItsBtp_TestSystem.ttcn @@ -12,8 +12,8 @@ module LibItsBtp_TestSystem { // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; +// import from LibCommon_Time {modulepar all}; +// import from LibCommon_Sync all; // LibIts import from LibItsCommon_TestSystem all; @@ -112,8 +112,8 @@ module LibItsBtp_TestSystem { } // end nt1Primitives } // End of group networkAndTransportPrimitives - with { - encode "LibIts_Interface" + with { + encode "LibIts_Interface" } // end interfacePrimitives } // End of module LibItsBtp_TestSystem diff --git a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn index cad2ced..cf7d8d4 100644 --- a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn +++ b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn @@ -35,6 +35,9 @@ module LibItsBtp_TypesAndValues { BtpHeader header, BtpPayload payload optional } + with { + encode "LibIts_Interface" + } } // end btpPdus @@ -100,6 +103,9 @@ module LibItsBtp_TypesAndValues { DecodedBtpPayload decodedPayload optional, BtpRawPayload rawPayload } + with { + encode "LibItsBtp_BtpPayload" + } /** * @desc The decoded payload of the BTP packet @@ -120,13 +126,13 @@ module LibItsBtp_TypesAndValues { SREM sremPacket, SSEM ssemPacket } with { - encode (camPacket) "LibItsCam_asn1"; - encode (denmPacket) "LibItsDenm_asn1"; - encode (mapemPacket) "LibItsMapemSpatem_asn1"; - encode (spatemPacket) "LibItsMapemSpatem_asn1"; - encode (ivimPacket) "LibItsIvim_asn1"; - encode (sremPacket) "LibItsSremSsem_asn1"; - encode (ssemPacket) "LibItsSremSsem_asn1" + encode (camPacket) "PER"; + encode (denmPacket) "PER"; + encode (mapemPacket) "PER"; + encode (spatemPacket) "PER"; + encode (ivimPacket) "PER"; + encode (sremPacket) "PER"; + encode (ssemPacket) "PER" } } //end btpPayload @@ -189,6 +195,3 @@ module LibItsBtp_TypesAndValues { } } -with { - encode "LibItsBtp" -} diff --git a/ttcn/Common/LibItsCommon_Functions.ttcn b/ttcn/Common/LibItsCommon_Functions.ttcn index 3d7dd52..ec4082a 100644 --- a/ttcn/Common/LibItsCommon_Functions.ttcn +++ b/ttcn/Common/LibItsCommon_Functions.ttcn @@ -13,8 +13,8 @@ module LibItsCommon_Functions { // LibCommon - import from LibCommon_Sync all; - import from LibCommon_VerdictControl all; +// import from LibCommon_Sync all; +// import from LibCommon_VerdictControl all; import from LibCommon_BasicTypesAndValues all; // LibIts diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn index d028ce7..7f9859b 100644 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ b/ttcn/DENM/LibItsDenm_Functions.ttcn @@ -30,7 +30,7 @@ module LibItsDenm_Functions { import from LibItsDenm_TestSystem all; import from LibItsDenm_TypesAndValues all; import from LibItsDenm_Templates all; - import from LibItsDenm_Pixits all; +// import from LibItsDenm_Pixits all; import from LibItsDenm_Pics all; group utFuntions { diff --git a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn index 6ecc3c8..9d3824f 100644 --- a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn +++ b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn @@ -8,7 +8,7 @@ module LibItsDenm_TypesAndValues { //LibCommon - import from LibCommon_BasicTypesAndValues all; +// import from LibCommon_BasicTypesAndValues all; // LibIts import from DENM_PDU_Descriptions language "ASN.1:1997" all; diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 32b1a2f..40291fc 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -24,7 +24,7 @@ module LibItsGeoNetworking_Functions { import from LibItsCommon_Templates all; import from LibItsCommon_Functions all; import from LibItsCommon_Pixits all; - import from LibItsCommon_TestSystem all; +// import from LibItsCommon_TestSystem all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; @@ -38,7 +38,7 @@ module LibItsGeoNetworking_Functions { import from LibItsGeoNetworking_Templates all; import from LibItsGeoNetworking_Pixits all; import from LibItsGeoNetworking_Pics all; - import from LibItsGeoNetworking_EncdecDeclarations all; +// import from LibItsGeoNetworking_EncdecDeclarations all; group utFuntions { diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn index 81c43b9..22311ec 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn @@ -12,7 +12,7 @@ module LibItsGeoNetworking_Pixits { // LibCommon - import from LibCommon_DataStrings all; +// import from LibCommon_DataStrings all; import from LibCommon_BasicTypesAndValues all; // LibIts diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index bb5a4d7..0a8ede7 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -21,11 +21,11 @@ module LibItsGeoNetworking_Templates { // LibItsBtp import from LibItsBtp_Templates all; - import from LibItsBtp_EncdecDeclarations all; +// import from LibItsBtp_EncdecDeclarations all; // LibItsSecurity import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Pixits all; +// import from LibItsSecurity_Pixits all; // LibItsIpv6OverGeoNetworking import from LibItsIpv6OverGeoNetworking_TypesAndValues all; @@ -35,7 +35,7 @@ module LibItsGeoNetworking_Templates { import from LibItsGeoNetworking_TestSystem all; import from LibItsGeoNetworking_TypesAndValues all; import from LibItsGeoNetworking_Pixits all; - import from LibItsGeoNetworking_EncdecDeclarations all; +// import from LibItsGeoNetworking_EncdecDeclarations all; group geoNwPrimitivesTemplates { diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index e306026..919713c 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -12,8 +12,8 @@ module LibItsGeoNetworking_TestSystem { // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; +// import from LibCommon_Time {modulepar all}; +// import from LibCommon_Sync all; import from LibCommon_BasicTypesAndValues all; import from LibCommon_DataStrings all; diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index b16b7ef..56b6f96 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -16,7 +16,7 @@ module LibItsGeoNetworking_TypesAndValues { import from LibCommon_DataStrings all; // LibIts - import from LibItsCommon_TypesAndValues all; +// import from LibItsCommon_TypesAndValues all; import from LibItsBtp_TypesAndValues {type BtpPacket;} import from LibItsIpv6OverGeoNetworking_TypesAndValues {type Ipv6Packet;} -- GitLab From 57568362b8d47330189f99e7cb817caa4d9ca51d Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 11 Jul 2017 11:35:49 +0000 Subject: [PATCH 020/320] CAM codecs & Layers ongoing --- ttcn/CAM/LibItsCam_TestSystem.ttcn | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn index 4d0bd3d..0acc5fa 100644 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ b/ttcn/CAM/LibItsCam_TestSystem.ttcn @@ -141,7 +141,6 @@ module LibItsCam_TestSystem { UInt32 its_aid optional } with { -// variant "" encode (msgIn) "PER"//LibItsCam_asn1 /* encode (gnNextHeader) "RAW" @@ -163,7 +162,6 @@ module LibItsCam_TestSystem { CAM msgOut } with { -// variant "" encode (msgOut) "PER"//LibItsCam_asn1 } @@ -171,6 +169,7 @@ module LibItsCam_TestSystem { } // End of group facilityPrimitives with { + variant "" encode "LibIts_Interface" } // end interfacePrimitives -- GitLab From 3d752de84e99f9fce162e499894c671503c2dcdf Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 13 Jul 2017 06:28:38 +0000 Subject: [PATCH 021/320] Simplify Payload for GeoNetworking & BTP ==> Check TODO in Security ATS --- ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn | 3 - ttcn/BTP/LibItsBtp_Functions.ttcn | 2 +- ttcn/BTP/LibItsBtp_Pixits.ttcn | 5 +- ttcn/BTP/LibItsBtp_Templates.ttcn | 28 ++-- ttcn/BTP/LibItsBtp_TypesAndValues.ttcn | 78 +++------ ...ibItsGeoNetworking_EncdecDeclarations.ttcn | 6 - .../LibItsGeoNetworking_Functions.ttcn | 8 +- .../LibItsGeoNetworking_Templates.ttcn | 154 +++--------------- .../LibItsGeoNetworking_TypesAndValues.ttcn | 51 ++---- ...6OverGeoNetworking_EncdecDeclarations.ttcn | 11 ++ ...LibItsIpv6OverGeoNetworking_Functions.ttcn | 45 +++-- ...LibItsIpv6OverGeoNetworking_Templates.ttcn | 34 ++-- ...sIpv6OverGeoNetworking_TypesAndValues.ttcn | 5 +- 13 files changed, 125 insertions(+), 305 deletions(-) create mode 100644 ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_EncdecDeclarations.ttcn diff --git a/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn b/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn index 92c9cd4..2bb5ff8 100644 --- a/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn +++ b/ttcn/BTP/LibItsBtp_EncdecDeclarations.ttcn @@ -4,9 +4,6 @@ module LibItsBtp_EncdecDeclarations { import from LibItsBtp_TypesAndValues all; import from LibItsBtp_TestSystem all; - external function fx_enc_BtpPayload (BtpPayload p) return bitstring - with {extension "prototype(convert) encode(LibItsBtp_BtpPayload)"} - /* TODO RGy function not implemented! (decvalue() not used by test suite @29-06-2016) external function fx_dec_BtpPayload (inout bitstring b, out BtpPayload p) return integer with {extension "prototype(sliding) decode(LibItsBtp)"} diff --git a/ttcn/BTP/LibItsBtp_Functions.ttcn b/ttcn/BTP/LibItsBtp_Functions.ttcn index 0a91b67..86f2218 100644 --- a/ttcn/BTP/LibItsBtp_Functions.ttcn +++ b/ttcn/BTP/LibItsBtp_Functions.ttcn @@ -234,7 +234,7 @@ * @desc Gets the BTP payload to use. * @return BTP payload */ - function f_getBtpPayload() return BtpPayload { + function f_getBtpPayload() return BtpRawPayload { return PX_PAYLOAD; } diff --git a/ttcn/BTP/LibItsBtp_Pixits.ttcn b/ttcn/BTP/LibItsBtp_Pixits.ttcn index 06e819a..41701ee 100644 --- a/ttcn/BTP/LibItsBtp_Pixits.ttcn +++ b/ttcn/BTP/LibItsBtp_Pixits.ttcn @@ -43,10 +43,7 @@ module LibItsBtp_Pixits { * @desc Payload to be sent to the IUT for testing matter * */ - modulepar BtpPayload PX_PAYLOAD := { - decodedPayload := omit, - rawPayload := '0102030405'O - }; + modulepar BtpRawPayload PX_PAYLOAD := '0102030405'O ; } // end LibItsBtp_Pixits \ No newline at end of file diff --git a/ttcn/BTP/LibItsBtp_Templates.ttcn b/ttcn/BTP/LibItsBtp_Templates.ttcn index dbbb0aa..a64fa43 100644 --- a/ttcn/BTP/LibItsBtp_Templates.ttcn +++ b/ttcn/BTP/LibItsBtp_Templates.ttcn @@ -89,7 +89,7 @@ module LibItsBtp_Templates { * @param p_payload Payload */ template (value) BtpPacket m_btpA ( - template (value) BtpPayload p_payload + template (value) BtpRawPayload p_payload ):= { header := { btpAHeader := { @@ -107,7 +107,7 @@ module LibItsBtp_Templates { * @param p_payload Payload */ template( value) BtpPacket m_btpB ( - template (value) BtpPayload p_payload + template (value) BtpRawPayload p_payload ) := { header := { btpBHeader := { @@ -125,9 +125,9 @@ module LibItsBtp_Templates { * @param p_payload Payload */ template (value) BtpPacket m_btpAWithPorts ( - template (value) BtpPortId p_destPort, - template (value) BtpPortId p_srcPort, - template (value) BtpPayload p_payload + template (value) BtpPortId p_destPort, + template (value) BtpPortId p_srcPort, + template (value) BtpRawPayload p_payload ):= { header := { btpAHeader := { @@ -145,9 +145,9 @@ module LibItsBtp_Templates { * @param p_payload Payload */ template( value) BtpPacket m_btpBWithPorts ( - template (value) BtpPortId p_destPort, - template (value) BtpPortInfo p_destPortInfo, - template (value) BtpPayload p_payload + template (value) BtpPortId p_destPort, + template (value) BtpPortInfo p_destPortInfo, + template (value) BtpRawPayload p_payload ) := { header := { btpBHeader := { @@ -165,9 +165,9 @@ module LibItsBtp_Templates { * @param p_payload Payload */ template BtpPacket mw_btpA ( - template (present) BtpPortId p_destPort, - template (present) BtpPortId p_srcPort, - template BtpPayload p_payload + template (present) BtpPortId p_destPort, + template (present) BtpPortId p_srcPort, + template BtpRawPayload p_payload ) := { header := { btpAHeader := { @@ -185,9 +185,9 @@ module LibItsBtp_Templates { * @param p_payload Payload */ template BtpPacket mw_btpB ( - template (present) BtpPortId p_destPort, - template (present) BtpPortInfo p_destPortInfo, - template BtpPayload p_payload + template (present) BtpPortId p_destPort, + template (present) BtpPortInfo p_destPortInfo, + template BtpRawPayload p_payload ) := { header := { btpBHeader := { diff --git a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn index cf7d8d4..309236d 100644 --- a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn +++ b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn @@ -14,14 +14,7 @@ module LibItsBtp_TypesAndValues { // LibCommon import from LibCommon_BasicTypesAndValues all; - // LibIts - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions 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 IVIM_PDU_Descriptions 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; + type octetstring BtpRawPayload; group btpPdus { @@ -33,9 +26,10 @@ module LibItsBtp_TypesAndValues { */ type record BtpPacket { BtpHeader header, - BtpPayload payload optional + BtpRawPayload payload optional } with { + variant "FIELDORDER(msb)" encode "LibIts_Interface" } @@ -52,7 +46,10 @@ module LibItsBtp_TypesAndValues { type union BtpHeader { BtpAHeader btpAHeader, BtpBHeader btpBHeader - } + } with { + variant "FIELDORDER(msb)" + } + /** * @desc BTP-A Header @@ -63,7 +60,10 @@ module LibItsBtp_TypesAndValues { type record BtpAHeader { BtpPortId destinationPort, BtpPortId sourcePort - } + } with { + variant "FIELDORDER(msb)" + } + /** * @desc BTP-B Header @@ -74,7 +74,10 @@ module LibItsBtp_TypesAndValues { type record BtpBHeader { BtpPortId destinationPort, BtpPortInfo destinationPortInfo - } + } with { + variant "FIELDORDER(msb)" + } + /** * @desc BTP Port ID @@ -90,53 +93,6 @@ module LibItsBtp_TypesAndValues { } // end btpHeaders - group btpPayload { - - type octetstring BtpRawPayload; - - /** - * @desc The payload of the BTP packet - * @member decodedPayload The decoded payload - * @member rawPayload Raw payload as it is received - */ - type record BtpPayload { - DecodedBtpPayload decodedPayload optional, - BtpRawPayload rawPayload - } - with { - encode "LibItsBtp_BtpPayload" - } - - /** - * @desc The decoded payload of the BTP packet - * @member camPacket The CAM packet - * @member denmPacket The DENM packet - * @member mapemPacket - * @member spatemPacket - * @member ivimPacket - * @member sremPacket - * @member seemPacket - */ - type union DecodedBtpPayload { - CAM camPacket, - DENM denmPacket, - MAPEM mapemPacket, - SPATEM spatemPacket, - IVIM ivimPacket, - SREM sremPacket, - SSEM ssemPacket - } with { - encode (camPacket) "PER"; - encode (denmPacket) "PER"; - encode (mapemPacket) "PER"; - encode (spatemPacket) "PER"; - encode (ivimPacket) "PER"; - encode (sremPacket) "PER"; - encode (ssemPacket) "PER" - } - - } //end btpPayload - group utPrimitives { group utCommonPrimitives { @@ -194,4 +150,8 @@ module LibItsBtp_TypesAndValues { encode "UpperTester" } +} with { + variant "" + encode "LibItsGeoNetworking" } + diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn index 0af2d10..f80507c 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn @@ -21,12 +21,6 @@ module LibItsGeoNetworking_EncdecDeclarations { external function fx_dec_GeoNetworkingPdu (inout bitstring b, out GeoNetworkingPdu p) return integer with {extension "prototype(sliding) decode(LibItsGeoNetworking)"} - external function fx_enc_Payload (Payload p) return bitstring - with {extension "prototype(convert) encode(LibItsGeoNetworking)"} - - external function fx_dec_Payload (inout bitstring b, out Payload p) return integer - with {extension "prototype(sliding) decode(LibItsGeoNetworking)"} - external function fx_enc_GnNonSecuredPacket (GnNonSecuredPacket p) return bitstring with {extension "prototype(convert) encode(LibItsGeoNetworking)"} diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 40291fc..24e2eaf 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -2052,7 +2052,7 @@ module LibItsGeoNetworking_Functions { */ function f_sendGeoNetMessageWithPayload( in template (value) GeoNetworkingReq p_geoNetReq, - in template (value) Payload p_payload + in template (value) GnRawPayload p_payload ) runs on ItsGeoNetworking { p_geoNetReq.msgOut.gnPacket.packet.payload := p_payload; geoNetworkingPort.send(p_geoNetReq); @@ -2070,7 +2070,7 @@ module LibItsGeoNetworking_Functions { */ function f_receiveGeoNetMessageWithPayload( in template (present) GeoNetworkingInd p_geoNetInd, - in template (present) Payload p_payload + in template (present) GnRawPayload p_payload ) return template (present) GeoNetworkingInd { var template (present) GeoNetworkingInd v_geoNetInd := p_geoNetInd; @@ -2796,7 +2796,7 @@ module LibItsGeoNetworking_Functions { f_getPosition(c_compNodeC) // FIXME To be verified YANN )); // Add CAM payload - v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload)); + v_gnNonSecuredPacket.payload := valueof(p_payload); f_buildGnSecuredCam( v_securedMessage, @@ -2846,7 +2846,7 @@ module LibItsGeoNetworking_Functions { f_getPosition(c_compNodeC) // FIXME To be verified YANN )); // Add CAM payload - v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload)); + v_gnNonSecuredPacket.payload := valueof(p_payload); f_buildGnSecuredCam( v_securedMessage, diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index 0a8ede7..2bf3b3d 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -110,7 +110,7 @@ module LibItsGeoNetworking_Templates { gnAddress := p_destinationGnAddr, lifetime := c_lifetime, trafficClass := valueof(m_trafficClass), - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here + payload := ''O } } @@ -155,7 +155,7 @@ module LibItsGeoNetworking_Templates { octetstring p_payload ) modifies m_generateGeoUnicastMessage := { geoUnicast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here + payload := p_payload } } @@ -172,7 +172,7 @@ module LibItsGeoNetworking_Templates { octetstring p_payload ) modifies m_generateGeoUnicastMessageWithLifetime := { geoUnicast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here + payload := p_payload } } @@ -189,7 +189,7 @@ module LibItsGeoNetworking_Templates { trafficClass := valueof(m_trafficClass), reserved := c_uInt24Zero, area := p_geoArea.area, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here + payload := ''O } } @@ -232,7 +232,7 @@ module LibItsGeoNetworking_Templates { octetstring p_payload ) modifies m_generateGeoBroadcastMessage := { geoBroadcast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here + payload := p_payload } } @@ -249,7 +249,7 @@ module LibItsGeoNetworking_Templates { trafficClass := valueof(m_trafficClass), reserved := c_uInt24Zero, area := p_geoArea.area, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here + payload := ''O } } @@ -279,7 +279,7 @@ module LibItsGeoNetworking_Templates { octetstring p_payload ) modifies m_generateGeoAnycastMessage := { geoAnycast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here + payload := p_payload } } @@ -289,7 +289,7 @@ module LibItsGeoNetworking_Templates { template (value) UtGnTrigger m_generateShbMessage := { shb := { trafficClass := valueof(m_trafficClass), - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here + payload := ''O } } @@ -315,7 +315,7 @@ module LibItsGeoNetworking_Templates { octetstring p_payload ) modifies m_generateShbMessage := { shb := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here + payload := p_payload } } @@ -327,7 +327,7 @@ module LibItsGeoNetworking_Templates { nbHops := 10, lifetime := c_lifetime, trafficClass := valueof(m_trafficClass), - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here + payload := ''O } } @@ -542,7 +542,7 @@ module LibItsGeoNetworking_Templates { packet := valueof({ commonHeader := p_commonHeader, extendedHeader := p_extHeader, - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) + payload := char2oct("DEFAULT_PAYLOAD") }), securedMsg := omit } @@ -563,24 +563,6 @@ module LibItsGeoNetworking_Templates { } } - /** - * @desc Send template for GeoNetworking Packet with octetstring payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * @param p_payload Octetstring payload - * - * @see m_geoNwPacket - */ - template (value) GeoNetworkingPacket m_geoNwPacketWithOctetstringPayload( - in template (value) CommonHeader p_commonHeader, - in template (value) ExtendedHeader p_extHeader, - in template (value) octetstring p_payload - ) modifies m_geoNwPacket := { - packet := { - payload := valueof(f_adaptPayload_m(p_payload)) - } - } - /** * @desc Send template for GeoNetworking Packet with payload * @param p_basicHeader Common header of GeoNetworking packet @@ -592,7 +574,7 @@ module LibItsGeoNetworking_Templates { template (value) GeoNetworkingPacket m_geoNwPacketWithPayload( in template (value) CommonHeader p_commonHeader, in template (value) ExtendedHeader p_extHeader, - in template (value) Payload p_payload + in template (value) GnRawPayload p_payload ) modifies m_geoNwPacket := { packet := { payload := p_payload @@ -650,7 +632,7 @@ module LibItsGeoNetworking_Templates { in template (present) octetstring p_payload ) modifies mw_geoNwPacket := { packet := { - payload := f_adaptPayload_mw(p_payload) + payload := p_payload } } @@ -667,7 +649,7 @@ module LibItsGeoNetworking_Templates { template(present) GeoNetworkingPacket mw_geoNwPduWithPayload( in template (present) CommonHeader p_commonHeader, in template (present) ExtendedHeader p_extHeader, - in template (present) Payload p_payload + in template (present) GnRawPayload p_payload ) modifies mw_geoNwPacket := { packet := { payload := p_payload @@ -693,7 +675,7 @@ module LibItsGeoNetworking_Templates { * @param payload Expected GN payload */ template (present) GnNonSecuredPacket mw_geoNwAnyPacket_withPayload( - template (present) Payload p_payload + template (present) GnRawPayload p_payload ) := { commonHeader := mw_commonHeader( ?, @@ -733,7 +715,7 @@ module LibItsGeoNetworking_Templates { p_destinationShortPosVec, p_seqNumber )), - payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) + payload := valueof(char2oct("DEFAULT_PAYLOAD")) } /** @@ -844,7 +826,7 @@ module LibItsGeoNetworking_Templates { p_seqNumber, p_anycastArea )), - payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) + payload := valueof(char2oct("DEFAULT_PAYLOAD")) } /** @@ -958,7 +940,7 @@ module LibItsGeoNetworking_Templates { p_seqNumber, p_broadcastArea )), - payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) + payload := valueof(char2oct("DEFAULT_PAYLOAD")) } /** @@ -1009,7 +991,7 @@ module LibItsGeoNetworking_Templates { in template (present) LongPosVector p_sourceLongPosVec, in template (present) UInt16 p_seqNumber, in template (present) NextHeader p_nextHeader, - in template (present) Payload p_payload + in template (present) GnRawPayload p_payload ) modifies mw_geoNwBroadcastPacketWithNextHeader := { payload := p_payload } @@ -1138,10 +1120,7 @@ module LibItsGeoNetworking_Templates { p_seqNumber, p_mid ), - payload := { - decodedPayload := omit, - rawPayload := ''O - } + payload := omit } /** @@ -1183,10 +1162,7 @@ module LibItsGeoNetworking_Templates { extendedHeader := mw_lsReplyHeader( p_sourceLongPosVec, p_destinationLongPosVec ), - payload := { - decodedPayload := omit, - rawPayload := ''O - } + payload := omit } } // end group geoNwPacketLsTemplates @@ -1227,16 +1203,7 @@ module LibItsGeoNetworking_Templates { m_beaconHeaderType ), extendedHeader := mw_beaconHeader(p_sourceLongPosVec), - payload := ( - { - decodedPayload := omit, - rawPayload := ''O - }, - { // Ethernet testing requires minimum packet size of 60 bytes - decodedPayload := *, - rawPayload := '00000000000000000000'O - } - ) + payload := (*, '00000000000000000000'O) } } // end group geoNwPacketBeaconTemplates @@ -1259,7 +1226,7 @@ module LibItsGeoNetworking_Templates { extendedHeader := valueof(m_shbHeader( p_sourceLongPosVec )), - payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) + payload := valueof(char2oct("DEFAULT_PAYLOAD")) } /** @@ -1306,7 +1273,7 @@ module LibItsGeoNetworking_Templates { p_seqNumber, p_sourceLongPosVec )), - payload := valueof(f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD"))) + payload := valueof(char2oct("DEFAULT_PAYLOAD")) } /** @@ -2316,77 +2283,4 @@ module LibItsGeoNetworking_Templates { } // end geoMiscTemplates - group geoTemplateFunctions { - - function f_adaptPayloadForUtInd_m(in template (omit) Payload p_gnPayload) return octetstring { - if(not isvalue(p_gnPayload)) { - testcase.stop(__SCOPE__ & " can handle payload values only"); - } - if(PX_BTP_IN_UT_IND == false) { - if(PX_GN_UPPER_LAYER == e_btpA or PX_GN_UPPER_LAYER == e_btpB) { - if( ispresent(p_gnPayload.decodedPayload) ){ - return bit2oct(encvalue(p_gnPayload.decodedPayload.btpPacket.payload)); - } - - return valueof(p_gnPayload.rawPayload); - } - } - - return bit2oct(encvalue(valueof(p_gnPayload))); - } - - function f_adaptPayload_m(in template (value) octetstring p_finalPayload) return template (value) Payload { - var template (value) Payload v_payload; - - if(PX_GN_UPPER_LAYER == e_any) { - v_payload := { decodedPayload := omit, rawPayload := p_finalPayload}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_ipv6) { - v_payload := { decodedPayload := { ipv6Packet := m_ipv6Packet(c_unspecified, c_allNodesMca, c_noNextHdr, m_octetstringPayload(p_finalPayload))}, rawPayload := ''O}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpA) { - v_payload := { decodedPayload := { btpPacket := m_btpA({ decodedPayload := omit, rawPayload := p_finalPayload })}, rawPayload := ''O}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpB) { - v_payload := { decodedPayload := { btpPacket := m_btpB({ decodedPayload := omit, rawPayload := p_finalPayload })}, rawPayload := ''O}; - return v_payload; - } - - return v_payload; - } - - function f_adaptPayload_mw(in template (present) octetstring p_finalPayload) return template (present) Payload { - var template (present) Payload v_payload; - - if(PX_GN_UPPER_LAYER == e_any) { - v_payload := { decodedPayload := *, rawPayload := p_finalPayload}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_ipv6) { - v_payload := { decodedPayload := { ipv6Packet := mw_ipv6Packet(?, ?, ?, mw_octetstringPayload(p_finalPayload))}, rawPayload := ?}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpA) { - v_payload := { decodedPayload := { btpPacket := mw_btpA(?, ?, { decodedPayload := *, rawPayload := p_finalPayload } )}, rawPayload := ?}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpB) { - v_payload := { decodedPayload := { btpPacket := mw_btpB(?, ?, { decodedPayload := *, rawPayload := p_finalPayload })}, rawPayload := ?}; - return v_payload; - } - - return v_payload; - } - - } // end geoTemplateFunctions - } // end ItsGeoNetworking_Templates \ No newline at end of file diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index 56b6f96..cdf6313 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -195,10 +195,12 @@ module LibItsGeoNetworking_TypesAndValues { encode (securedMsg) "LibItsSecurity" } + type octetstring GnRawPayload; + type record GnNonSecuredPacket { CommonHeader commonHeader, ExtendedHeader extendedHeader optional, - Payload payload optional + GnRawPayload payload optional } } // end group geoNetworkingPdus @@ -893,37 +895,6 @@ module LibItsGeoNetworking_TypesAndValues { } // end group geoNetworkingHeader - group geoNetworkingPayload { - - type octetstring GnRawPayload; - - /** - * @desc The payload of the GN packet - * @member decodedPayload The decoded payload - * @member rawPayload Raw payload as it is received - */ - type record Payload { - DecodedPayload decodedPayload optional, - GnRawPayload rawPayload - } with { - variant "FIELDORDER(msb)" - } - - /** - * @desc The decoded payload of the GN packet - * @member ipv6Packet The IPv6 packet - * @member btpPacket BTP packet - */ - type union DecodedPayload { - Ipv6Packet ipv6Packet, - BtpPacket btpPacket - } with { - encode (ipv6Packet) "LibItsIpv6OverGeoNetworking"; - encode (btpPacket) "LibItsBtp" - } - - } //end group geoNetworkingPayload - group geoNwPicsTypes { /** @@ -993,13 +964,13 @@ module LibItsGeoNetworking_TypesAndValues { * @member gnAddress Destination of the packet * @member lifetime Lifetime of the packet * @member trafficClass Traffic class of the packet - * @member payload Payload of the packet + * @member payload GnRawPayload of the packet */ type record GenerateGeoUnicastMessage { GN_Address gnAddress, UInt16 lifetime, TrafficClass trafficClass, - Payload payload + GnRawPayload payload } with { encode (payload) "UpperTester" } @@ -1010,7 +981,7 @@ module LibItsGeoNetworking_TypesAndValues { * @member lifetime Lifetime of the packet * @member trafficClass Traffic class of the packet * @member area Destination GeoArea - * @member payload Payload of the packet + * @member payload GnRawPayload of the packet */ type record GenerateGeoBroadcastMessage { GeoShape shape, @@ -1018,7 +989,7 @@ module LibItsGeoNetworking_TypesAndValues { TrafficClass trafficClass, UInt24 reserved, Area area, - Payload payload + GnRawPayload payload } with { encode (payload) "UpperTester" } @@ -1031,11 +1002,11 @@ module LibItsGeoNetworking_TypesAndValues { /** * @desc UT primitive for IUT to send a SHB packet * @member trafficClass Traffic class of the packet - * @member payload Payload of the packet + * @member payload GnRawPayload of the packet */ type record GenerateSHBMessage { TrafficClass trafficClass, - Payload payload + GnRawPayload payload } with { encode (payload) "UpperTester" } @@ -1045,13 +1016,13 @@ module LibItsGeoNetworking_TypesAndValues { * @member nbHops Number of Hops * @member lifetime Lifetime of the packet * @member trafficClass Traffic class of the packet - * @member payload Payload of the packet + * @member payload GnRawPayload of the packet */ type record GenerateTSBMessage { UInt8 nbHops, UInt16 lifetime, TrafficClass trafficClass, - Payload payload + GnRawPayload payload } with { encode (payload) "UpperTester" } diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_EncdecDeclarations.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_EncdecDeclarations.ttcn new file mode 100644 index 0000000..0ccedc0 --- /dev/null +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_EncdecDeclarations.ttcn @@ -0,0 +1,11 @@ +module LibItsIpv6OverGeoNetworking_EncdecDeclarations { + + import from LibItsIpv6OverGeoNetworking_TypesAndValues all; + + external function fx_enc_Ipv6Packet (Ipv6Packet p) return bitstring + with {extension "prototype(convert) encode(LibItsIpv6OverGeoNetworking)"} + + external function fx_dec_Ipv6Packet (inout bitstring b, out Ipv6Packet p) return integer + with {extension "prototype(sliding) decode(LibItsIpv6OverGeoNetworking)"} + +} // End of module LibItsIpv6OverGeoNetworking_EncdecDeclarations diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn index 3039b86..f8c1cc3 100644 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn @@ -99,14 +99,7 @@ module LibItsIpv6OverGeoNetworking_Functions { ?, ?, e_ipv6, - mw_ipv6Payload( - mw_ipv6Packet( - ?, - ?, - ?, - mw_octetstringPayload(?) - ) - ) + ? ) ) ) @@ -121,9 +114,7 @@ module LibItsIpv6OverGeoNetworking_Functions { ?, ?, e_ipv6, - mw_ipv6Payload( - ? - ) + ? ) ) ) @@ -307,19 +298,21 @@ module LibItsIpv6OverGeoNetworking_Functions { ) ) ), - m_ipv6Payload( - m_ipv6Packet( - v_nodeAddresses.lla, - c_allNodesMca, - c_icmpHdr, - m_rtAdvWithOptions( - m_rtAdvOpt_prefixOpt( - valueof(p_gvl.prefixLength), - c_lFlag1, - c_aFlag1, - p_validLifetime, - c_preferredLifetime30s, - valueof(p_gvl.prefix) + bit2oct( + encvalue( + m_ipv6Packet( + v_nodeAddresses.lla, + c_allNodesMca, + c_icmpHdr, + m_rtAdvWithOptions( + m_rtAdvOpt_prefixOpt( + valueof(p_gvl.prefixLength), + c_lFlag1, + c_aFlag1, + p_validLifetime, + c_preferredLifetime30s, + valueof(p_gvl.prefix) + ) ) ) ) @@ -709,7 +702,7 @@ module LibItsIpv6OverGeoNetworking_Functions { in template (value) Ipv6Address p_sourceAddress, in template (value) Ipv6Address p_destinationAddress, in template (value) integer p_payloadLength, - in template (value) octetstring p_payload, + in template (value) GnRawPayload p_payload, in template (value) UInt8 p_nextHdr ) return Oct2 { var Oct2 v_checksum := 'FFFF'O; @@ -761,7 +754,7 @@ module LibItsIpv6OverGeoNetworking_Functions { in template (value) Ipv6Address p_sourceAddress, in template (value) Ipv6Address p_destinationAddress, in template (value) integer p_payloadLength, - in template (value) octetstring p_payload, + in template (value) GnRawPayload p_payload, in template (value) UInt8 p_nextHdr ) return Oct2; diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn index f418957..c70e6a2 100644 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn @@ -65,23 +65,23 @@ module LibItsIpv6OverGeoNetworking_Templates { group ipv6 { - /** - * @desc Send template for GN6 payload of type IPv6 - * @param p_ipv6Packet IPv6 packet to be used as GN6 payload - */ - template (value) Payload m_ipv6Payload(in template (value) Ipv6Packet p_ipv6Packet) := { - decodedPayload := {ipv6Packet := p_ipv6Packet}, - rawPayload := ''O - } - - /** - * @desc Receive template for GN6 payload of type IPv6 - * @param p_ipv6Packet Expected IPv6 packet to be received as GN6 payload - */ - template (present) Payload mw_ipv6Payload(in template (present) Ipv6Packet p_ipv6Packet) := { - decodedPayload := {ipv6Packet := p_ipv6Packet}, - rawPayload := ? - } +// /** +// * @desc Send template for GN6 payload of type IPv6 +// * @param p_ipv6Packet IPv6 packet to be used as GN6 payload +// */ +// template (value) Payload m_ipv6Payload(in template (value) Ipv6Packet p_ipv6Packet) := { +// decodedPayload := {ipv6Packet := p_ipv6Packet}, +// rawPayload := ''O +// } +// +// /** +// * @desc Receive template for GN6 payload of type IPv6 +// * @param p_ipv6Packet Expected IPv6 packet to be received as GN6 payload +// */ +// template (present) Payload mw_ipv6Payload(in template (present) Ipv6Packet p_ipv6Packet) := { +// decodedPayload := {ipv6Packet := p_ipv6Packet}, +// rawPayload := ? +// } /** * @desc Send template for IPv6 packet diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn index 299f523..81561cd 100644 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn @@ -99,7 +99,9 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { Ipv6Header ipv6Hdr, ExtensionHeaderList extHdrList optional, Ipv6Payload ipv6Payload optional - } + } with { + variant "FIELDORDER(msb)" + } /** * @desc Derived from RFC 2460 Section 3 @@ -308,5 +310,6 @@ module LibItsIpv6OverGeoNetworking_TypesAndValues { } with { + variant "" encode "LibItsIpv6OverGeoNetworking" } \ No newline at end of file -- GitLab From dcffd4b8f2308c5a4d073a6ca18fa7f0ecc5d54b Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 4 Sep 2017 08:20:28 +0000 Subject: [PATCH 022/320] Start testing DENM --- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index b6c4216..87ef8fc 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -6,16 +6,16 @@ module LibItsDenm_EncdecDeclarations { external function fx_enc_DenmReq (DenmReq p) return bitstring with {extension "prototype(convert) encode(LibIts_Interface)"} + external function fx_dec_DenmReq (inout bitstring b, out DenmReq p) return integer + with {extension "prototype(sliding) decode(LibIts_Interface)"} + external function fx_dec_DenmInd (inout bitstring b, out DenmInd p) return integer with {extension "prototype(sliding) decode(LibIts_Interface)"} external function fx_enc_DENM (DENM p) return bitstring - with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} -// with {extension "prototype(convert) encode(PER)"} + with {extension "prototype(convert) encode(PER)"} external function fx_dec_DENM (inout bitstring b, out DENM p) return integer - with {extension "prototype(sliding) decode(BER:BER_ENCODE_CER)"} -// with {extension "prototype(sliding) encode(PER)"} - + with {extension "prototype(sliding) decode(PER)"} } // End of module LibItsDenm_EncdecDeclarations -- GitLab From 3c7286f492ce202789f3d2fc483e0840f20fd9dc Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 12 Sep 2017 07:48:50 +0000 Subject: [PATCH 023/320] Start UpperTester changes --- ...ibItsGeoNetworking_EncdecDeclarations.ttcn | 3 + .../LibItsGeoNetworking_Functions.ttcn | 6 +- .../LibItsGeoNetworking_Templates.ttcn | 4 +- .../LibItsGeoNetworking_TestSystem.ttcn | 4 +- .../LibItsGeoNetworking_TypesAndValues.ttcn | 60 ++++++++++++++----- 5 files changed, 56 insertions(+), 21 deletions(-) diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn index f80507c..febc184 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn @@ -35,4 +35,7 @@ module LibItsGeoNetworking_EncdecDeclarations { with {extension "prototype(sliding) decode(LibItsSecurity)"} */ + external function fx_enc_UtGnInitialize (UtGnInitialize p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + } // End of module LibItsGeoNetworking_EncdecDeclarations diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 24e2eaf..363fc3d 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -46,7 +46,7 @@ module LibItsGeoNetworking_Functions { * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsBaseGeoNetworking { + function f_utInitializeIut(template (value) UtGnInitialize p_init) runs on ItsBaseGeoNetworking { //deactivate gnPort default alts vc_gnDefaultActive := false; @@ -54,7 +54,7 @@ module LibItsGeoNetworking_Functions { utPort.send(p_init); tc_wait.start; alt { - [] utPort.receive(UtInitializeResult:true) { + [] utPort.receive(UtGnResults: { utGnInitializeResult := true }) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } @@ -2885,4 +2885,4 @@ module LibItsGeoNetworking_Functions { } -} // end LibItsGeoNetworking_Functions \ No newline at end of file +} // end LibItsGeoNetworking_Functions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index 2bf3b3d..07f48b6 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -97,7 +97,7 @@ module LibItsGeoNetworking_Templates { /** * @desc Initializes the GN IUT. */ - template (value) UtInitialize m_gnInitialize := { + template (value) UtGnInitialize m_gnInitialize := { hashedId8 := '0000000000000000'O } @@ -2283,4 +2283,4 @@ module LibItsGeoNetworking_Templates { } // end geoMiscTemplates -} // end ItsGeoNetworking_Templates \ No newline at end of file +} // end ItsGeoNetworking_Templates diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index 919713c..ca8c476 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -50,11 +50,11 @@ module LibItsGeoNetworking_TestSystem { */ type port UpperTesterPort message { out - UtInitialize, UtChangePosition, UtAutoInteropTrigger, UtGnTrigger; + UtGnInitialize, UtChangePosition, UtAutoInteropTrigger, UtGnTrigger; in //FIXME RGY As discussed, boolean results are replaced by a top-level union of results // UtInitializeResult, UtChangePositionResult, UtGnTriggerResult, UtGnEventInd; - UtCommonResults, UtGnTriggerResult, UtGnEventInd; + UtGnResults, /*UtCommonResults,*/ UtGnTriggerResult, UtGnEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index cdf6313..01cfd2c 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -929,16 +929,41 @@ module LibItsGeoNetworking_TypesAndValues { 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 UtGnInitialize { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester results message of the GeoNetworking + * @member utGnInitialize - + * @member utGnTriggerResult - + * @member utAutoInteropTriggerResult - + + */ + type union UtGnResults { + boolean utGnInitializeResult, + boolean utGnTriggerResult, + boolean utAutoInteropTriggerResult + } with { + variant "" + } // End of type UtGnResults + /** * @desc AutoInterop UpperTester trigger * @member utRadioOnOff Set to true to power on the radio (on-link mode), false to power off the radio (off-link). */ type union UtAutoInteropTrigger { boolean utRadioOnOff + } with { + variant "" } // End of type UtAutoInteropTrigger - type boolean UtAutoInteropTriggerResult; - /** * @desc UT primitives for GeoNetworking * @member geoUnicast - @@ -955,6 +980,8 @@ module LibItsGeoNetworking_TypesAndValues { GenerateGeoAnycastMessage geoAnycast, GenerateSHBMessage shb, GenerateTSBMessage tsb + } with { + variant "" } type boolean UtGnTriggerResult; @@ -971,8 +998,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt16 lifetime, TrafficClass trafficClass, GnRawPayload payload - } with { - encode (payload) "UpperTester" + } with { + variant "FIELDORDER(msb)" } /** @@ -990,8 +1017,8 @@ module LibItsGeoNetworking_TypesAndValues { UInt24 reserved, Area area, GnRawPayload payload - } with { - encode (payload) "UpperTester" + } with { + variant "FIELDORDER(msb)" } /** @@ -1008,7 +1035,7 @@ module LibItsGeoNetworking_TypesAndValues { TrafficClass trafficClass, GnRawPayload payload } with { - encode (payload) "UpperTester" + variant "FIELDORDER(msb)" } /** @@ -1024,7 +1051,7 @@ module LibItsGeoNetworking_TypesAndValues { TrafficClass trafficClass, GnRawPayload payload } with { - encode (payload) "UpperTester" + variant "FIELDORDER(msb)" } /** @@ -1033,6 +1060,8 @@ module LibItsGeoNetworking_TypesAndValues { type record UtGnEventInd { // GeoNetworkingPdu gnPdu GnRawPayload rawPayload + } with { + variant "FIELDORDER(msb)" } /** @@ -1042,9 +1071,8 @@ module LibItsGeoNetworking_TypesAndValues { } // end utPrimitives with { -//FIXME RGY temporarily changed to RAW, until encoding functions are changed to UpperTester -// encode "UpperTester" - encode "RAW"; variant "" + encode "UpperTester"; + variant "" } group acPrimitives { @@ -1067,6 +1095,8 @@ module LibItsGeoNetworking_TypesAndValues { AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour, AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour, AcGetLongPosVector getLongPosVector + } with { + variant "" } /** @@ -1078,8 +1108,9 @@ module LibItsGeoNetworking_TypesAndValues { AcGnResponseFailure failure } with { + variant "" encode(getLongPosVector) "LibItsGeoNetworking" - }; + } type record AcGnResponseFailure { boolean failure @@ -1094,7 +1125,7 @@ module LibItsGeoNetworking_TypesAndValues { } with { encode(beaconPacket) "LibItsGeoNetworking" - }; + } /** * @desc Primitive for TA to stop sending beacons for the test component @@ -1151,7 +1182,8 @@ module LibItsGeoNetworking_TypesAndValues { } // end acPrimitives with { - encode "AdapterControl" + variant "" + encode "AdapterControl" } } with { -- GitLab From 858d5f2d3ba56e486eae0d90a6cc211e983eaeaa Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 14 Sep 2017 15:13:49 +0000 Subject: [PATCH 024/320] Start UpperTester changes --- ttcn/BTP/LibItsBtp_Functions.ttcn | 10 +- ttcn/BTP/LibItsBtp_Templates.ttcn | 4 +- ttcn/BTP/LibItsBtp_TestSystem.ttcn | 6 +- ttcn/BTP/LibItsBtp_TypesAndValues.ttcn | 256 +- ttcn/CAM/LibItsCam_Functions.ttcn | 28 +- ttcn/CAM/LibItsCam_Templates.ttcn | 2 +- ttcn/CAM/LibItsCam_TestSystem.ttcn | 6 +- ttcn/CAM/LibItsCam_TypesAndValues.ttcn | 249 +- ttcn/Common/LibItsCommon_TypesAndValues.ttcn | 91 - ttcn/DENM/LibItsDenm_Functions.ttcn | 42 +- ttcn/DENM/LibItsDenm_Templates.ttcn | 6 +- ttcn/DENM/LibItsDenm_TestSystem.ttcn | 8 +- ttcn/DENM/LibItsDenm_TypesAndValues.ttcn | 305 +- ...ibItsGeoNetworking_EncdecDeclarations.ttcn | 8 +- .../LibItsGeoNetworking_Functions.ttcn | 5262 ++++++++--------- .../LibItsGeoNetworking_Templates.ttcn | 2 +- .../LibItsGeoNetworking_TestSystem.ttcn | 6 +- .../LibItsGeoNetworking_TypesAndValues.ttcn | 2110 +++---- ttcn/Security/LibItsSecurity_Templates.ttcn | 7 +- 19 files changed, 4215 insertions(+), 4193 deletions(-) diff --git a/ttcn/BTP/LibItsBtp_Functions.ttcn b/ttcn/BTP/LibItsBtp_Functions.ttcn index 86f2218..4779572 100644 --- a/ttcn/BTP/LibItsBtp_Functions.ttcn +++ b/ttcn/BTP/LibItsBtp_Functions.ttcn @@ -33,7 +33,7 @@ * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsBtp { + function f_utInitializeIut(template (value) UtBtpInitialize p_init) runs on ItsBtp { //deactivate btpPort default alts vc_btpDefaultActive := false; @@ -41,9 +41,7 @@ utPort.send(p_init); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtInitializeResult:true) { - [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { + [] utPort.receive(UtBtpResults: { utBtpInitializeResult := true}) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } @@ -74,7 +72,7 @@ utPort.send(p_event); alt { - [] utPort.receive(UtBtpTriggerResult:true) { + [] utPort.receive(UtBtpResults: { utBtpTriggerResult := true }) { tc_wait.stop; } [] utPort.receive { @@ -239,4 +237,4 @@ } } // end getFunctions -} // end LibItsBtp_Functions \ No newline at end of file +} // end LibItsBtp_Functions diff --git a/ttcn/BTP/LibItsBtp_Templates.ttcn b/ttcn/BTP/LibItsBtp_Templates.ttcn index a64fa43..255d771 100644 --- a/ttcn/BTP/LibItsBtp_Templates.ttcn +++ b/ttcn/BTP/LibItsBtp_Templates.ttcn @@ -44,7 +44,7 @@ module LibItsBtp_Templates { /** * @desc Initializes the BTP IUT. */ - template (value) UtInitialize m_btpInitialize := { + template (value) UtBtpInitialize m_btpInitialize := { hashedId8 := '0000000000000000'O } @@ -201,4 +201,4 @@ module LibItsBtp_Templates { } // end btpPduTemplates -} // end LibItsBtp_Templates \ No newline at end of file +} // end LibItsBtp_Templates diff --git a/ttcn/BTP/LibItsBtp_TestSystem.ttcn b/ttcn/BTP/LibItsBtp_TestSystem.ttcn index cc4b320..d383051 100644 --- a/ttcn/BTP/LibItsBtp_TestSystem.ttcn +++ b/ttcn/BTP/LibItsBtp_TestSystem.ttcn @@ -27,11 +27,9 @@ module LibItsBtp_TestSystem { */ type port UpperTesterPort message { out - UtInitialize, UtBtpTrigger; + UtBtpInitialize, UtBtpTrigger; in -//FIXME RGY!!! As discussed, list of booleans is changed by a top-level union type -// UtInitializeResult, UtBtpTriggerResult, UtBtpEventInd; - UtCommonResults, UtBtpTriggerResult, UtBtpEventInd; + UtBtpResults, UtBtpEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn index 309236d..088eed7 100644 --- a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn +++ b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn @@ -11,147 +11,169 @@ */ module LibItsBtp_TypesAndValues { - // LibCommon - import from LibCommon_BasicTypesAndValues all; + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; - type octetstring BtpRawPayload; + type octetstring BtpRawPayload; - group btpPdus { + group btpPdus { - /** - * @desc BTP Packet - * @see ETSI TS 102 636-5-1 chapter 6 - * @member header - * @member payload - */ - type record BtpPacket { - BtpHeader header, - BtpRawPayload payload optional - } - with { - variant "FIELDORDER(msb)" - encode "LibIts_Interface" - } + /** + * @desc BTP Packet + * @see ETSI TS 102 636-5-1 chapter 6 + * @member header + * @member payload + */ + type record BtpPacket { + BtpHeader header, + BtpRawPayload payload optional + } + with { + variant "FIELDORDER(msb)" + encode "LibIts_Interface" + } - } // end btpPdus + } // end btpPdus - group btpHeaders { + group btpHeaders { - /** - * @desc BTP Header - * @see ETSI TS 102 636-5-1 chapter 7.1 - * @member btpAHeader - * @member btpBHeader - */ - type union BtpHeader { - BtpAHeader btpAHeader, - BtpBHeader btpBHeader - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc BTP Header + * @see ETSI TS 102 636-5-1 chapter 7.1 + * @member btpAHeader + * @member btpBHeader + */ + type union BtpHeader { + BtpAHeader btpAHeader, + BtpBHeader btpBHeader + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc BTP-A Header - * @see ETSI TS 102 636-5-1 chapter 7.2 - * @member destinationPort - * @member sourcePort - */ - type record BtpAHeader { - BtpPortId destinationPort, - BtpPortId sourcePort - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc BTP-A Header + * @see ETSI TS 102 636-5-1 chapter 7.2 + * @member destinationPort + * @member sourcePort + */ + type record BtpAHeader { + BtpPortId destinationPort, + BtpPortId sourcePort + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc BTP-B Header - * @see ETSI TS 102 636-5-1 chapter 7.3 - * @member destinationPort - * @member destinationPortInfo - */ - type record BtpBHeader { - BtpPortId destinationPort, - BtpPortInfo destinationPortInfo - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc BTP-B Header + * @see ETSI TS 102 636-5-1 chapter 7.3 + * @member destinationPort + * @member destinationPortInfo + */ + type record BtpBHeader { + BtpPortId destinationPort, + BtpPortInfo destinationPortInfo + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc BTP Port ID - * @see ETSI TS 102 636-5-1 chapter 7.3.2 - */ - type UInt16 BtpPortId; + /** + * @desc BTP Port ID + * @see ETSI TS 102 636-5-1 chapter 7.3.2 + */ + type UInt16 BtpPortId; - /** - * @desc BTP-B Port info - * @see ETSI TS 102 636-5-1 chapter 7.3.2 - */ - type UInt16 BtpPortInfo; + /** + * @desc BTP-B Port info + * @see ETSI TS 102 636-5-1 chapter 7.3.2 + */ + type UInt16 BtpPortInfo; - } // end btpHeaders + } // end btpHeaders - group utPrimitives { + group utPrimitives { - group utCommonPrimitives { + group utCommonPrimitives { - /** - * @desc UT primitives for BTP - * @member btpA - - * @member btpB - - */ - type union UtBtpTrigger { - GenerateBtpA btpA, - GenerateBtpB btpB - } - -//FIXME RGY As discussed, boolean results are replaced by a union of the results -// type boolean UtBtpTriggerResult; - type union UtBtpResults { - boolean utBtpTriggerResult - } - type UtBtpResults.utBtpTriggerResult UtBtpTriggerResult; + /** + * @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 UtBtpInitialize { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester results message of the Btp IUT + * @member utBtpInitialize - + * @member utBtpTriggerResult - + */ + type union UtBtpResults { + boolean utBtpInitializeResult, + boolean utBtpTriggerResult + } with { + variant "" + } - /** - * @desc Upper Tester message to request triggering of an BTPA message at IUT - */ - type record GenerateBtpA { - BtpAHeader btpAHeader - } + /** + * @desc UT primitives for BTP + * @member btpA - + * @member btpB - + */ + type union UtBtpTrigger { + GenerateBtpA btpA, + GenerateBtpB btpB + } with { + variant "" + } + + /** + * @desc Upper Tester message to request triggering of an BTPA message at IUT + */ + type record GenerateBtpA { + BtpAHeader btpAHeader + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Upper Tester message to request triggering of an BTPB message at IUT - */ - type record GenerateBtpB { - BtpBHeader btpBHeader - } + /** + * @desc Upper Tester message to request triggering of an BTPB message at IUT + */ + type record GenerateBtpB { + BtpBHeader btpBHeader + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Upper Tester message to check event/status on BTP IUT - */ - type record UtBtpEventInd { - BtpRawPayload rawPayload - } + /** + * @desc Upper Tester message to check event/status on BTP IUT + */ + type record UtBtpEventInd { + BtpRawPayload rawPayload + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc List of Upper Tester messages to check event/status on CAM IUT - */ - type record of UtBtpEventInd UtBtpEventIndList; - } -// with { -// encode "LibItsCommon" -// } + /** + * @desc List of Upper Tester messages to check event/status on CAM IUT + */ + type record of UtBtpEventInd UtBtpEventIndList; + } - } // end utPrimitives - with { - encode "UpperTester" - } + } // end utPrimitives + with { + variant "" + encode "UpperTester" + } } with { - variant "" - encode "LibItsGeoNetworking" + variant "" + encode "LibItsGeoNetworking" } diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn index aadbf34..2a6e5b8 100644 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ b/ttcn/CAM/LibItsCam_Functions.ttcn @@ -41,7 +41,7 @@ module LibItsCam_Functions { * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsCam { + function f_utInitializeIut(template (value) UtCamInitialize p_init) runs on ItsCam { //deactivate camPort default alts vc_camDefaultActive := false; @@ -49,9 +49,7 @@ module LibItsCam_Functions { utPort.send(p_init); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtInitializeResult:true) { - [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { + [] utPort.receive(UtCamResults: { utCamInitializeResult := true }) { tc_wait.stop; log("*** f_utInitializeIut: INFO: IUT initialized ***"); } @@ -83,9 +81,7 @@ module LibItsCam_Functions { utPort.send(p_event); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtCamTriggerResult:true) { - [] utPort.receive(UpperTesterCamResults:{utCamTriggerResult:=true}) { + [] utPort.receive(UtCamResults: { utCamTriggerResult := true }) { tc_wait.stop; } [] utPort.receive { @@ -104,20 +100,22 @@ module LibItsCam_Functions { * @desc Changes the position of the IUT * @param p_position */ - function f_utChangePosition(template (value) UtChangePosition p_position) runs on ItsCam { + function f_utChangePosition(template (value) UtCamChangePosition p_position) runs on ItsCam { //deactivate camPort default alts vc_camDefaultActive := false; utPort.send(p_position); alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtChangePositionResult:?) { - [] utPort.receive(UtCommonResults:{utChangePositionResult:=?}) { + [] utPort.receive(UtCamResults: { utCamChangePositionResult := true}) { tc_wait.stop; } - [] utPort.receive { - tc_wait.stop; + [] utPort.receive(UtCamResults: { utCamChangePositionResult := false }) { + tc_wait.stop; + log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] a_utDefault() { } [] tc_wait.timeout { log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); @@ -391,7 +389,7 @@ module LibItsCam_Functions { function f_prInitialState( in Scenario p_scenario := e_staticPosition, in boolean p_awaitInitialCAM := true, - in template (value) UtInitialize p_camInitialize := m_camInitialize + in template (value) UtCamInitialize p_camInitialize := m_camInitialize ) runs on ItsCam { f_utInitializeIut(p_camInitialize); @@ -503,4 +501,4 @@ module LibItsCam_Functions { } } // end of group camGenerators -} // end LibItsCam_Functions \ No newline at end of file +} // end LibItsCam_Functions diff --git a/ttcn/CAM/LibItsCam_Templates.ttcn b/ttcn/CAM/LibItsCam_Templates.ttcn index 7f8793b..57b6b5a 100644 --- a/ttcn/CAM/LibItsCam_Templates.ttcn +++ b/ttcn/CAM/LibItsCam_Templates.ttcn @@ -119,7 +119,7 @@ module LibItsCam_Templates { /** * @desc Initializes the CAM IUT. */ - template (value) UtInitialize m_camInitialize := { + template (value) UtCamInitialize m_camInitialize := { hashedId8 := '0000000000000000'O } diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn index 0acc5fa..404aeb8 100644 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ b/ttcn/CAM/LibItsCam_TestSystem.ttcn @@ -47,11 +47,9 @@ module LibItsCam_TestSystem { */ type port UpperTesterPort message { out - UtInitialize, UtCamTrigger, UtChangePosition, UtActivatePositionTime, UtDeactivatePositionTime; + UtCamInitialize, UtCamTrigger, UtCamChangePosition, UtActivatePositionTime, UtDeactivatePositionTime; in -//FIXME RGY As discussed, list of boolean result responses is collected into a top-level union -// UtInitializeResult, UtCamTriggerResult, UtChangePositionResult, UtActivatePositionTimeResult, UtDeactivatePositionTimeResult, UtCamEventInd; - UtCommonResults, UpperTesterCamResults, UtCamEventInd; + UtCamResults, UtCamEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn index 35fe1f0..ff19154 100644 --- a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn +++ b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn @@ -11,125 +11,174 @@ */ module LibItsCam_TypesAndValues { - // LibCommon - import from LibCommon_BasicTypesAndValues all; -// import from LibCommon_DataStrings all; + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from CAM_PDU_Descriptions language "ASN.1:1997" all; -// import from DENM_PDU_Descriptions language "ASN.1:1997" all; + // LibIts + import from ITS_Container language "ASN.1:1997" all; + import from CAM_PDU_Descriptions language "ASN.1:1997" all; + // import from DENM_PDU_Descriptions language "ASN.1:1997" all; - group camValues { + group camValues { - const float c_lowFrequencyGenerationTime := 0.5; //500 ms - const float c_specialVehicleGenerationTime := 0.5; //500 ms + const float c_lowFrequencyGenerationTime := 0.5; //500 ms + const float c_specialVehicleGenerationTime := 0.5; //500 ms - const AccelerationControl c_accCtrlIdle := '0000000'B; + const AccelerationControl c_accCtrlIdle := '0000000'B; - const ExteriorLights c_elAllLightsOff := '00000000'B; + const ExteriorLights c_elAllLightsOff := '00000000'B; - const VehicleRole c_vehicleRole_publicTransport := publicTransport; - const VehicleRole c_vehicleRole_specialTransport := specialTransport; - const VehicleRole c_vehicleRole_dangerousGoods := dangerousGoods; - const VehicleRole c_vehicleRole_roadWork := roadWork; - const VehicleRole c_vehicleRole_rescue := rescue; - const VehicleRole c_vehicleRole_emergency := emergency; - const VehicleRole c_vehicleRole_safetyCar := safetyCar; + const VehicleRole c_vehicleRole_publicTransport := publicTransport; + const VehicleRole c_vehicleRole_specialTransport := specialTransport; + const VehicleRole c_vehicleRole_dangerousGoods := dangerousGoods; + const VehicleRole c_vehicleRole_roadWork := roadWork; + const VehicleRole c_vehicleRole_rescue := rescue; + const VehicleRole c_vehicleRole_emergency := emergency; + const VehicleRole c_vehicleRole_safetyCar := safetyCar; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives1 := explosives1; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives2 := explosives2; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives3 := explosives3; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives4 := explosives4; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives5 := explosives5; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives6 := explosives6; - const DangerousGoodsBasic c_dangerousGoodsBasic_flammableGases := flammableGases; - const DangerousGoodsBasic c_dangerousGoodsBasic_nonFlammableGases := nonFlammableGases; - const DangerousGoodsBasic c_dangerousGoodsBasic_toxicGases := toxicGases; - const DangerousGoodsBasic c_dangerousGoodsBasic_flammableLiquids := flammableLiquids; - const DangerousGoodsBasic c_dangerousGoodsBasic_flammableSolids := flammableSolids; - const DangerousGoodsBasic c_dangerousGoodsBasic_substancesLiableToSpontaneousCombustion := substancesLiableToSpontaneousCombustion; - const DangerousGoodsBasic c_dangerousGoodsBasic_substancesEmittingFlammableGasesUponContactWithWater := substancesEmittingFlammableGasesUponContactWithWater; - const DangerousGoodsBasic c_dangerousGoodsBasic_oxidizingSubstances := oxidizingSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_organicPeroxides := organicPeroxides; - const DangerousGoodsBasic c_dangerousGoodsBasic_toxicSubstances := toxicSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_infectiousSubstances := infectiousSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_radioactiveMaterial := radioactiveMaterial; - const DangerousGoodsBasic c_dangerousGoodsBasic_corrosiveSubstances := corrosiveSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_miscellaneousDangerousSubstances := miscellaneousDangerousSubstances; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives1 := explosives1; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives2 := explosives2; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives3 := explosives3; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives4 := explosives4; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives5 := explosives5; + const DangerousGoodsBasic c_dangerousGoodsBasic_explosives6 := explosives6; + const DangerousGoodsBasic c_dangerousGoodsBasic_flammableGases := flammableGases; + const DangerousGoodsBasic c_dangerousGoodsBasic_nonFlammableGases := nonFlammableGases; + const DangerousGoodsBasic c_dangerousGoodsBasic_toxicGases := toxicGases; + const DangerousGoodsBasic c_dangerousGoodsBasic_flammableLiquids := flammableLiquids; + const DangerousGoodsBasic c_dangerousGoodsBasic_flammableSolids := flammableSolids; + const DangerousGoodsBasic c_dangerousGoodsBasic_substancesLiableToSpontaneousCombustion := substancesLiableToSpontaneousCombustion; + const DangerousGoodsBasic c_dangerousGoodsBasic_substancesEmittingFlammableGasesUponContactWithWater := substancesEmittingFlammableGasesUponContactWithWater; + const DangerousGoodsBasic c_dangerousGoodsBasic_oxidizingSubstances := oxidizingSubstances; + const DangerousGoodsBasic c_dangerousGoodsBasic_organicPeroxides := organicPeroxides; + const DangerousGoodsBasic c_dangerousGoodsBasic_toxicSubstances := toxicSubstances; + const DangerousGoodsBasic c_dangerousGoodsBasic_infectiousSubstances := infectiousSubstances; + const DangerousGoodsBasic c_dangerousGoodsBasic_radioactiveMaterial := radioactiveMaterial; + const DangerousGoodsBasic c_dangerousGoodsBasic_corrosiveSubstances := corrosiveSubstances; + const DangerousGoodsBasic c_dangerousGoodsBasic_miscellaneousDangerousSubstances := miscellaneousDangerousSubstances; - } // end group camValues + } // end group camValues - group certificates { + group certificates { - const charstring PX_CERT_IUT_CAM_02 := "CERT_IUT_CAM_BO_02_AT"; - const charstring PX_CERT_IUT_CAM_03 := "CERT_IUT_CAM_BO_03_AT"; + const charstring PX_CERT_IUT_CAM_02 := "CERT_IUT_CAM_BO_02_AT"; + const charstring PX_CERT_IUT_CAM_03 := "CERT_IUT_CAM_BO_03_AT"; - } + } - group utPrimitives { + 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 UtCamInitialize { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester results message of the CAM IUT + * @member utCamInitialize - + * @member utCamTriggerResult - + * @member utCamChangePositionResult - + * @member utActivatePositionTimeResult - + * @member utDeactivatePositionTimeResult - + */ + type union UtCamResults { + boolean utCamInitializeResult, + boolean utCamTriggerResult, + boolean utCamChangePositionResult, + boolean utActivatePositionTimeResult, + boolean utDeactivatePositionTimeResult + } with { + variant "" + } // End of type UtCamResults + /** - * @desc - * @member changeCurvature Changes the curvature. - * @member changeSpeed Changes the speed in cm/s. - * @member setAccelerationControlStatus Sets the acceleration control status. - * @member setExteriorLightsStatus Sets the exterior lights status. - * @member changeHeading Changes the heading. - * @member setDriveDirection Sets the drive direction. - * @member setStationType - * @member setVehicleRole - * @member setEmbarkationStatus - * @member setPtActivation - * @member setDangerousGoods - * @member setLightBarSireneStatus - * @member changeYawRate Changes the yaw rate in offsets of 0.01 degrees per second. + * @desc Upper Tester message to change the position of IUT. Values a relatives */ - type union UtCamTrigger { - CurvatureValue changeCurvature, - Int16 changeSpeed, - AccelerationControl setAccelerationControlStatus, - ExteriorLights setExteriorLightsStatus, - HeadingValue changeHeading, - DriveDirection setDriveDirection, - YawRateValue changeYawRate, - StationType setStationType, - VehicleRole setVehicleRole, - EmbarkationStatus setEmbarkationStatus, - PtActivation setPtActivation, - DangerousGoodsBasic setDangerousGoods, - LightBarSirenInUse setLightBarSirene - } - - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ -//FIXME RGY As discussed, simple boolean responses are collected to a union for forward compatibility -// type boolean UtCamTriggerResult; - type union UpperTesterCamResults { - boolean utCamTriggerResult - } - - type UpperTesterCamResults.utCamTriggerResult UtCamTriggerResult; + type record UtCamChangePosition { + Int32 latitude, + Int32 longitude, + Int32 elevation + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Upper Tester message to check event/status on CAM IUT - */ - type record UtCamEventInd { - CAM camMsg - } with { - encode (camMsg) "LibItsCam_asn1" - } + /** + * @desc + * @member changeCurvature Changes the curvature. + * @member changeSpeed Changes the speed in cm/s. + * @member setAccelerationControlStatus Sets the acceleration control status. + * @member setExteriorLightsStatus Sets the exterior lights status. + * @member changeHeading Changes the heading. + * @member setDriveDirection Sets the drive direction. + * @member setStationType + * @member setVehicleRole + * @member setEmbarkationStatus + * @member setPtActivation + * @member setDangerousGoods + * @member setLightBarSireneStatus + * @member changeYawRate Changes the yaw rate in offsets of 0.01 degrees per second. + */ + type union UtCamTrigger { + CurvatureValue changeCurvature, + Int16 changeSpeed, + AccelerationControl setAccelerationControlStatus, + ExteriorLights setExteriorLightsStatus, + HeadingValue changeHeading, + DriveDirection setDriveDirection, + YawRateValue changeYawRate, + StationType setStationType, + VehicleRole setVehicleRole, + EmbarkationStatus setEmbarkationStatus, + PtActivation setPtActivation, + DangerousGoodsBasic setDangerousGoods, + LightBarSirenInUse setLightBarSirene + } with { + variant "" + } - /** - * @desc List of Upper Tester messages to check event/status on CAM IUT - */ - type record of UtCamEventInd UtCamEventIndList; + /** + * @desc Upper Tester message to activate position and/or time + */ + type record UtActivatePositionTime { + // empty on purpose + } with { + variant "FIELDORDER(msb)" + } + /** + * @desc Upper Tester message to deactivate position and/or time + */ + type record UtDeactivatePositionTime { + // empty on purpose } with { - encode "UpperTester" + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to check event/status on CAM IUT + */ + type record UtCamEventInd { + CAM camMsg + } with { + encode (camMsg) "LibItsCam_asn1" + } + + /** + * @desc List of Upper Tester messages to check event/status on CAM IUT + */ + type record of UtCamEventInd UtCamEventIndList; + + } with { + encode "UpperTester" + variant "" } // end utPrimitives } with { - encode "LibItsCam" -} + encode "LibItsCam" + } diff --git a/ttcn/Common/LibItsCommon_TypesAndValues.ttcn b/ttcn/Common/LibItsCommon_TypesAndValues.ttcn index 911ed5f..b50f585 100644 --- a/ttcn/Common/LibItsCommon_TypesAndValues.ttcn +++ b/ttcn/Common/LibItsCommon_TypesAndValues.ttcn @@ -17,98 +17,7 @@ module LibItsCommon_TypesAndValues { // LibIts import from ITS_Container language "ASN.1:1997" 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 UtInitialize { - Oct8 hashedId8 - } - - /** - * @desc Upper Tester result message of the initialization request - */ -//FIXME RGY As discussed, Commom top level type for UT results - type union UtCommonResults { - boolean utInitializeResult, - boolean utChangePositionResult, - boolean utChangePseudonymResult, - boolean utActivatePositionTimeResult, - boolean utDeactivatePositionTimeResult, - boolean utIvimTerminationResult - } - -//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes -// type boolean UtInitializeResult; - type UtCommonResults.utInitializeResult UtInitializeResult; - - /** - * @desc Upper Tester message to change the position of IUT. Values a relatives - */ - type record UtChangePosition { - integer latitude, - integer longitude, - integer elevation - } - - /** - * @desc Upper Tester result message of change position request of IUT - */ -//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes -// type boolean UtChangePositionResult; - type UtCommonResults.utChangePositionResult UtChangePositionResult; - - /** - * @desc Upper Tester message to change the pseudonym of the DENM IUT - */ - type record UtChangePseudonym { - // empty on purpose - } - - /** - * @desc Upper Tester result message of the change pseudonym request - */ -//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes -// type boolean UtChangePseudonymResult; - type UtCommonResults.utChangePseudonymResult UtChangePseudonymResult; - - /** - * @desc Upper Tester message to activate position and/or time - */ - type record UtActivatePositionTime { - // empty on purpose - } - - /** - * @desc Upper Tester result message of the activate position and/or time request - */ -//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes -// type boolean UtActivatePositionTimeResult; - type UtCommonResults.utActivatePositionTimeResult UtActivatePositionTimeResult; - - /** - * @desc Upper Tester message to deactivate position and/or time - */ - type record UtDeactivatePositionTime { - // empty on purpose - } - - /** - * @desc Upper Tester result message of the deactivate position and/or time request - */ -//FIXME RGY As discussed, type is changed to a type derived from UpperTesterResultTypes -// type boolean UtDeactivatePositionTimeResult; - type UtCommonResults.utDeactivatePositionTimeResult UtDeactivatePositionTimeResult; - - } - with { - encode "UpperTester" - } - group acPrimitives { - /** * @desc TA primitives for security support * @member acSetCertificate Primitive used to activate security support diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn index 7f9859b..6278fbc 100644 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ b/ttcn/DENM/LibItsDenm_Functions.ttcn @@ -39,7 +39,7 @@ module LibItsDenm_Functions { * @desc Requests to bring the IUT in an initial state * @param p_init The initialisation to trigger. */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsDenm { + function f_utInitializeIut(template (value) UtDenmInitialize p_init) runs on ItsDenm { //deactivate denmPort default alts vc_denmDefaultActive := false; @@ -47,9 +47,7 @@ module LibItsDenm_Functions { utPort.send(p_init); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtInitializeResult:true) { - [] utPort.receive(UtCommonResults:{utInitializeResult:=true}) { + [] utPort.receive(UtDenmResults: { utDenmInitializeResult := true }) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT initialized ***"); } @@ -79,15 +77,11 @@ module LibItsDenm_Functions { utPort.send(p_change); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtChangePseudonymResult:true) { - [] utPort.receive(UtCommonResults:{utChangePseudonymResult:=true}) { + [] utPort.receive(UtDenmResults: { utChangePseudonymResult := true}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); } -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtChangePseudonymResult:false) { - [] utPort.receive(UtCommonResults:{utChangePseudonymResult:=false}) { + [] utPort.receive(UtDenmResults: { utChangePseudonymResult := false}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); f_selfOrClientSyncAndVerdict("error", e_error); @@ -112,7 +106,7 @@ module LibItsDenm_Functions { */ function f_utTriggerEvent(template (value) UtDenmTrigger p_event) runs on ItsDenm return ActionID { var ActionID v_actionId; - var UtDenmTriggerResult v_result; + var UtDenmResults v_result; //deactivate denmPort default alts vc_denmDefaultActive := false; @@ -120,10 +114,10 @@ module LibItsDenm_Functions { utPort.send(p_event); tc_wait.start; alt { - [] utPort.receive(UtDenmTriggerResult:?) -> value v_result { + [] utPort.receive(UtDenmResults: { utDenmTriggerResult := ? }) -> value v_result { tc_wait.stop; - v_actionId := v_result.actionId; - if ( not v_result.result ) { + v_actionId := v_result.utDenmTriggerResult.actionId; + if ( not v_result.utDenmTriggerResult.result ) { f_selfOrClientSyncAndVerdict("DENM Trigger failed", e_error); } } @@ -148,7 +142,7 @@ module LibItsDenm_Functions { */ function f_utUpdateEvent(template (value) UtDenmUpdate p_event) runs on ItsDenm return ActionID { var ActionID v_actionId; - var UtDenmUpdateResult v_result; + var UtDenmResults v_result; //deactivate denmPort default alts vc_denmDefaultActive := false; @@ -156,9 +150,9 @@ module LibItsDenm_Functions { utPort.send(p_event); tc_wait.start; alt { - [] utPort.receive(UtDenmUpdateResult:?) -> value v_result { + [] utPort.receive(UtDenmResults: { utDenmUpdateResult := ? }) -> value v_result { tc_wait.stop; - v_actionId := v_result.actionId; + v_actionId := v_result.utDenmUpdateResult.actionId; } [] a_utDefault() { //empty on purpose @@ -187,9 +181,7 @@ module LibItsDenm_Functions { utPort.send(p_event); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtDenmTerminationResult:?) { - [] utPort.receive(UtDENMResults:{utDenmTerminationResult:=?}) { + [] utPort.receive(UtDenmResults: { utDenmTerminationResult := ?}) { tc_wait.stop; } [] tc_wait.timeout { @@ -212,7 +204,7 @@ module LibItsDenm_Functions { * @param p_longitude * @param p_elevation */ - function f_utChangePosition(template (value) UtChangePosition p_position) runs on ItsDenm { + function f_utChangePosition(template (value) UtDenmChangePosition p_position) runs on ItsDenm { //deactivate denmPort default alts vc_denmDefaultActive := false; @@ -220,9 +212,7 @@ module LibItsDenm_Functions { utPort.send(p_position); tc_wait.start; alt { -//FIXME RGY As discussed, port in type is changed to a top-level union type -// [] utPort.receive(UtChangePositionResult:?) { - [] utPort.receive(UtCommonResults:{utChangePositionResult:=?}) { + [] utPort.receive(UtDenmResults: { utDenmChangePositionResult := ? }) { tc_wait.stop; } [] tc_wait.timeout { @@ -490,7 +480,7 @@ module LibItsDenm_Functions { */ function f_prInitialState( in Scenario p_scenario := e_staticPosition, - in template (value) UtInitialize p_denmInitialize := m_denmInitialize + in template (value) UtDenmInitialize p_denmInitialize := m_denmInitialize ) runs on ItsDenm return FncRetCode { var FncRetCode v_ret := e_success; @@ -605,4 +595,4 @@ module LibItsDenm_Functions { } // end group miscellaneousFunctions -} // end LibItsDenm_Functions \ No newline at end of file +} // end LibItsDenm_Functions diff --git a/ttcn/DENM/LibItsDenm_Templates.ttcn b/ttcn/DENM/LibItsDenm_Templates.ttcn index 70e1d7f..572f253 100644 --- a/ttcn/DENM/LibItsDenm_Templates.ttcn +++ b/ttcn/DENM/LibItsDenm_Templates.ttcn @@ -139,7 +139,7 @@ module LibItsDenm_Templates { /** * @desc Send template for Upper Tester event initialization */ - template (value) UtInitialize m_denmInitialize := { + template (value) UtDenmInitialize m_denmInitialize := { hashedId8 := '0000000000000000'O } @@ -231,7 +231,7 @@ module LibItsDenm_Templates { * @param p_longitude The new longitude * @param p_elevation The new elevation (Default: 0) */ - template (value) UtChangePosition m_utChangePosition( + template (value) UtDenmChangePosition m_utChangePosition( template (value) integer p_latitude, template (value) integer p_longitude, template (value) integer p_elevation := 0 @@ -829,4 +829,4 @@ module LibItsDenm_Templates { template (present) bitstring mw_sspNoRoadworks := '*0??'B; } // end sspTemplates -} // end LibItsDenmTemplates \ No newline at end of file +} // end LibItsDenmTemplates diff --git a/ttcn/DENM/LibItsDenm_TestSystem.ttcn b/ttcn/DENM/LibItsDenm_TestSystem.ttcn index e6be924..13bbf90 100644 --- a/ttcn/DENM/LibItsDenm_TestSystem.ttcn +++ b/ttcn/DENM/LibItsDenm_TestSystem.ttcn @@ -47,13 +47,9 @@ module LibItsDenm_TestSystem { */ type port UpperTesterPort message { out - UtInitialize, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtChangePosition, UtChangePseudonym; + UtDenmInitialize, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtDenmChangePosition, UtChangePseudonym; in -//FIXME RGY! As discussed, list of booleans is changed by a top-level union type -// UtInitializeResult, UtDenmTriggerResult, UtDenmUpdateResult, UtDenmTerminationResult, -// UtChangePositionResult, UtChangePseudonymResult, UtDenmEventInd; - UtCommonResults, UtDENMResults, UtDenmTriggerResult, - UtDenmUpdateResult, UtDenmEventInd; + UtDenmResults, UtDenmEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn index 9d3824f..433c974 100644 --- a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn +++ b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn @@ -7,154 +7,201 @@ */ module LibItsDenm_TypesAndValues { - //LibCommon -// import from LibCommon_BasicTypesAndValues all; + //LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; - // LibIts - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - import from ITS_Container language "ASN.1:1997" all; + // LibIts + import from DENM_PDU_Descriptions language "ASN.1:1997" all; + import from ITS_Container language "ASN.1:1997" all; - group actionTypes { + 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) - } + /** + * @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 group actionTypes + } // end group actionTypes - group otherTypes { + group otherTypes { - /** - * @desc List of SituationContainers used in behaviours - */ - type record of SituationContainer SituationContainerList; + /** + * @desc List of SituationContainers used in behaviours + */ + type record of SituationContainer SituationContainerList; - /** - * @desc List of ActionIDs used in behaviours - */ - type record of ActionID ActionIDList; + /** + * @desc List of ActionIDs used in behaviours + */ + type record of ActionID ActionIDList; - } + } - group denmConstants { + group denmConstants { - const ValidityDuration c_duration_2sec := 2; - const ValidityDuration c_duration_5sec := 5; - const ValidityDuration c_duration_10sec := 10; + const ValidityDuration c_duration_2sec := 2; + const ValidityDuration c_duration_5sec := 5; + const ValidityDuration c_duration_10sec := 10; - const TransmissionInterval c_interval_1sec := 1000; - const TransmissionInterval c_interval_2sec := 2000; - const TransmissionInterval c_interval_4sec := 4000; - const TransmissionInterval c_interval_5sec := 5000; - const TransmissionInterval c_interval_10sec := 10000; + const TransmissionInterval c_interval_1sec := 1000; + const TransmissionInterval c_interval_2sec := 2000; + const TransmissionInterval c_interval_4sec := 4000; + const TransmissionInterval c_interval_5sec := 5000; + const TransmissionInterval c_interval_10sec := 10000; - } // end group denmConstants + } // end group denmConstants - group certicicates { + group certicicates { - const charstring PX_CERT_IUT_DENM_01 := "CERT_IUT_DENM_BO_01_AT"; - const charstring PX_CERT_IUT_DENM_02 := "CERT_IUT_DENM_BO_02_AT"; + const charstring PX_CERT_IUT_DENM_01 := "CERT_IUT_DENM_BO_01_AT"; + const charstring PX_CERT_IUT_DENM_02 := "CERT_IUT_DENM_BO_02_AT"; - } + } - group utPrimitives { - + 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 UtDenmInitialize { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester results message of the DENM IUT + * @member utDenmInitialize - + * @member utDenmTriggerResult - + * @member utDenmUpdateResult, - + * @member utDenmChangePositionResult - + * @member utChangePseudonymResult - + */ + type union UtDenmResults { + boolean utDenmInitializeResult, + UtDenmTriggerResult utDenmTriggerResult, + UtDenmUpdateResult utDenmUpdateResult, + boolean utDenmTerminationResult, + boolean utDenmChangePositionResult, + boolean utChangePseudonymResult + } with { + variant "" + } // End of type UtDenmResults + /** * @desc Upper Tester message to request triggering of an event at IUT */ - type record UtDenmTrigger { - TimestampIts detectionTime, - ValidityDuration validityDuration optional, - ValidityDuration repetitionDuration optional, - SituationContainer situation, - RelevanceDistance relevanceDistance, - RelevanceTrafficDirection relevanceTrafficDirection, - TransmissionInterval transmissionInterval optional, - TransmissionInterval repetitionInterval optional, - AlacarteContainer alacarte optional - } - - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type record UtDenmTriggerResult { - boolean result, - ActionID actionId - } - - /** - * @desc Upper Tester message to update an event at IUT - */ - type record UtDenmUpdate { - ActionID actionId, - TimestampIts detectionTime, - ValidityDuration validityDuration optional, - SituationContainer situation optional, - LocationContainer location optional, - RelevanceDistance relevanceDistance optional, - RelevanceTrafficDirection relevanceTrafficDirection optional, - TransmissionInterval transmissionInterval optional, - TransmissionInterval repetitionInterval optional, - AlacarteContainer alacarte optional - } - - /** - * @desc Upper Tester result message of an update request of an event on DENM IUT - */ - type record UtDenmUpdateResult { - boolean result, - ActionID actionId - } - - /** - * @desc Upper Tester message to request the termination of an event at IUT - */ - type record UtDenmTermination { - ActionID actionId - } - -//FIXME RGY As discussed, boolean result types are replaced by a top-level union of the results - /** - * @desc Upper Tester response message for all DENM results - */ - type union UtDENMResults { - boolean utDenmTerminationResult - } - - /** - * @desc Upper Tester result message of termination of an event on DENM IUT - */ -//FIXME RGY As discussed, boolean result types are replaced by a top-level union type -// type boolean UtDenmTerminationResult; - type UtDENMResults.utDenmTerminationResult UtDenmTerminationResult; - /** - * @desc Upper Tester message to check event/status on DENM IUT - */ - type record UtDenmEventInd { - DENM denMsg - } with { - encode (denMsg) "LibItsDenm_asn1" - } - - /** - * @desc List of Upper Tester messages to check event/status on DENM IUT - */ - type record of UtDenmEventInd UtDenmEventIndList; - - /** - * @desc List of ActionID received in response to the Upper Tester triggered messages - */ - type record of ActionID UtDenmActionIDList; - - } - with { - encode "UpperTester" + type record UtDenmTrigger { + TimestampIts detectionTime, + ValidityDuration validityDuration optional, + ValidityDuration repetitionDuration optional, + SituationContainer situation, + RelevanceDistance relevanceDistance, + RelevanceTrafficDirection relevanceTrafficDirection, + TransmissionInterval transmissionInterval optional, + TransmissionInterval repetitionInterval optional, + AlacarteContainer alacarte optional + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester result message of request of triggering of an event at IUT + */ + type record UtDenmTriggerResult { + boolean result, + ActionID actionId + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to update an event at IUT + */ + type record UtDenmUpdate { + ActionID actionId, + TimestampIts detectionTime, + ValidityDuration validityDuration optional, + SituationContainer situation optional, + LocationContainer location optional, + RelevanceDistance relevanceDistance optional, + RelevanceTrafficDirection relevanceTrafficDirection optional, + TransmissionInterval transmissionInterval optional, + TransmissionInterval repetitionInterval optional, + AlacarteContainer alacarte optional + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester result message of an update request of an event on DENM IUT + */ + type record UtDenmUpdateResult { + boolean result, + ActionID actionId + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to request the termination of an event at IUT + */ + type record UtDenmTermination { + ActionID actionId + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to change the position of IUT. Values a relatives + */ + type record UtDenmChangePosition { + Int32 latitude, + Int32 longitude, + Int32 elevation + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to change the pseudonym of the DENM IUT + */ + type record UtChangePseudonym { + // empty on purpose + } with { + variant "FIELDORDER(msb)" + } + + /** + * @desc Upper Tester message to check event/status on DENM IUT + */ + type record UtDenmEventInd { + DENM denMsg + } with { + encode (denMsg) "LibItsDenm_asn1" + } + + /** + * @desc List of Upper Tester messages to check event/status on DENM IUT + */ + type record of UtDenmEventInd UtDenmEventIndList; + + /** + * @desc List of ActionID received in response to the Upper Tester triggered messages + */ + type record of ActionID UtDenmActionIDList; + + } + with { + encode "UpperTester" + variant "" } } with { - encode "LibItsDenm" -} + encode "LibItsDenm" + } diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn index febc184..2cabce6 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_EncdecDeclarations.ttcn @@ -37,5 +37,11 @@ module LibItsGeoNetworking_EncdecDeclarations { external function fx_enc_UtGnInitialize (UtGnInitialize p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} - + + external function fx_enc_UtGnChangePosition (UtGnChangePosition p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_enc_UtGnTrigger (UtGnTrigger p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + } // End of module LibItsGeoNetworking_EncdecDeclarations diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn index 363fc3d..8720ac5 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn @@ -11,2878 +11,2878 @@ */ module LibItsGeoNetworking_Functions { - // Libcommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - import from LibCommon_VerdictControl {type FncRetCode;} - import from LibCommon_Sync all; - import from LibCommon_Time all; + // Libcommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; + import from LibCommon_VerdictControl {type FncRetCode;} + import from LibCommon_Sync all; + import from LibCommon_Time all; - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsExternal_TypesAndValues all; - import from LibItsCommon_Templates all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; -// import from LibItsCommon_TestSystem all; + // LibItsCommon + import from LibItsCommon_TypesAndValues all; + import from LibItsExternal_TypesAndValues all; + import from LibItsCommon_Templates all; + import from LibItsCommon_Functions all; + import from LibItsCommon_Pixits all; + // import from LibItsCommon_TestSystem all; - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Templates all; - import from LibItsSecurity_Functions all; - import from LibItsSecurity_Pixits all; + // LibItsSecurity + import from LibItsSecurity_TypesAndValues all; + import from LibItsSecurity_Templates all; + import from LibItsSecurity_Functions all; + import from LibItsSecurity_Pixits all; - // LibItsGeoNetworking - import from LibItsGeoNetworking_TestSystem all; - import from LibItsGeoNetworking_TypesAndValues all; - import from LibItsGeoNetworking_Templates all; - import from LibItsGeoNetworking_Pixits all; - import from LibItsGeoNetworking_Pics all; -// import from LibItsGeoNetworking_EncdecDeclarations all; + // LibItsGeoNetworking + import from LibItsGeoNetworking_TestSystem all; + import from LibItsGeoNetworking_TypesAndValues all; + import from LibItsGeoNetworking_Templates all; + import from LibItsGeoNetworking_Pixits all; + import from LibItsGeoNetworking_Pics all; + // import from LibItsGeoNetworking_EncdecDeclarations all; - group utFuntions { + group utFuntions { - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtGnInitialize p_init) runs on ItsBaseGeoNetworking { + /** + * @desc Requests to bring the IUT in an initial state + * @param p_init The initialisation to trigger. + */ + function f_utInitializeIut(template (value) UtGnInitialize p_init) runs on ItsBaseGeoNetworking { - //deactivate gnPort default alts - vc_gnDefaultActive := false; + //deactivate gnPort default alts + vc_gnDefaultActive := false; - utPort.send(p_init); - tc_wait.start; - alt { + utPort.send(p_init); + tc_wait.start; + alt { [] utPort.receive(UtGnResults: { utGnInitializeResult := true }) { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } + tc_wait.stop; + log("*** f_utInitializeIut: INFO: IUT initialized ***"); + } + [] utPort.receive { + tc_wait.stop; + log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] tc_wait.timeout { + log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + } - //activate gnPort default alts - vc_gnDefaultActive := true; + //activate gnPort default alts + vc_gnDefaultActive := true; - } + } - /** - * @desc Requests to change the position of the IUT - */ - function f_utChangePosition() runs on ItsBaseGeoNetworking { + /** + * @desc Requests to change the position of the IUT + */ + function f_utChangePosition() runs on ItsBaseGeoNetworking { - //deactivate gnPort default alts - vc_gnDefaultActive := false; + //deactivate gnPort default alts + vc_gnDefaultActive := false; - utPort.send(m_changePosition); - tc_wait.start; - alt { - [] utPort.receive(UtChangePositionResult:true) { - tc_wait.stop; - log("*** f_utChangePosition: INFO: IUT position changed ***"); - } - [] utPort.receive(UtChangePositionResult:false) { - tc_wait.stop; - log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] a_utDefault() { - } - [] tc_wait.timeout { - log("*** f_utChangePosition: INFO: IUT position not changed in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } + utPort.send(m_changePosition); + tc_wait.start; + alt { + [] utPort.receive(UtGnResults: { utGnChangePositionResult := true} ) { + tc_wait.stop; + log("*** f_utChangePosition: INFO: IUT position changed ***"); + } + [] utPort.receive(UtGnResults: { utGnChangePositionResult := false }) { + tc_wait.stop; + log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] a_utDefault() { + } + [] tc_wait.timeout { + log("*** f_utChangePosition: INFO: IUT position not changed in time ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + } - //activate gnPort default alts - vc_gnDefaultActive := true; + //activate gnPort default alts + vc_gnDefaultActive := true; - } + } - /** - * @desc Triggers event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent(template (value) UtGnTrigger p_event) runs on ItsBaseGeoNetworking return boolean { + /** + * @desc Triggers event from the application layer + * @param p_event The event to trigger. + */ + function f_utTriggerEvent(template (value) UtGnTrigger p_event) runs on ItsBaseGeoNetworking return boolean { - // Variables - var boolean v_return := true; + // Variables + var boolean v_return := true; - //deactivate gnPort default alts - vc_gnDefaultActive := false; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtGnTriggerResult:true) { - tc_wait.stop; - } - [] utPort.receive(UtGnTriggerResult:false) { - tc_wait.stop; - log("*** UtGnTriggerResult: INFO: UT trigger was not successful ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] a_utDefault() { - } - [] tc_wait.timeout { - v_return := false; - } - } - - //activate gnPort default alts - vc_gnDefaultActive := true; + //deactivate gnPort default alts + vc_gnDefaultActive := false; - return v_return; + utPort.send(p_event); + tc_wait.start; + alt { + [] utPort.receive(UtGnResults: { utGnTriggerResult := true }) { + tc_wait.stop; + } + [] utPort.receive(UtGnResults: { utGnTriggerResult := false }) { + tc_wait.stop; + log("*** UtGnTriggerResult: INFO: UT trigger was not successful ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] a_utDefault() { + } + [] tc_wait.timeout { + v_return := false; } + } + + //activate gnPort default alts + vc_gnDefaultActive := true; + + return v_return; + } - } // End of group utFunctions + } // End of group utFunctions - group geoConfigurationFunctions { - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - two ITS nodes (nodeA, nodeB) - * - Area1 which only includes NodeB and IUT - * - Area2 which only includes NodeB - * NodeB being close to the area center - */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - - // Map - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:geoNetworkingPort, system:geoNetworkingPort); - - // Connect - f_connect4SelfOrClientSync(); - activate(a_cf01Down()); - - // Initialise secured mode - f_initialiseSecuredMode(); - - //Initialze the IUT - f_initialState(p_scenario); - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - f_initialiseComponent(v_positionTable, v_areaTable, c_compNodeB); - - } // end f_cf01Up - -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf01Down() runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { - - f_uninitialiseSecuredMode(); - - // Unmap - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - unmap(self:geoNetworkingPort, system:geoNetworkingPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // end f_cf01Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node (NodeD) - * - Area1 which only includes NodeB, NodeD and IUT - * - Area2 which only includes NodeB and NodeD - * NodeB being close to the area center - * - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ + group geoConfigurationFunctions { + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - two ITS nodes (nodeA, nodeB) + * - Area1 which only includes NodeB and IUT + * - Area2 which only includes NodeB + * NodeB being close to the area center + */ + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + + // Map + map(self:acPort, system:acPort); + map(self:utPort, system:utPort); + map(self:geoNetworkingPort, system:geoNetworkingPort); + + // Connect + f_connect4SelfOrClientSync(); + activate(a_cf01Down()); + + // Initialise secured mode + f_initialiseSecuredMode(); + + //Initialze the IUT + f_initialState(p_scenario); + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + f_initialiseComponent(v_positionTable, v_areaTable, c_compNodeB); + + } // end f_cf01Up + + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf01Down() runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { + + f_uninitialiseSecuredMode(); + + // Unmap + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + unmap(self:geoNetworkingPort, system:geoNetworkingPort); + + // Disconnect + f_disconnect4SelfOrClientSync(); + + } // end f_cf01Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node (NodeD) + * - Area1 which only includes NodeB, NodeD and IUT + * - Area2 which only includes NodeB and NodeD + * NodeB being close to the area center + * + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf02Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf02Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - - } // end f_cf02Up - - /** - * @desc Deletes configuration cf02 - */ + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + + } // end f_cf02Up + + /** + * @desc Deletes configuration cf02 + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf02Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf02Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeA) - * - one ITS node in direction of NodeA (NodeB) - * - one ITS node not in direction of NodeA (NodeC) - * - Area1 which only includes NodeB and IUT - * - Area2 which only includes NodeB - * NodeB being close to the area center - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf03Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf02Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // end f_cf02Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeA) + * - one ITS node in direction of NodeA (NodeB) + * - one ITS node not in direction of NodeA (NodeC) + * - Area1 which only includes NodeB and IUT + * - Area2 which only includes NodeB + * NodeB being close to the area center + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf03Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - - } // end f_cf03Up - - /** - * @desc Deletes configuration cf03 - */ + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + + } // end f_cf03Up + + /** + * @desc Deletes configuration cf03 + */ - //FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf03Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf03Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeA) - * - one ITS node in direction of NodeA and having - * shortest distance to NodeA (NodeB) - * - one ITS node in direction of NodeA (NodeD) - * - one ITS node not in direction of NodeA (NodeC) - * - Area1 which only includes NodeB, NodeD and IUT - * - Area2 which only includes NodeA, NodeB and NodeD - * NodeB being close to the area center - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf03Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // end f_cf03Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeA) + * - one ITS node in direction of NodeA and having + * shortest distance to NodeA (NodeB) + * - one ITS node in direction of NodeA (NodeD) + * - one ITS node not in direction of NodeA (NodeC) + * - Area1 which only includes NodeB, NodeD and IUT + * - Area2 which only includes NodeA, NodeB and NodeD + * NodeB being close to the area center + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}, {c_compNodeD, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf04Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}, {c_compNodeD, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf04Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - - } // end f_cf04Up - - /** - * @desc Deletes configuration cf04 - */ + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + + } // end f_cf04Up + + /** + * @desc Deletes configuration cf04 + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf04Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */{ - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf04Down + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf04Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */{ + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // end f_cf04Down - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node not in direction of NodeB and having - * longest distance to NodeB (NodeE) - * - Area1 which only includes NodeB, NodeD and IUT - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node not in direction of NodeB and having + * longest distance to NodeB (NodeE) + * - Area1 which only includes NodeB, NodeD and IUT + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeE, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf05Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeE, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf05Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - } + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + } - /** - * @desc Deletes configuration cf05 - */ + /** + * @desc Deletes configuration cf05 + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf05Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf05Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node not in direction of NodeB and having - * shortest distance to NodeB (NodeF) - * - Area1 which only includes NodeB, NodeD and IUT - * - IUT not in sectorial area of NodeB-NodeF - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf05Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // end f_cf05Down + + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node not in direction of NodeB and having + * shortest distance to NodeB (NodeF) + * - Area1 which only includes NodeB, NodeD and IUT + * - IUT not in sectorial area of NodeB-NodeF + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeF, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf06Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeF, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf06Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - } + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + } - /** - * @desc Deletes configuration cf06 - */ + /** + * @desc Deletes configuration cf06 + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf06Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf06Down + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf06Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // end f_cf06Down - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node in direction of NodeB and having - * shortest distance to NodeB (NodeD) - * - Area1 which only includes NodeB, NodeD and IUT - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ + /** + * @desc This configuration features: + * - one ITS node (IUT) + * - one ITS node (NodeB) + * - one ITS node in direction of NodeB and having + * shortest distance to NodeB (NodeD) + * - Area1 which only includes NodeB, NodeD and IUT + * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages + */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO mtc ItsMtc system ItsGeoNetworkingSystem */{ + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO mtc ItsMtc system ItsGeoNetworkingSystem */{ - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf07Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); + // Variables + var PositionTable v_positionTable := {}; + var GeoAreaTable v_areaTable := {}; + var ItsGeoNetworking v_component; + var integer i; + + // Select components + vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; + + // Create components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + vc_componentTable[i].gnComponent := ItsGeoNetworking.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].gnComponent:acPort, system:acPort); + map(vc_componentTable[i].gnComponent:utPort, system:utPort); + map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + + activate(a_cf07Down()); + + //Initialze the IUT + if(p_mainUtComponent == c_compMTC) { + // Initialise secured mode + f_initialiseSecuredMode(); - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - } - - /** - * @desc Deletes configuration cf06 - */ -//FIXME RGY Titan doesn't support mtc and system clauses yet - function f_cf07Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf0yDown - - /** - * @desc Behavior function for initializing component's variables and tables - * @param p_positionTable Table containing position vectors of all nodes - * @param p_areaTable Table containing all defined geoAreas - * @param p_componentName Name of the component - */ - function f_initialiseComponent( - in PositionTable p_positionTable, - in GeoAreaTable p_areaTable, - in charstring p_componentName) - runs on ItsGeoNetworking { - - vc_positionTable := p_positionTable; - vc_areaTable := p_areaTable; - vc_componentName := p_componentName; - - vc_localSeqNumber := f_getInitialSequenceNumber(); - vc_multipleMessagesCount := f_getMessageCount(); - - } // end f_initialiseComponent - - /** - * @desc Makes the simulated ITS node behave as a neighbour of IUT - */ - function f_startBeingNeighbour() runs on ItsGeoNetworking { - - vc_neighbourDefault := activate(a_neighbourDefault()); - f_acTriggerEvent(m_startBeaconing(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader)); - f_sleepIgnoreDef(PX_NEIGHBOUR_DISCOVERY_DELAY); - } // end f_startBeingNeighbour - - /** - * @desc Makes the simulated ITS node behave as not being a neighbour of IUT - */ - function f_stopBeingNeighbour() runs on ItsGeoNetworking { - - f_acTriggerEvent(m_stopBeaconing); - if (PICS_GN_SECURITY == true) { - deactivate(vc_neighbourDefault); - } - } // end f_stopBeingNeighbour - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode() runs on ItsBaseGeoNetworking { - if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { - if(e_success != f_acEnableSecurity()){ - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsBaseGeoNetworking { - if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { - f_acDisableSecurity(); - } - } // End of function f_uninitialiseSecuredMode() + // MTC intializes IUT + f_initialState(p_scenario); + } + else { + v_component := f_getComponent(p_mainUtComponent); + v_component.start(f_initialState(p_scenario)); + v_component.done; + } + + // Positions & Areas + f_preparePositionsAndAreas(v_positionTable, v_areaTable); + + // Initialize components + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); + } + } + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + if (isvalue(vc_componentTable[i].gnComponent)) { + vc_componentTable[i].gnComponent.done; + } + } + } - } // end geoConfigurationFunctions + /** + * @desc Deletes configuration cf06 + */ + //FIXME RGY Titan doesn't support mtc and system clauses yet + function f_cf07Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { + + // Local variables + var integer i; + + f_uninitialiseSecuredMode(); + + // Unmap & Disconnect + for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { + unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); + unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); + unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); + disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); + } + unmap(self:acPort, system:acPort); + unmap(self:utPort, system:utPort); + disconnect(self:syncPort, mtc:syncPort); + + } // end f_cf0yDown + + /** + * @desc Behavior function for initializing component's variables and tables + * @param p_positionTable Table containing position vectors of all nodes + * @param p_areaTable Table containing all defined geoAreas + * @param p_componentName Name of the component + */ + function f_initialiseComponent( + in PositionTable p_positionTable, + in GeoAreaTable p_areaTable, + in charstring p_componentName) + runs on ItsGeoNetworking { + + vc_positionTable := p_positionTable; + vc_areaTable := p_areaTable; + vc_componentName := p_componentName; + + vc_localSeqNumber := f_getInitialSequenceNumber(); + vc_multipleMessagesCount := f_getMessageCount(); + + } // end f_initialiseComponent + + /** + * @desc Makes the simulated ITS node behave as a neighbour of IUT + */ + function f_startBeingNeighbour() runs on ItsGeoNetworking { + + vc_neighbourDefault := activate(a_neighbourDefault()); + f_acTriggerEvent(m_startBeaconing(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader)); + f_sleepIgnoreDef(PX_NEIGHBOUR_DISCOVERY_DELAY); + } // end f_startBeingNeighbour + + /** + * @desc Makes the simulated ITS node behave as not being a neighbour of IUT + */ + function f_stopBeingNeighbour() runs on ItsGeoNetworking { + + f_acTriggerEvent(m_stopBeaconing); + if (PICS_GN_SECURITY == true) { + deactivate(vc_neighbourDefault); + } + } // end f_stopBeingNeighbour + + /** + * @desc Initialise secure mode if required + */ + function f_initialiseSecuredMode() runs on ItsBaseGeoNetworking { + if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { + if(e_success != f_acEnableSecurity()){ + log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); + stop; + } + } + } // End of function f_initialiseSecuredMode() + + function f_uninitialiseSecuredMode() runs on ItsBaseGeoNetworking { + if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { + f_acDisableSecurity(); + } + } // End of function f_uninitialiseSecuredMode() + + } // end geoConfigurationFunctions - 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 ItsGeoNetworking { - - var ItsGeoNetworking v_return := null; - var integer i := 0; - - for (i:=0; i value v_ind { - //store every upper tester indication received - vc_utInds[lengthof(vc_utInds)] := v_ind; - repeat; - } - [vc_utDefaultActive] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unexpected UT message from IUT ***"); - repeat; - } - } + /** + * @desc The default for handling upper tester messages. + */ + altstep a_utDefault() runs on ItsBaseGeoNetworking { + var UtGnEventInd v_ind; + [vc_utDefaultActive] utPort.receive(UtGnEventInd:?) -> value v_ind { + //store every upper tester indication received + vc_utInds[lengthof(vc_utInds)] := v_ind; + repeat; + } + [vc_utDefaultActive] utPort.receive { + log("*** " & testcasename() & ": INFO: Received unexpected UT message from IUT ***"); + repeat; + } + } - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsGeoNetworking { - [] a_shutdown() { - f_poDefault(); - f_cf01Down(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } + /** + * @desc Default handling cf01 de-initialisation. + */ + altstep a_cf01Down() runs on ItsGeoNetworking { + [] a_shutdown() { + f_poDefault(); + f_cf01Down(); + 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 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 Default handling cf03 de-initialisation. - */ - altstep a_cf03Down() runs on ItsMtc { - [] a_shutdown() { - f_cf03Down(); - log("*** a_cf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } + /** + * @desc Default handling cf03 de-initialisation. + */ + altstep a_cf03Down() runs on ItsMtc { + [] a_shutdown() { + f_cf03Down(); + log("*** a_cf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } - /** - * @desc Default handling cf04 de-initialisation. - */ - altstep a_cf04Down() runs on ItsMtc { - [] a_shutdown() { - f_cf04Down(); - log("*** a_cf04Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } + /** + * @desc Default handling cf04 de-initialisation. + */ + altstep a_cf04Down() runs on ItsMtc { + [] a_shutdown() { + f_cf04Down(); + log("*** a_cf04Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } - /** - * @desc Default handling cf05 de-initialisation. - */ - altstep a_cf05Down() runs on ItsMtc { - [] a_shutdown() { - f_cf05Down(); - log("*** a_cf05Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } + /** + * @desc Default handling cf05 de-initialisation. + */ + altstep a_cf05Down() runs on ItsMtc { + [] a_shutdown() { + f_cf05Down(); + log("*** a_cf05Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } - /** - * @desc Default handling cf06 de-initialisation. - */ - altstep a_cf06Down() runs on ItsMtc { - [] a_shutdown() { - f_cf06Down(); - log("*** a_cf06Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } + /** + * @desc Default handling cf06 de-initialisation. + */ + altstep a_cf06Down() runs on ItsMtc { + [] a_shutdown() { + f_cf06Down(); + log("*** a_cf06Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } - /** - * @desc Default handling cf07 de-initialisation. - */ - altstep a_cf07Down() runs on ItsMtc { - [] a_shutdown() { - f_cf07Down(); - log("*** a_cf07Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - group geoGeoUnicastAltsteps { - - /** - * @desc Receive GeoUnicast packet - * @param p_sourceLongPosVec Expected source position vector - * @param p_destinationShortPosVec Expected destination position vector - * @param p_seqNumber Expected sequence number - */ - altstep a_receiveGeoUnicast( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber - ) runs on ItsGeoNetworking { + /** + * @desc Default handling cf07 de-initialisation. + */ + altstep a_cf07Down() runs on ItsMtc { + [] a_shutdown() { + f_cf07Down(); + log("*** a_cf07Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); + stop; + } + } + group geoGeoUnicastAltsteps { + + /** + * @desc Receive GeoUnicast packet + * @param p_sourceLongPosVec Expected source position vector + * @param p_destinationShortPosVec Expected destination position vector + * @param p_seqNumber Expected sequence number + */ + altstep a_receiveGeoUnicast( + in template (present) ShortPosVector p_destinationShortPosVec, + in template (present) UInt16 p_seqNumber + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwUnicastPacket( - p_destinationShortPosVec, - p_seqNumber)))) { - } - } + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwUnicastPacket( + p_destinationShortPosVec, + p_seqNumber)))) { + } + } - /** - * @desc Receive GeoUnicast packet for specific destination - * @param p_destinationShortPosVec Expected destination position vector - */ - altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationShortPosVec) runs on ItsGeoNetworking { + /** + * @desc Receive GeoUnicast packet for specific destination + * @param p_destinationShortPosVec Expected destination position vector + */ + altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationShortPosVec) runs on ItsGeoNetworking { - [vc_gnDefaultActive] a_receiveGeoUnicast(p_destinationShortPosVec, ?) {} - } + [vc_gnDefaultActive] a_receiveGeoUnicast(p_destinationShortPosVec, ?) {} + } - /** - * @desc Receive any GeoUnicast packet - */ - altstep a_receiveAnyGeoUnicast() runs on ItsGeoNetworking { + /** + * @desc Receive any GeoUnicast packet + */ + altstep a_receiveAnyGeoUnicast() runs on ItsGeoNetworking { - [vc_gnDefaultActive] a_receiveGeoUnicast(?, ?) {} - } - - } // end geoGeoUnicastAltsteps - - group geoGeoBroadcastAltsteps { - - /** - * @desc Receive GeoBroadcast packet - * @param p_srcLongPosVec Expected source position vector - * @param p_seqNumber Expected sequence number - */ - altstep a_receiveGeoBroadcast( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber - ) runs on ItsGeoNetworking { + [vc_gnDefaultActive] a_receiveGeoUnicast(?, ?) {} + } + + } // end geoGeoUnicastAltsteps + + group geoGeoBroadcastAltsteps { + + /** + * @desc Receive GeoBroadcast packet + * @param p_srcLongPosVec Expected source position vector + * @param p_seqNumber Expected sequence number + */ + altstep a_receiveGeoBroadcast( + in template (present) LongPosVector p_srcLongPosVec, + in template (present) UInt16 p_seqNumber + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket( - p_srcLongPosVec, - p_seqNumber - )))) { - } - } - - /** - * @desc Receive GeoBroadcast packet with specific Area and HopLimit - * @param p_srcLongPosVec Expected source position vector - * @param p_seqNumber Expected sequence number - * @param p_broadcastArea Expected geoBroadcastArea - * @param p_routerHopLimit Expected router hop limit - * @param p_maxHopLimit Expected max hop limit (Default: ?) - */ - altstep a_receiveGeoBroadcastWithAreaWithHopLimit( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea, - in template (present) UInt8 p_routerHopLimit, - in template (present) UInt8 p_maxHopLimit := ? - ) runs on ItsGeoNetworking { + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket( + p_srcLongPosVec, + p_seqNumber + )))) { + } + } + + /** + * @desc Receive GeoBroadcast packet with specific Area and HopLimit + * @param p_srcLongPosVec Expected source position vector + * @param p_seqNumber Expected sequence number + * @param p_broadcastArea Expected geoBroadcastArea + * @param p_routerHopLimit Expected router hop limit + * @param p_maxHopLimit Expected max hop limit (Default: ?) + */ + altstep a_receiveGeoBroadcastWithAreaWithHopLimit( + in template (present) LongPosVector p_srcLongPosVec, + in template (present) UInt16 p_seqNumber, + in template (present) GeoBroadcastArea p_broadcastArea, + in template (present) UInt8 p_routerHopLimit, + in template (present) UInt8 p_maxHopLimit := ? + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithAreaAndHl( - p_srcLongPosVec, - p_seqNumber, - p_broadcastArea, - p_maxHopLimit - ), - -, - p_routerHopLimit - ))) { - } - } - - /** - * @desc Receive GeoBroadcast packet for specific Geobroadcast Area - * @param p_srcLongPosVec Expected source position vector - * @param p_seqNumber Expected sequence number - * @param p_broadcastArea Expected geoBroadcastArea - */ - altstep a_receiveGeoBroadcastWithArea( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea - ) runs on ItsGeoNetworking { + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithAreaAndHl( + p_srcLongPosVec, + p_seqNumber, + p_broadcastArea, + p_maxHopLimit + ), + -, + p_routerHopLimit + ))) { + } + } + + /** + * @desc Receive GeoBroadcast packet for specific Geobroadcast Area + * @param p_srcLongPosVec Expected source position vector + * @param p_seqNumber Expected sequence number + * @param p_broadcastArea Expected geoBroadcastArea + */ + altstep a_receiveGeoBroadcastWithArea( + in template (present) LongPosVector p_srcLongPosVec, + in template (present) UInt16 p_seqNumber, + in template (present) GeoBroadcastArea p_broadcastArea + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithArea( - p_srcLongPosVec, - p_seqNumber, - p_broadcastArea - )))) { - } - } - - } // end geoGeoBroadcastAltsteps - - group geoGeoAnycastAltsteps { - - /** - * @desc Receive GeoAnycast packet - * @param p_srcLongPosVec Expected source position vector - * @param p_senderLongPosVec Expected sender position vector - * @param p_seqNumber Expected sequence number - */ - altstep a_receiveGeoAnycast( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) LongPosVector p_senderLongPosVec, - in template (present) UInt16 p_seqNumber - ) runs on ItsGeoNetworking { + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithArea( + p_srcLongPosVec, + p_seqNumber, + p_broadcastArea + )))) { + } + } + + } // end geoGeoBroadcastAltsteps + + group geoGeoAnycastAltsteps { + + /** + * @desc Receive GeoAnycast packet + * @param p_srcLongPosVec Expected source position vector + * @param p_senderLongPosVec Expected sender position vector + * @param p_seqNumber Expected sequence number + */ + altstep a_receiveGeoAnycast( + in template (present) LongPosVector p_srcLongPosVec, + in template (present) LongPosVector p_senderLongPosVec, + in template (present) UInt16 p_seqNumber + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacket( - p_srcLongPosVec, - p_seqNumber - )))) { - } - } - - /** - * @desc Receive GeoAnycast packet with specific Area and HopLimit - * @param p_srcLongPosVec Expected source position vector - * @param p_senderLongPosVec Expected sender position vector - * @param p_seqNumber Expected sequence number - * @param p_anycastArea Expected geoAnycastArea - * @param p_hopLimit Expected hop limit - * @param p_maxHopLimit Expected max hop limit (Default: ?) - */ - altstep a_receiveGeoAnycastWithAreaWithHopLimit( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea, - in template (present) UInt8 p_hopLimit, - in template (present) UInt8 p_maxHopLimit := ? - ) runs on ItsGeoNetworking { + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacket( + p_srcLongPosVec, + p_seqNumber + )))) { + } + } + + /** + * @desc Receive GeoAnycast packet with specific Area and HopLimit + * @param p_srcLongPosVec Expected source position vector + * @param p_senderLongPosVec Expected sender position vector + * @param p_seqNumber Expected sequence number + * @param p_anycastArea Expected geoAnycastArea + * @param p_hopLimit Expected hop limit + * @param p_maxHopLimit Expected max hop limit (Default: ?) + */ + altstep a_receiveGeoAnycastWithAreaWithHopLimit( + in template (present) LongPosVector p_srcLongPosVec, + in template (present) UInt16 p_seqNumber, + in template (present) GeoAnycastArea p_anycastArea, + in template (present) UInt8 p_hopLimit, + in template (present) UInt8 p_maxHopLimit := ? + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea( - p_srcLongPosVec, - p_seqNumber, - p_anycastArea - ), - -, - p_hopLimit - ))) { - } - } - - /** - * @desc Receive GeoAnycast packet for specific GeoAnycast Area - * @param p_srcLongPosVec Expected source position vector - * @param p_senderLongPosVec Expected sender position vector - * @param p_seqNumber Expected sequence number - * @param p_anycastArea Expected geoAnycastArea - */ - altstep a_receiveGeoAnycastWithArea( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea - ) runs on ItsGeoNetworking { + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea( + p_srcLongPosVec, + p_seqNumber, + p_anycastArea + ), + -, + p_hopLimit + ))) { + } + } + + /** + * @desc Receive GeoAnycast packet for specific GeoAnycast Area + * @param p_srcLongPosVec Expected source position vector + * @param p_senderLongPosVec Expected sender position vector + * @param p_seqNumber Expected sequence number + * @param p_anycastArea Expected geoAnycastArea + */ + altstep a_receiveGeoAnycastWithArea( + in template (present) LongPosVector p_srcLongPosVec, + in template (present) UInt16 p_seqNumber, + in template (present) GeoAnycastArea p_anycastArea + ) runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea( - p_srcLongPosVec, - p_seqNumber, - p_anycastArea - )))) { - } - } - - } // end geoGeoAnycastAltsteps - - group geoLocationServiceAltsteps { - - /** - * @desc Receive Location Service Request - * @param p_seqNumber Expected sequence number of the received LS Request - * @param p_gnAddress GN address expected in received LS Request - * @param p_reqSrcPosVector Expected source position vector of the received LS Request - */ - altstep a_receiveLsRequest( - in template (present) UInt16 p_seqNumber, - in template (present) GN_Address.mid p_mid, - out LongPosVector p_reqSrcPosVector - ) runs on ItsGeoNetworking { - var GeoNetworkingInd v_msg; + [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea( + p_srcLongPosVec, + p_seqNumber, + p_anycastArea + )))) { + } + } + + } // end geoGeoAnycastAltsteps + + group geoLocationServiceAltsteps { + + /** + * @desc Receive Location Service Request + * @param p_seqNumber Expected sequence number of the received LS Request + * @param p_gnAddress GN address expected in received LS Request + * @param p_reqSrcPosVector Expected source position vector of the received LS Request + */ + altstep a_receiveLsRequest( + in template (present) UInt16 p_seqNumber, + in template (present) GN_Address.mid p_mid, + out LongPosVector p_reqSrcPosVector + ) runs on ItsGeoNetworking { + var GeoNetworkingInd v_msg; - [vc_gnDefaultActive] geoNetworkingPort.receive( - mw_geoNwInd( - mw_geoNwPdu( - mw_geoNwLsRequestPacket( - p_seqNumber, - p_mid - ) - ) - ) - ) -> value v_msg { - p_reqSrcPosVector := valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsRequestHeader.srcPosVector); - } - } - - /** - * @desc Receive any Location Service Request - */ - altstep a_receiveAnyLsRequest() runs on ItsGeoNetworking { - var LongPosVector v_reqSrcPosVector; + [vc_gnDefaultActive] geoNetworkingPort.receive( + mw_geoNwInd( + mw_geoNwPdu( + mw_geoNwLsRequestPacket( + p_seqNumber, + p_mid + ) + ) + ) + ) -> value v_msg { + p_reqSrcPosVector := valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsRequestHeader.srcPosVector); + } + } + + /** + * @desc Receive any Location Service Request + */ + altstep a_receiveAnyLsRequest() runs on ItsGeoNetworking { + var LongPosVector v_reqSrcPosVector; - [vc_gnDefaultActive] a_receiveLsRequest(?, ?, v_reqSrcPosVector) {} - } - - /** - * @desc Receive any Location Service Reply - */ - altstep a_receiveAnyLsReply() runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsReplyPacket(?, ?) ))) { - //ignore and repeat - repeat; - } - } - - /** - * @desc Receive Location Service Request and send Location Service Reply - * @param p_reqSeqNumber Expected sequence number of the received LS Request - * @param p_gnAddress GN address expected in received LS Request - * @param p_repSrcPosVector Source position vector of the sent LS Response - * @param p_repSenderPosVector Sender position vector of the sent LS Response - */ - altstep a_receiveLsRequestAndReply( - in template (present) UInt16 p_reqSeqNumber, - in template (value) GN_Address.mid p_mid, - in template (value) LongPosVector p_repSrcPosVector, - in template (value) LongPosVector p_repSenderPosVector - ) runs on ItsGeoNetworking { - var LongPosVector v_repDstPosVector; + [vc_gnDefaultActive] a_receiveLsRequest(?, ?, v_reqSrcPosVector) {} + } + + /** + * @desc Receive any Location Service Reply + */ + altstep a_receiveAnyLsReply() runs on ItsGeoNetworking { + [vc_gnDefaultActive] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsReplyPacket(?, ?) ))) { + //ignore and repeat + repeat; + } + } + + /** + * @desc Receive Location Service Request and send Location Service Reply + * @param p_reqSeqNumber Expected sequence number of the received LS Request + * @param p_gnAddress GN address expected in received LS Request + * @param p_repSrcPosVector Source position vector of the sent LS Response + * @param p_repSenderPosVector Sender position vector of the sent LS Response + */ + altstep a_receiveLsRequestAndReply( + in template (present) UInt16 p_reqSeqNumber, + in template (value) GN_Address.mid p_mid, + in template (value) LongPosVector p_repSrcPosVector, + in template (value) LongPosVector p_repSenderPosVector + ) runs on ItsGeoNetworking { + var LongPosVector v_repDstPosVector; - [vc_gnDefaultActive] a_receiveLsRequest(p_reqSeqNumber, p_mid, v_repDstPosVector) { - f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu( - m_geoNwLsReplyPacket( - p_repSrcPosVector, - f_longPosVector2ShortPosVector(v_repDstPosVector), - vc_localSeqNumber - ))))); - } - } + [vc_gnDefaultActive] a_receiveLsRequest(p_reqSeqNumber, p_mid, v_repDstPosVector) { + f_sendGeoNetMessage(valueof(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu( + m_geoNwLsReplyPacket( + p_repSrcPosVector, + f_longPosVector2ShortPosVector(v_repDstPosVector), + vc_localSeqNumber + ))))); + } + } - } // end geoLocationServiceAltsteps + } // end geoLocationServiceAltsteps - } // end geoAltsteps + } // end geoAltsteps - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsGeoNetworking { - activate(a_default()); - activate(a_utDefault()); - } + group preambles { + + /** + * @desc The default preamble. + */ + function f_prDefault() runs on ItsGeoNetworking { + activate(a_default()); + activate(a_utDefault()); + } - /** - * @desc Preamble for non-neighbour nodes - */ - function f_prNonNeighbour() runs on ItsGeoNetworking { - f_prDefault(); - } + /** + * @desc Preamble for non-neighbour nodes + */ + function f_prNonNeighbour() runs on ItsGeoNetworking { + f_prDefault(); + } - /** - * @desc Preamble for neighbour nodes - */ - function f_prNeighbour() runs on ItsGeoNetworking { - f_prDefault(); - f_startBeingNeighbour(); - f_sleep(0.5); - } + /** + * @desc Preamble for neighbour nodes + */ + function f_prNeighbour() runs on ItsGeoNetworking { + f_prDefault(); + f_startBeingNeighbour(); + f_sleep(0.5); + } - /** - * @desc Brings the IUT into an initial state. - * @remark Component variable vc_hashedId8ToBeUsed shall be set with the IUT certificate to be used - */ - function f_initialState(Scenario p_scenario := e_staticPosition) runs on ItsBaseGeoNetworking { - - if (PICS_GN_SECURITY) { - var Oct8 v_hashedId8ToBeUsed := f_setupIutCertificate(vc_hashedId8ToBeUsed); - if (oct2int(v_hashedId8ToBeUsed) == 0) { - v_hashedId8ToBeUsed := 'FFFFFFFFFFFFFFFF'O; // Reset to unknown value, the IUT will use its own certificates - } - f_utInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); - } // else, default behavior - else { - f_utInitializeIut(m_gnInitialize); - } - - f_acLoadScenario(p_scenario); - f_acStartScenario(); - } + /** + * @desc Brings the IUT into an initial state. + * @remark Component variable vc_hashedId8ToBeUsed shall be set with the IUT certificate to be used + */ + function f_initialState(Scenario p_scenario := e_staticPosition) runs on ItsBaseGeoNetworking { + + if (PICS_GN_SECURITY) { + var Oct8 v_hashedId8ToBeUsed := f_setupIutCertificate(vc_hashedId8ToBeUsed); + if (oct2int(v_hashedId8ToBeUsed) == 0) { + v_hashedId8ToBeUsed := 'FFFFFFFFFFFFFFFF'O; // Reset to unknown value, the IUT will use its own certificates + } + f_utInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); + } // else, default behavior + else { + f_utInitializeIut(m_gnInitialize); + } + + f_acLoadScenario(p_scenario); + f_acStartScenario(); + } - /** - * @desc Receive and reply to LS Requests - * @param p_reqSeqNumber Expected sequence number of the received LS Request - * @param p_gnAddress GN address expected in received LS Request - * @param p_repSrcPosVector Source position vector of the sent LS Response - * @param p_repSenderPosVector Sender position vector of the sent LS Response - */ - function f_handleLocationService( - in template (present) UInt16 p_reqSeqNumber, - in template (value) GN_Address.mid p_mid, - in template (value) LongPosVector p_repSrcPosVector, - in template (value) LongPosVector p_repSenderPosVector - ) runs on ItsGeoNetworking { - - tc_ac.start; - alt { - [] a_receiveLsRequestAndReply(p_reqSeqNumber, p_mid, p_repSrcPosVector, p_repSenderPosVector) { - tc_ac.stop; - } - } + /** + * @desc Receive and reply to LS Requests + * @param p_reqSeqNumber Expected sequence number of the received LS Request + * @param p_gnAddress GN address expected in received LS Request + * @param p_repSrcPosVector Source position vector of the sent LS Response + * @param p_repSenderPosVector Sender position vector of the sent LS Response + */ + function f_handleLocationService( + in template (present) UInt16 p_reqSeqNumber, + in template (value) GN_Address.mid p_mid, + in template (value) LongPosVector p_repSrcPosVector, + in template (value) LongPosVector p_repSenderPosVector + ) runs on ItsGeoNetworking { + + tc_ac.start; + alt { + [] a_receiveLsRequestAndReply(p_reqSeqNumber, p_mid, p_repSrcPosVector, p_repSenderPosVector) { + tc_ac.stop; + } + } - } + } - /** - * @desc Send LS request and receive LS Reply - * @param p_reqSrcPosVector Source position vector of the sent LS Request - * @param p_reqSeqNumber Sequence number of the sent LS Request - * @param p_gnAddress GN address for which the LS Request is sent - * @param p_repSrcPosVector Expected source position vector in received LS Response - * @return FncRetCode - */ - function f_processLocationService( - in template (value) LongPosVector p_reqSrcPosVector, - in template (value) UInt16 p_reqSeqNumber, - in template (value) GN_Address p_gnAddress, - out LongPosVector p_repSrcPosVector - ) runs on ItsGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_error; - var GeoNetworkingInd v_msg; - - f_sendGeoNetMessage( - valueof( - m_geoNwReq_linkLayerBroadcast( - m_geoNwPdu( - m_geoNwLsRequestPacket( - p_reqSrcPosVector, - p_reqSeqNumber, - p_gnAddress - ) - ) - ) - ) - ); - - tc_ac.start; - alt { - [] geoNetworkingPort.receive( - mw_geoNwInd( - mw_geoNwPdu( - mw_geoNwLsReplyPacket( - ?, - mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_reqSrcPosVector))) - ) - ) - ) - ) -> value v_msg { - tc_ac.stop; - p_repSrcPosVector := valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsReplyHeader.srcPosVector); - v_ret := e_success; - } - } - - return v_ret; - } + /** + * @desc Send LS request and receive LS Reply + * @param p_reqSrcPosVector Source position vector of the sent LS Request + * @param p_reqSeqNumber Sequence number of the sent LS Request + * @param p_gnAddress GN address for which the LS Request is sent + * @param p_repSrcPosVector Expected source position vector in received LS Response + * @return FncRetCode + */ + function f_processLocationService( + in template (value) LongPosVector p_reqSrcPosVector, + in template (value) UInt16 p_reqSeqNumber, + in template (value) GN_Address p_gnAddress, + out LongPosVector p_repSrcPosVector + ) runs on ItsGeoNetworking return FncRetCode { + var FncRetCode v_ret := e_error; + var GeoNetworkingInd v_msg; + + f_sendGeoNetMessage( + valueof( + m_geoNwReq_linkLayerBroadcast( + m_geoNwPdu( + m_geoNwLsRequestPacket( + p_reqSrcPosVector, + p_reqSeqNumber, + p_gnAddress + ) + ) + ) + ) + ); + + tc_ac.start; + alt { + [] geoNetworkingPort.receive( + mw_geoNwInd( + mw_geoNwPdu( + mw_geoNwLsReplyPacket( + ?, + mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_reqSrcPosVector))) + ) + ) + ) + ) -> value v_msg { + tc_ac.stop; + p_repSrcPosVector := valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsReplyHeader.srcPosVector); + v_ret := e_success; + } + } + + return v_ret; + } - } // end preambles + } // end preambles - group postambles { + group postambles { - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsGeoNetworking { - f_acStopScenario(); - } + /** + * @desc The default postamble. + */ + function f_poDefault() runs on ItsGeoNetworking { + f_acStopScenario(); + } - /** - * @desc Postamble for neighbour nodes - */ - function f_poNeighbour() runs on ItsGeoNetworking { - f_stopBeingNeighbour(); - f_poDefault(); - } + /** + * @desc Postamble for neighbour nodes + */ + function f_poNeighbour() runs on ItsGeoNetworking { + f_stopBeingNeighbour(); + f_poDefault(); + } - } // end postambles + } // end postambles - group adapterControl { + group adapterControl { - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerEvent(template (value) AcGnPrimitive p_event) runs on ItsBaseGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_success; + /** + * @desc Triggers event in the test system adaptation. + * @param p_event The event to trigger + * @return FncRetCode + */ + function f_acTriggerEvent(template (value) AcGnPrimitive p_event) runs on ItsBaseGeoNetworking return FncRetCode { + var FncRetCode v_ret := e_success; - acPort.send(p_event); + acPort.send(p_event); - return v_ret; - } + return v_ret; + } - /** - * @desc Get the position vector corresponding to a specific GN address - * @param p_gnAddress GN address for which the search is performed - * @return LongPosVector - IUT's position - */ - function f_acGetLongPosVector(GN_Address p_gnAddress) runs on ItsBaseGeoNetworking return LongPosVector { - var AcGnResponse v_result; - - f_acTriggerEvent(m_getLongPosVector(p_gnAddress)); - tc_ac.start; - alt { - [] acPort.receive(mw_getLongPosVectorAny(p_gnAddress)) -> value v_result { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** f_acGetLongPosVector: ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** f_acGetLongPosVector: ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } + /** + * @desc Get the position vector corresponding to a specific GN address + * @param p_gnAddress GN address for which the search is performed + * @return LongPosVector - IUT's position + */ + function f_acGetLongPosVector(GN_Address p_gnAddress) runs on ItsBaseGeoNetworking return LongPosVector { + var AcGnResponse v_result; - return v_result.getLongPosVector; + f_acTriggerEvent(m_getLongPosVector(p_gnAddress)); + tc_ac.start; + alt { + [] acPort.receive(mw_getLongPosVectorAny(p_gnAddress)) -> value v_result { + tc_ac.stop; } + [] acPort.receive { + tc_ac.stop; + log("*** f_acGetLongPosVector: ERROR: Received unexpected message ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] tc_ac.timeout { + log("*** f_acGetLongPosVector: ERROR: Timeout while waiting for adapter control event result ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + } + + return v_result.getLongPosVector; + } - /** - * @desc Triggers test adapter to send beacons for multiple neighbours - * @param p_numberOfNeighbour Number of neighbours to simulate - * @return FncRetCode - */ - function f_acStartBeaconingMultipleNeighbour(in integer p_numberOfNeighbour) runs on ItsGeoNetworking return FncRetCode { + /** + * @desc Triggers test adapter to send beacons for multiple neighbours + * @param p_numberOfNeighbour Number of neighbours to simulate + * @return FncRetCode + */ + function f_acStartBeaconingMultipleNeighbour(in integer p_numberOfNeighbour) runs on ItsGeoNetworking return FncRetCode { - return f_acTriggerEvent(m_startBeaconingMultipleNeighbour(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader, p_numberOfNeighbour)); + return f_acTriggerEvent(m_startBeaconingMultipleNeighbour(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader, p_numberOfNeighbour)); - } + } - /** - * @desc Triggers test adapter to enable security support - * @return FncRetCode - */ - function f_acEnableSecurity() runs on ItsBaseGeoNetworking return FncRetCode { + /** + * @desc Triggers test adapter to enable security support + * @return FncRetCode + */ + function f_acEnableSecurity() runs on ItsBaseGeoNetworking return FncRetCode { - // Local variables + // Local variables - // Load certificates - if (PICS_GN_SECURITY) { - if( not f_loadCertificates(PX_IUT_SEC_CONFIG_NAME) ) { - return e_error; - } - - // Initialize vc_location - f_setGenerationLocation( - f_getTsLatitude(), - f_getTsLongitude() - ); - return f_acTriggerSecEvent(m_acEnableSecurity(cc_taCert_A)); - } - return f_acTriggerSecEvent(m_acEnableSecurity(PX_CERT_FOR_TS)); + // Load certificates + if (PICS_GN_SECURITY) { + if( not f_loadCertificates(PX_IUT_SEC_CONFIG_NAME) ) { + return e_error; } + + // Initialize vc_location + f_setGenerationLocation( + f_getTsLatitude(), + f_getTsLongitude() + ); + return f_acTriggerSecEvent(m_acEnableSecurity(cc_taCert_A)); + } + return f_acTriggerSecEvent(m_acEnableSecurity(PX_CERT_FOR_TS)); + } - /** - * @desc Triggers test adapter to disable security support - * @return FncRetCode - */ - function f_acDisableSecurity() runs on ItsBaseGeoNetworking return FncRetCode { + /** + * @desc Triggers test adapter to disable security support + * @return FncRetCode + */ + function f_acDisableSecurity() runs on ItsBaseGeoNetworking return FncRetCode { - f_unloadCertificates(); + f_unloadCertificates(); - return f_acTriggerSecEvent(m_acDisableSecurity); + return f_acTriggerSecEvent(m_acDisableSecurity); - } + } - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent( - in template (value) AcSecPrimitive p_event - ) runs on ItsBaseGeoNetworking 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; - } + /** + * @desc Triggers event in the test system adaptation. + * @param p_event The event to trigger + * @return FncRetCode + */ + function f_acTriggerSecEvent( + in template (value) AcSecPrimitive p_event + ) runs on ItsBaseGeoNetworking 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; + } - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsBaseGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acGnssResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** f_acTriggerEvent: ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** f_acTriggerEvent: ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } + /** + * @desc Triggers event in the test system adaptation. + * @param p_event The event to trigger + * @return FncRetCode + */ + function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsBaseGeoNetworking return FncRetCode { + var FncRetCode v_ret := e_success; - return v_ret; + acPort.send(p_event); + tc_ac.start; + alt { + [] acPort.receive(m_acGnssResponseSuccess) { + tc_ac.stop; } - - /** - * @desc Loads the given scenario - * - * @param p_scenario The scenario to load. - */ - function f_acLoadScenario(Scenario p_scenario) runs on ItsBaseGeoNetworking { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_loadScenario(p_scenario)); - } - } // end f_acLoadScenario - - /** - * @desc Starts a loaded scenario - */ - function f_acStartScenario() runs on ItsBaseGeoNetworking { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_startScenario); - vc_scenarioStarted := true; - } - } // end f_acStartScenario - - /** - * @desc Stops a loaded scenario - */ - function f_acStopScenario() runs on ItsBaseGeoNetworking { + [] acPort.receive { + tc_ac.stop; + log("*** f_acTriggerEvent: ERROR: Received unexpected message ***"); + f_selfOrClientSyncAndVerdict("error", e_error); + } + [] tc_ac.timeout { + log("*** f_acTriggerEvent: ERROR: Timeout while waiting for adapter control event result ***"); + f_selfOrClientSyncAndVerdict("error", e_timeout); + } + } - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_stopScenario); - vc_scenarioStarted := false; - } - } // end f_acStopScenario + return v_ret; + } - } // end adapterControl + /** + * @desc Loads the given scenario + * + * @param p_scenario The scenario to load. + */ + function f_acLoadScenario(Scenario p_scenario) runs on ItsBaseGeoNetworking { + + if (PX_GNSS_SCENARIO_SUPPORT==true) { + f_acTriggerGnssEvent(m_loadScenario(p_scenario)); + } + } // end f_acLoadScenario + + /** + * @desc Starts a loaded scenario + */ + function f_acStartScenario() runs on ItsBaseGeoNetworking { + + if (PX_GNSS_SCENARIO_SUPPORT==true) { + f_acTriggerGnssEvent(m_startScenario); + vc_scenarioStarted := true; + } + } // end f_acStartScenario + + /** + * @desc Stops a loaded scenario + */ + function f_acStopScenario() runs on ItsBaseGeoNetworking { + + if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { + f_acTriggerGnssEvent(m_stopScenario); + vc_scenarioStarted := false; + } + } // end f_acStopScenario + + } // end adapterControl - group commonFunctions { - - /** - * @desc Gets the value of the lifetime in seconds. - * @param p_lifetime Lifetime to be converted - * @return Lifetime in seconds - */ - function f_getLifetimeValue(in Lifetime p_lifetime) runs on ItsGeoNetworking return float { - var float v_lifetime := 0.0; + group commonFunctions { + + /** + * @desc Gets the value of the lifetime in seconds. + * @param p_lifetime Lifetime to be converted + * @return Lifetime in seconds + */ + function f_getLifetimeValue(in Lifetime p_lifetime) runs on ItsGeoNetworking return float { + var float v_lifetime := 0.0; - select (p_lifetime.ltBase) { - case (e_50ms) { - v_lifetime := int2float(p_lifetime.multiplier) * 0.5; - } - case (e_1s) { - v_lifetime := int2float(p_lifetime.multiplier) * 1.0; - } - case (e_10s) { - v_lifetime := int2float(p_lifetime.multiplier) * 10.0; - } - case (e_100s) { - v_lifetime := int2float(p_lifetime.multiplier) * 100.0; - } - } + select (p_lifetime.ltBase) { + case (e_50ms) { + v_lifetime := int2float(p_lifetime.multiplier) * 0.5; + } + case (e_1s) { + v_lifetime := int2float(p_lifetime.multiplier) * 1.0; + } + case (e_10s) { + v_lifetime := int2float(p_lifetime.multiplier) * 10.0; + } + case (e_100s) { + v_lifetime := int2float(p_lifetime.multiplier) * 100.0; + } + } - return v_lifetime; - } + return v_lifetime; + } - /** - * @desc Computes GN timestamp based on current time - * @return Unix-Epoch-Time mod 2^32 - */ - function f_computeGnTimestamp() return UInt32 { + /** + * @desc Computes GN timestamp based on current time + * @return Unix-Epoch-Time mod 2^32 + */ + function f_computeGnTimestamp() return UInt32 { - // Timestamp is 1s older than current time to avoid sending beacons coming from the future (time sync between nodes) - var UInt32 v_timestamp := fx_computeGnTimestamp() - 1000; - return v_timestamp; - } + // Timestamp is 1s older than current time to avoid sending beacons coming from the future (time sync between nodes) + var UInt32 v_timestamp := fx_computeGnTimestamp() - 1000; + return v_timestamp; + } - } // end commonFunctions + } // end commonFunctions - group testerFunctions { - - /** - * @desc Gets the tester GN local address for a specific node - * @param p_node Simulated node - * @return GN address of simulated node - */ - function f_getTsGnLocalAddress(in charstring p_node) return GN_Address { - var GN_Address v_gnAddr := valueof(m_dummyGnAddr); - - select (p_node) { - case (c_compNodeA) { - v_gnAddr := PX_TS_NODE_A_LOCAL_GN_ADDR; - } - case (c_compNodeB) { - v_gnAddr := PX_TS_NODE_B_LOCAL_GN_ADDR; - } - case (c_compNodeC) { - v_gnAddr := PX_TS_NODE_C_LOCAL_GN_ADDR; - } - case (c_compNodeD) { - v_gnAddr := PX_TS_NODE_D_LOCAL_GN_ADDR; - } - case (c_compNodeE) { - v_gnAddr := PX_TS_NODE_E_LOCAL_GN_ADDR; - } - case (c_compNodeF) { - v_gnAddr := PX_TS_NODE_F_LOCAL_GN_ADDR; - } - case else { - log("*** f_getTsGnLocalAddress: INFO: Unknown component " & p_node & " ***"); - } - } - - return v_gnAddr; - } + group testerFunctions { + + /** + * @desc Gets the tester GN local address for a specific node + * @param p_node Simulated node + * @return GN address of simulated node + */ + function f_getTsGnLocalAddress(in charstring p_node) return GN_Address { + var GN_Address v_gnAddr := valueof(m_dummyGnAddr); + + select (p_node) { + case (c_compNodeA) { + v_gnAddr := PX_TS_NODE_A_LOCAL_GN_ADDR; + } + case (c_compNodeB) { + v_gnAddr := PX_TS_NODE_B_LOCAL_GN_ADDR; + } + case (c_compNodeC) { + v_gnAddr := PX_TS_NODE_C_LOCAL_GN_ADDR; + } + case (c_compNodeD) { + v_gnAddr := PX_TS_NODE_D_LOCAL_GN_ADDR; + } + case (c_compNodeE) { + v_gnAddr := PX_TS_NODE_E_LOCAL_GN_ADDR; + } + case (c_compNodeF) { + v_gnAddr := PX_TS_NODE_F_LOCAL_GN_ADDR; + } + case else { + log("*** f_getTsGnLocalAddress: INFO: Unknown component " & p_node & " ***"); + } + } + + return v_gnAddr; + } - /** - * @desc Sends a GeoNetworking message and in case of an included sequence number in the message the - * local sequence number will be increased by one. - * @param p_geoNetReq The message to send. - */ - function f_sendGeoNetMessage(in template (value) GeoNetworkingReq p_geoNetReq) runs on ItsGeoNetworking { - geoNetworkingPort.send(p_geoNetReq); - if (not (ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.shbHeader) - or ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.beaconHeader))) { - f_setLocalSequenceNumber(); - } - } + /** + * @desc Sends a GeoNetworking message and in case of an included sequence number in the message the + * local sequence number will be increased by one. + * @param p_geoNetReq The message to send. + */ + function f_sendGeoNetMessage(in template (value) GeoNetworkingReq p_geoNetReq) runs on ItsGeoNetworking { + geoNetworkingPort.send(p_geoNetReq); + if (not (ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.shbHeader) + or ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.beaconHeader))) { + f_setLocalSequenceNumber(); + } + } - /** - * @desc Sends a GeoNetworking message with a payload and in case of an included sequence number in the message the - * local sequence number will be increased by one. - * @param p_geoNetReq The message to send. - * @param p_payload The payload to include. - */ - function f_sendGeoNetMessageWithPayload( - in template (value) GeoNetworkingReq p_geoNetReq, - in template (value) GnRawPayload p_payload - ) runs on ItsGeoNetworking { - p_geoNetReq.msgOut.gnPacket.packet.payload := p_payload; - geoNetworkingPort.send(p_geoNetReq); - if (not (ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.shbHeader) - or ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.beaconHeader))) { - f_setLocalSequenceNumber(); - } - } + /** + * @desc Sends a GeoNetworking message with a payload and in case of an included sequence number in the message the + * local sequence number will be increased by one. + * @param p_geoNetReq The message to send. + * @param p_payload The payload to include. + */ + function f_sendGeoNetMessageWithPayload( + in template (value) GeoNetworkingReq p_geoNetReq, + in template (value) GnRawPayload p_payload + ) runs on ItsGeoNetworking { + p_geoNetReq.msgOut.gnPacket.packet.payload := p_payload; + geoNetworkingPort.send(p_geoNetReq); + if (not (ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.shbHeader) + or ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.beaconHeader))) { + f_setLocalSequenceNumber(); + } + } - /** - * @desc Receive a GeoNetworking message with a payload and in case of an included sequence number in the message the - * local sequence number will be increased by one. - * @param p_geoNetInd The message to receive. - * @param p_payload The payload to include. - */ - function f_receiveGeoNetMessageWithPayload( - in template (present) GeoNetworkingInd p_geoNetInd, - in template (present) GnRawPayload p_payload - ) return template (present) GeoNetworkingInd { - var template (present) GeoNetworkingInd v_geoNetInd := p_geoNetInd; - - v_geoNetInd.msgIn.gnPacket.packet.payload := p_payload; - - return v_geoNetInd; - } + /** + * @desc Receive a GeoNetworking message with a payload and in case of an included sequence number in the message the + * local sequence number will be increased by one. + * @param p_geoNetInd The message to receive. + * @param p_payload The payload to include. + */ + function f_receiveGeoNetMessageWithPayload( + in template (present) GeoNetworkingInd p_geoNetInd, + in template (present) GnRawPayload p_payload + ) return template (present) GeoNetworkingInd { + var template (present) GeoNetworkingInd v_geoNetInd := p_geoNetInd; + + v_geoNetInd.msgIn.gnPacket.packet.payload := p_payload; + + return v_geoNetInd; + } - /** - * @desc Sets the value of the sequence number for the next event. - */ - function f_setLocalSequenceNumber() runs on ItsGeoNetworking { - vc_localSeqNumber := (vc_localSeqNumber + 1) mod c_uInt16Max; - } + /** + * @desc Sets the value of the sequence number for the next event. + */ + function f_setLocalSequenceNumber() runs on ItsGeoNetworking { + vc_localSeqNumber := (vc_localSeqNumber + 1) mod c_uInt16Max; + } - /** - * @desc Creates an initial seqence number - * @return Time based initial sequence number (increasing with time) - */ - function f_getInitialSequenceNumber() return UInt16 { + /** + * @desc Creates an initial seqence number + * @return Time based initial sequence number (increasing with time) + */ + function f_getInitialSequenceNumber() return UInt16 { - return (f_computeGnTimestamp() / 1000) mod c_uInt16Max; - } + return (f_computeGnTimestamp() / 1000) mod c_uInt16Max; + } - /** - * @desc Number of messages to be sent - * @return Number of messages to be sent - */ - function f_getMessageCount() return integer { - return PX_MESSAGE_COUNT; - } + /** + * @desc Number of messages to be sent + * @return Number of messages to be sent + */ + function f_getMessageCount() return integer { + return PX_MESSAGE_COUNT; + } - } // end testerFunctions + } // end testerFunctions - group iutFunctions { + group iutFunctions { - /** - * @desc Gets the IUT GN local address - * @return IUT's GN_Address - * @see PICS_GN_LOCAL_GN_ADDR - */ - function f_getIutGnLocalAddress() return GN_Address { + /** + * @desc Gets the IUT GN local address + * @return IUT's GN_Address + * @see PICS_GN_LOCAL_GN_ADDR + */ + function f_getIutGnLocalAddress() return GN_Address { - return PICS_GN_LOCAL_GN_ADDR; - } + return PICS_GN_LOCAL_GN_ADDR; + } - /** - * @desc Gets the IUT GN local address configuration method - * @return GnAddressConfigurationMethod - IUT's GN local address configuration method - * @see PICS_GN_LOCAL_ADDR_CONF_METHOD - */ - function f_getIutGnLocalAddressConfigurationMethod() return GnAddressConfigurationMethod { - return PICS_GN_LOCAL_ADDR_CONF_METHOD; - } + /** + * @desc Gets the IUT GN local address configuration method + * @return GnAddressConfigurationMethod - IUT's GN local address configuration method + * @see PICS_GN_LOCAL_ADDR_CONF_METHOD + */ + function f_getIutGnLocalAddressConfigurationMethod() return GnAddressConfigurationMethod { + return PICS_GN_LOCAL_ADDR_CONF_METHOD; + } - /** - * @desc Gets the IUT MAc address - * @return MacAddress - IUT's MAc Address - * @see PICS_IUT_MAC_ADDRESS - */ - function f_getIutMacAddress() return MacAddress { - return PICS_IUT_MAC_ADDRESS; - } + /** + * @desc Gets the IUT MAc address + * @return MacAddress - IUT's MAc Address + * @see PICS_IUT_MAC_ADDRESS + */ + function f_getIutMacAddress() return MacAddress { + return PICS_IUT_MAC_ADDRESS; + } - /** - * @desc Gets the GeoUnicast forwarding algorithm - * @return IUT's GeoUnicast forwarding algorithm - * @see PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM - */ - function f_getGeoUnicastForwardingAlgorithm() return GeoUnicastForwardingAlgorithm { - return PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM; - } + /** + * @desc Gets the GeoUnicast forwarding algorithm + * @return IUT's GeoUnicast forwarding algorithm + * @see PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM + */ + function f_getGeoUnicastForwardingAlgorithm() return GeoUnicastForwardingAlgorithm { + return PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM; + } - /** - * @desc Gets the GeoBroadcast forwarding algorithm - * @return IUT's GeoBroadcast forwarding algorithm - * @see PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM - */ - function f_getGeoBroadcastForwardingAlgorithm() return GeoBroadcastForwardingAlgorithm { - return PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM; - } + /** + * @desc Gets the GeoBroadcast forwarding algorithm + * @return IUT's GeoBroadcast forwarding algorithm + * @see PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM + */ + function f_getGeoBroadcastForwardingAlgorithm() return GeoBroadcastForwardingAlgorithm { + return PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM; + } - /** - * @desc Gets the IUT default hop limit - * @return IUT's default hop limit - * @see PICS_GN_DEFAULT_HOP_LIMIT - */ - function f_getDefaultHopLimit() return UInt8 { - return PICS_GN_DEFAULT_HOP_LIMIT; - } + /** + * @desc Gets the IUT default hop limit + * @return IUT's default hop limit + * @see PICS_GN_DEFAULT_HOP_LIMIT + */ + function f_getDefaultHopLimit() return UInt8 { + return PICS_GN_DEFAULT_HOP_LIMIT; + } - /** - * @desc Is the ITS-S mobile or stationary? - * @return Flags indicating whether the ITS-S is mobile or stationary. - * @see PICS_GN_IS_MOBILE - */ - function f_isMobile() return Bit8 { - if (PICS_GN_IS_MOBILE) { - return '10000000'B; - } - return '00000000'B; - } + /** + * @desc Is the ITS-S mobile or stationary? + * @return Flags indicating whether the ITS-S is mobile or stationary. + * @see PICS_GN_IS_MOBILE + */ + function f_isMobile() return Bit8 { + if (PICS_GN_IS_MOBILE) { + return '10000000'B; + } + return '00000000'B; + } - /** - * @desc Gets the LS retransmission timer.. Valid for NetRepInterval = default (cong. ctrl). - * @return LS retransmission timer in seconds - * @see PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER - */ - function f_getLsRetransmitTimer() return float { - var float v_itsGnLocationServiceRetransmitTimer := int2float(PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER/1000); + /** + * @desc Gets the LS retransmission timer.. Valid for NetRepInterval = default (cong. ctrl). + * @return LS retransmission timer in seconds + * @see PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER + */ + function f_getLsRetransmitTimer() return float { + var float v_itsGnLocationServiceRetransmitTimer := int2float(PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER/1000); - return v_itsGnLocationServiceRetransmitTimer; - } + return v_itsGnLocationServiceRetransmitTimer; + } - /** - * @desc Gets the LS retransmission timer for NetRepInterval = medium (cong. ctrl). - * @return LS retransmission timer (medium) in seconds - * @see PX_GN_LOCATION_SERVICE_TIMER_MEDIUM - */ - function f_getLsRetransmitTimerMedium() return float { - var float v_itsGnLocationServiceRetransmitTimerMedium := int2float(PX_GN_LOCATION_SERVICE_TIMER_MEDIUM/1000); + /** + * @desc Gets the LS retransmission timer for NetRepInterval = medium (cong. ctrl). + * @return LS retransmission timer (medium) in seconds + * @see PX_GN_LOCATION_SERVICE_TIMER_MEDIUM + */ + function f_getLsRetransmitTimerMedium() return float { + var float v_itsGnLocationServiceRetransmitTimerMedium := int2float(PX_GN_LOCATION_SERVICE_TIMER_MEDIUM/1000); - return v_itsGnLocationServiceRetransmitTimerMedium; - } + return v_itsGnLocationServiceRetransmitTimerMedium; + } - /** - * @desc Gets the LS retransmission timer for NetRepInterval = maximum (cong. ctrl). - * @return LS retransmission timer (maximum) in seconds - * @see PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM - */ - function f_getLsRetransmitTimerMaximum() return float { - var float v_itsGnLocationServiceRetransmitTimerMaximum := int2float(PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM/1000); + /** + * @desc Gets the LS retransmission timer for NetRepInterval = maximum (cong. ctrl). + * @return LS retransmission timer (maximum) in seconds + * @see PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM + */ + function f_getLsRetransmitTimerMaximum() return float { + var float v_itsGnLocationServiceRetransmitTimerMaximum := int2float(PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM/1000); - return v_itsGnLocationServiceRetransmitTimerMaximum; - } + return v_itsGnLocationServiceRetransmitTimerMaximum; + } - /** - * @desc Gets the App retransmission timer. Valid for AppRepInterval = default (cong. ctrl). - * @return App retransmission timer in seconds - * @see PX_GN_APPLICATION_RETRANSMIT_TIMER - */ - function f_getAppRetransmitTimer() return float { - var float v_itsGnLocationApplicationRetransmitTimer := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER/1000); + /** + * @desc Gets the App retransmission timer. Valid for AppRepInterval = default (cong. ctrl). + * @return App retransmission timer in seconds + * @see PX_GN_APPLICATION_RETRANSMIT_TIMER + */ + function f_getAppRetransmitTimer() return float { + var float v_itsGnLocationApplicationRetransmitTimer := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER/1000); - return v_itsGnLocationApplicationRetransmitTimer; - } + return v_itsGnLocationApplicationRetransmitTimer; + } - /** - * @desc Gets the App retransmission timer for AppRepInterval = medium (cong. ctrl). - * @return App retransmission timer (medium) in seconds - * @see PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM - */ - function f_getAppRetransmitTimerMedium() return float { - var float v_itsGnLocationApplicationRetransmitTimerMedium := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM/1000); + /** + * @desc Gets the App retransmission timer for AppRepInterval = medium (cong. ctrl). + * @return App retransmission timer (medium) in seconds + * @see PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM + */ + function f_getAppRetransmitTimerMedium() return float { + var float v_itsGnLocationApplicationRetransmitTimerMedium := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM/1000); - return v_itsGnLocationApplicationRetransmitTimerMedium; - } + return v_itsGnLocationApplicationRetransmitTimerMedium; + } - /** - * @desc Gets the App retransmission timer for AppRepInterval = maximum (cong. ctrl). - * @return App retransmission timer (maximum) in seconds - * @see PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM - */ - function f_getAppRetransmitTimerMaximum() return float { - var float v_itsGnLocationApplicationRetransmitTimerMaximum := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM/1000); + /** + * @desc Gets the App retransmission timer for AppRepInterval = maximum (cong. ctrl). + * @return App retransmission timer (maximum) in seconds + * @see PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM + */ + function f_getAppRetransmitTimerMaximum() return float { + var float v_itsGnLocationApplicationRetransmitTimerMaximum := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM/1000); - return v_itsGnLocationApplicationRetransmitTimerMaximum; - } + return v_itsGnLocationApplicationRetransmitTimerMaximum; + } - /** - * @desc Gets the LS maximum retransmission number. - * @return LS maximum retransmission number - * @see PICS_GN_LOCATION_SERVICE_MAX_RETRANS - */ - function f_getLsMaxRetrans() return integer { - var integer v_itsGnLocationServiceMaxRetrans := PICS_GN_LOCATION_SERVICE_MAX_RETRANS; + /** + * @desc Gets the LS maximum retransmission number. + * @return LS maximum retransmission number + * @see PICS_GN_LOCATION_SERVICE_MAX_RETRANS + */ + function f_getLsMaxRetrans() return integer { + var integer v_itsGnLocationServiceMaxRetrans := PICS_GN_LOCATION_SERVICE_MAX_RETRANS; - return v_itsGnLocationServiceMaxRetrans; - } + return v_itsGnLocationServiceMaxRetrans; + } - /** - * @desc Gets the Application maximum retransmission number. - * @return Application maximum retransmission number - * @see PX_GN_APPLICATION_MAX_RETRANS - */ - function f_getAppMaxRetrans() return integer { - var integer v_itsGnApplicationMaxRetrans := PX_GN_APPLICATION_MAX_RETRANS; + /** + * @desc Gets the Application maximum retransmission number. + * @return Application maximum retransmission number + * @see PX_GN_APPLICATION_MAX_RETRANS + */ + function f_getAppMaxRetrans() return integer { + var integer v_itsGnApplicationMaxRetrans := PX_GN_APPLICATION_MAX_RETRANS; - return v_itsGnApplicationMaxRetrans; - } + return v_itsGnApplicationMaxRetrans; + } - /** - * @desc Gets the Location Service packet buffer size. - * @return Location Service packet buffer size in Kbytes - * @see PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE - */ - function f_getLsPacketBufferSize() return integer { - var integer v_itsGnLocationServicePacketBufferSize := PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE; - - return v_itsGnLocationServicePacketBufferSize; - } // end f_getLsPacketBufferSize - - /** - * @desc Gets the UC forwarding packet buffer size. - * @return UC forwarding packet buffer size in bytes - * @see PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE - */ - function f_getUcForwardingPacketBufferSize() return integer { - var integer v_itsGnUcForwardingPacketBufferSize := PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE; - - return v_itsGnUcForwardingPacketBufferSize * 1024; - } // end f_getUcForwardingPacketBufferSize - - /** - * @desc Gets the BC forwarding packet buffer size. - * @return BC forwarding packet buffer size in bytes - * @see PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE - */ - function f_getBcForwardingPacketBufferSize() return integer { - var integer v_itsGnBcForwardingPacketBufferSize := PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE; - - return v_itsGnBcForwardingPacketBufferSize * 1024; - } // end f_getBcForwardingPacketBufferSize - - /** - * @desc Gets the maximum lifetime of a packet. - * @return Maximum lifetime of a packet in seconds - * @see PICS_GN_MAX_PACKET_LIFETIME - */ - function f_getMaxPacketLifeTime() return float { - var float v_itsGnMaxPacketLifetime := int2float(PICS_GN_MAX_PACKET_LIFETIME); - - return v_itsGnMaxPacketLifetime; - } + /** + * @desc Gets the Location Service packet buffer size. + * @return Location Service packet buffer size in Kbytes + * @see PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE + */ + function f_getLsPacketBufferSize() return integer { + var integer v_itsGnLocationServicePacketBufferSize := PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE; + + return v_itsGnLocationServicePacketBufferSize; + } // end f_getLsPacketBufferSize + + /** + * @desc Gets the UC forwarding packet buffer size. + * @return UC forwarding packet buffer size in bytes + * @see PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE + */ + function f_getUcForwardingPacketBufferSize() return integer { + var integer v_itsGnUcForwardingPacketBufferSize := PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE; + + return v_itsGnUcForwardingPacketBufferSize * 1024; + } // end f_getUcForwardingPacketBufferSize + + /** + * @desc Gets the BC forwarding packet buffer size. + * @return BC forwarding packet buffer size in bytes + * @see PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE + */ + function f_getBcForwardingPacketBufferSize() return integer { + var integer v_itsGnBcForwardingPacketBufferSize := PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE; + + return v_itsGnBcForwardingPacketBufferSize * 1024; + } // end f_getBcForwardingPacketBufferSize + + /** + * @desc Gets the maximum lifetime of a packet. + * @return Maximum lifetime of a packet in seconds + * @see PICS_GN_MAX_PACKET_LIFETIME + */ + function f_getMaxPacketLifeTime() return float { + var float v_itsGnMaxPacketLifetime := int2float(PICS_GN_MAX_PACKET_LIFETIME); + + return v_itsGnMaxPacketLifetime; + } - /** - * @desc Gets delta for timers. - * @return Delta for timers in seconds - * @see PX_T_DELTA - */ - function f_getDeltaTimer() return float { - var float v_deltaTimer := PX_T_DELTA; + /** + * @desc Gets delta for timers. + * @return Delta for timers in seconds + * @see PX_T_DELTA + */ + function f_getDeltaTimer() return float { + var float v_deltaTimer := PX_T_DELTA; - return v_deltaTimer; - } + return v_deltaTimer; + } - /** - * @desc Gets the beacon service retransmit timer. - * @return Beacon service retransmit timer - */ - function f_getBsRetransmitTimer() return float { - var float v_itsGnBeaconServiceRetransmitTimer; + /** + * @desc Gets the beacon service retransmit timer. + * @return Beacon service retransmit timer + */ + function f_getBsRetransmitTimer() return float { + var float v_itsGnBeaconServiceRetransmitTimer; - v_itsGnBeaconServiceRetransmitTimer := int2float( - (PICS_GN_BEACON_SERVICE_RETRANSMIT_TIMER/1000)); + v_itsGnBeaconServiceRetransmitTimer := int2float( + (PICS_GN_BEACON_SERVICE_RETRANSMIT_TIMER/1000)); - return v_itsGnBeaconServiceRetransmitTimer; - } + return v_itsGnBeaconServiceRetransmitTimer; + } - /** - * @desc Gets the beacon service retransmit timer for NetBeaconInterval = medium (cong. ctrl). - * @return Beacon service retransmit timer (medium) - */ - function f_getBsRetransmitTimerMedium() return float { - var float v_itsGnBeaconServiceRetransmitTimerMedium; // timer value increased (medium) + /** + * @desc Gets the beacon service retransmit timer for NetBeaconInterval = medium (cong. ctrl). + * @return Beacon service retransmit timer (medium) + */ + function f_getBsRetransmitTimerMedium() return float { + var float v_itsGnBeaconServiceRetransmitTimerMedium; // timer value increased (medium) - v_itsGnBeaconServiceRetransmitTimerMedium := int2float( - (PX_GN_BEACON_SERVICE_TIMER_MEDIUM+float2int((f_getBsMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000); + v_itsGnBeaconServiceRetransmitTimerMedium := int2float( + (PX_GN_BEACON_SERVICE_TIMER_MEDIUM+float2int((f_getBsMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000); - return v_itsGnBeaconServiceRetransmitTimerMedium; - } + return v_itsGnBeaconServiceRetransmitTimerMedium; + } - /** - * @desc Gets the beacon service retransmit timer for NetBeaconInterval = maximum (cong. ctrl). - * @return Beacon service retransmit timer (maximum) - */ - function f_getBsRetransmitTimerMaximum() return float { - var float v_itsGnBeaconServiceRetransmitTimerMaximum; // timer value increased (maximum) + /** + * @desc Gets the beacon service retransmit timer for NetBeaconInterval = maximum (cong. ctrl). + * @return Beacon service retransmit timer (maximum) + */ + function f_getBsRetransmitTimerMaximum() return float { + var float v_itsGnBeaconServiceRetransmitTimerMaximum; // timer value increased (maximum) - v_itsGnBeaconServiceRetransmitTimerMaximum := int2float( - (PX_GN_BEACON_SERVICE_TIMER_MAXIMUM+float2int((f_getBsMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000); + v_itsGnBeaconServiceRetransmitTimerMaximum := int2float( + (PX_GN_BEACON_SERVICE_TIMER_MAXIMUM+float2int((f_getBsMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000); - return v_itsGnBeaconServiceRetransmitTimerMaximum; - } + return v_itsGnBeaconServiceRetransmitTimerMaximum; + } - /** - * @desc Gets the maximum beacon service jitter. - * @return Maximum beacon service jitter - */ - function f_getBsMaxJitter() return float { - var float v_itsGnBeaconServiceMaxJitter := int2float(PICS_GN_BEACON_SERVICE_MAX_JITTER)/1000.0; + /** + * @desc Gets the maximum beacon service jitter. + * @return Maximum beacon service jitter + */ + function f_getBsMaxJitter() return float { + var float v_itsGnBeaconServiceMaxJitter := int2float(PICS_GN_BEACON_SERVICE_MAX_JITTER)/1000.0; - return v_itsGnBeaconServiceMaxJitter; - } + return v_itsGnBeaconServiceMaxJitter; + } - /** - * @desc Gets the Lifetime of a Location Table Entry. - * @return Lifetime of a Location Table Entry in seconds - * @see PICS_GN_LIFETIME_LOC_TE - */ - function f_getLifetimeLocTableEntry() return float { - var float v_itsGnLifetimeLocTableEntry := int2float(PICS_GN_LIFETIME_LOC_TE); + /** + * @desc Gets the Lifetime of a Location Table Entry. + * @return Lifetime of a Location Table Entry in seconds + * @see PICS_GN_LIFETIME_LOC_TE + */ + function f_getLifetimeLocTableEntry() return float { + var float v_itsGnLifetimeLocTableEntry := int2float(PICS_GN_LIFETIME_LOC_TE); - return v_itsGnLifetimeLocTableEntry; - } // end f_getLifetimeLocTableEntry + return v_itsGnLifetimeLocTableEntry; + } // end f_getLifetimeLocTableEntry - /** - * @desc Gets the maximum communication range for CBF algorithm - * @return Maximum communication range for CBF algorithm in meters - * @see PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE - */ - function f_getCbfMaxCommunicationRange() return integer { - var integer v_maxCommunicationRange := PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE; + /** + * @desc Gets the maximum communication range for CBF algorithm + * @return Maximum communication range for CBF algorithm in meters + * @see PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE + */ + function f_getCbfMaxCommunicationRange() return integer { + var integer v_maxCommunicationRange := PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE; - return v_maxCommunicationRange; - } // end f_getCbfMaxCommunicationRange + return v_maxCommunicationRange; + } // end f_getCbfMaxCommunicationRange - function f_getGeoUnicastCbfMaxTime() return integer { - var integer v_cbfMaxTime := PICS_GN_GEOUNICAST_CBF_MAX_TIME; + function f_getGeoUnicastCbfMaxTime() return integer { + var integer v_cbfMaxTime := PICS_GN_GEOUNICAST_CBF_MAX_TIME; - return v_cbfMaxTime; - } // end f_getGeoUnicastCbfMaxTime + return v_cbfMaxTime; + } // end f_getGeoUnicastCbfMaxTime - function f_getGeoUnicastCbfMinTime() return integer { - var integer v_cbfMinTime := PICS_GN_GEOUNICAST_CBF_MIN_TIME; + function f_getGeoUnicastCbfMinTime() return integer { + var integer v_cbfMinTime := PICS_GN_GEOUNICAST_CBF_MIN_TIME; - return v_cbfMinTime; - } // end f_getGeoUnicastCbfMinTime + return v_cbfMinTime; + } // end f_getGeoUnicastCbfMinTime - function f_getGeoBroadcastCbfMaxTime() return integer { - var integer v_cbfMaxTime := PICS_GN_GEOBROADCAST_CBF_MAX_TIME; + function f_getGeoBroadcastCbfMaxTime() return integer { + var integer v_cbfMaxTime := PICS_GN_GEOBROADCAST_CBF_MAX_TIME; - return v_cbfMaxTime; - } // end f_getGeoBroadcastCbfMaxTime + return v_cbfMaxTime; + } // end f_getGeoBroadcastCbfMaxTime - function f_getGeoBroadcastCbfMinTime() return integer { - var integer v_cbfMinTime := PICS_GN_GEOBROADCAST_CBF_MIN_TIME; + function f_getGeoBroadcastCbfMinTime() return integer { + var integer v_cbfMinTime := PICS_GN_GEOBROADCAST_CBF_MIN_TIME; - return v_cbfMinTime; - } // end f_getGeoBroadcastCbfMinTime + return v_cbfMinTime; + } // end f_getGeoBroadcastCbfMinTime - function f_getGnMaxAreaSize() return float { - var float v_maxAreaSize := PICS_GN_MAX_GEO_AREA_SIZE; + function f_getGnMaxAreaSize() return float { + var float v_maxAreaSize := PICS_GN_MAX_GEO_AREA_SIZE; - return v_maxAreaSize; - } // end f_getGnMaxAreaSize + return v_maxAreaSize; + } // end f_getGnMaxAreaSize - function f_getAdvancedGbcForwardingMaxCounter() return integer { - var integer v_maxCounter := PICS_GN_ADVANCED_BC_FORWARDING_MAX_COUNTER; + function f_getAdvancedGbcForwardingMaxCounter() return integer { + var integer v_maxCounter := PICS_GN_ADVANCED_BC_FORWARDING_MAX_COUNTER; - return v_maxCounter; - } + return v_maxCounter; + } - /** - * @desc Set the number of neighbour in the Location Table. - * @see PX_MIN_NR_NEIGHBOUR - */ - function f_setNrNeighbourLocTableDefault() runs on ItsGeoNetworking { - var integer v_nrNeighbour := f_random (0, PX_MIN_NR_NEIGHBOUR); + /** + * @desc Set the number of neighbour in the Location Table. + * @see PX_MIN_NR_NEIGHBOUR + */ + function f_setNrNeighbourLocTableDefault() runs on ItsGeoNetworking { + var integer v_nrNeighbour := f_random (0, PX_MIN_NR_NEIGHBOUR); - f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); + f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); - } // end f_setNrNeighbourLocTableDefault + } // end f_setNrNeighbourLocTableDefault - /** - * @desc Set the number of neighbour in the Location Table (medium). - * @see PX_MIN_NR_NEIGHBOUR - * @see PX_MAX_NR_NEIGHBOUR - */ - function f_setNrNeighbourLocTableMedium() runs on ItsGeoNetworking { - var integer v_nrNeighbour := f_random (PX_MIN_NR_NEIGHBOUR, PX_MAX_NR_NEIGHBOUR); + /** + * @desc Set the number of neighbour in the Location Table (medium). + * @see PX_MIN_NR_NEIGHBOUR + * @see PX_MAX_NR_NEIGHBOUR + */ + function f_setNrNeighbourLocTableMedium() runs on ItsGeoNetworking { + var integer v_nrNeighbour := f_random (PX_MIN_NR_NEIGHBOUR, PX_MAX_NR_NEIGHBOUR); - f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); + f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); - } // end f_setNrNeighbourLocTableMedium + } // end f_setNrNeighbourLocTableMedium - /** - * @desc Set the number of neighbour in the Location Table (maximum). - * @see PX_MAX_NR_NEIGHBOUR - * @see PX_MIN_NR_NEIGHBOUR - */ - function f_setNrNeighbourLocTableMaximum() runs on ItsGeoNetworking { - var integer v_nrNeighbour := f_random (PX_MAX_NR_NEIGHBOUR, (2*PX_MIN_NR_NEIGHBOUR)); + /** + * @desc Set the number of neighbour in the Location Table (maximum). + * @see PX_MAX_NR_NEIGHBOUR + * @see PX_MIN_NR_NEIGHBOUR + */ + function f_setNrNeighbourLocTableMaximum() runs on ItsGeoNetworking { + var integer v_nrNeighbour := f_random (PX_MAX_NR_NEIGHBOUR, (2*PX_MIN_NR_NEIGHBOUR)); - f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); + f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); - } // end f_setNrNeighbourLocTableMaximum + } // end f_setNrNeighbourLocTableMaximum - } // end iutFunctions + } // end iutFunctions - group posVectorFunctions { - - /** - * @desc Convert long position vector to short position vector - * @param p_longPosVector Long position vector to be converted - * @return Short position vector - */ - function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { - var ShortPosVector v_shortPosVector; - - v_shortPosVector := { - gnAddr := p_longPosVector.gnAddr, - timestamp_ := p_longPosVector.timestamp_, - latitude := p_longPosVector.latitude, - longitude := p_longPosVector.longitude - }; - - return v_shortPosVector; - } + group posVectorFunctions { + + /** + * @desc Convert long position vector to short position vector + * @param p_longPosVector Long position vector to be converted + * @return Short position vector + */ + function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { + var ShortPosVector v_shortPosVector; + + v_shortPosVector := { + gnAddr := p_longPosVector.gnAddr, + timestamp_ := p_longPosVector.timestamp_, + latitude := p_longPosVector.latitude, + longitude := p_longPosVector.longitude + }; + + return v_shortPosVector; + } - /** - * @desc Get IUT's long position vector - * @return IUT's long position vector - */ - function f_getIutLongPosVector() runs on ItsBaseGeoNetworking return LongPosVector { - return f_acGetLongPosVector(f_getIutGnLocalAddress()); - } + /** + * @desc Get IUT's long position vector + * @return IUT's long position vector + */ + function f_getIutLongPosVector() runs on ItsBaseGeoNetworking return LongPosVector { + return f_acGetLongPosVector(f_getIutGnLocalAddress()); + } - /** - * @desc Get IUT's short position vector - * @return IUT's short position vector - */ - function f_getIutShortPosVector() runs on ItsGeoNetworking return ShortPosVector { - var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut); - - if (not isbound(v_longPosVectorIut)) { - v_longPosVectorIut := f_getIutLongPosVector(); - } - return f_longPosVector2ShortPosVector(v_longPosVectorIut); - } + /** + * @desc Get IUT's short position vector + * @return IUT's short position vector + */ + function f_getIutShortPosVector() runs on ItsGeoNetworking return ShortPosVector { + var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut); + + if (not isbound(v_longPosVectorIut)) { + v_longPosVectorIut := f_getIutLongPosVector(); + } + return f_longPosVector2ShortPosVector(v_longPosVectorIut); + } - /** - * @desc Compute a position using a reference position, a distance and an orientation - * @param p_iutLongPosVector Reference position - * @param p_distance Distance to the reference position (in meter) - * @param p_orientation direction of the computed position (0 to 359; 0 means North) - * @return LongPosVector - */ - function f_computePositionUsingDistance(in LongPosVector p_iutLongPosVector, in float p_distance, in integer p_orientation) - return LongPosVector { - var LongPosVector v_result := p_iutLongPosVector; - - log("*** f_computePositionUsingDistance: INFO: calling fx_computePositionUsingDistance() ***"); - fx_computePositionUsingDistance(p_iutLongPosVector.latitude, p_iutLongPosVector.longitude, p_distance, p_orientation, v_result.latitude, v_result.longitude); - - return v_result; - } + /** + * @desc Compute a position using a reference position, a distance and an orientation + * @param p_iutLongPosVector Reference position + * @param p_distance Distance to the reference position (in meter) + * @param p_orientation direction of the computed position (0 to 359; 0 means North) + * @return LongPosVector + */ + function f_computePositionUsingDistance(in LongPosVector p_iutLongPosVector, in float p_distance, in integer p_orientation) + return LongPosVector { + var LongPosVector v_result := p_iutLongPosVector; + + log("*** f_computePositionUsingDistance: INFO: calling fx_computePositionUsingDistance() ***"); + fx_computePositionUsingDistance(p_iutLongPosVector.latitude, p_iutLongPosVector.longitude, p_distance, p_orientation, v_result.latitude, v_result.longitude); + + return v_result; + } - } // end posVectorFunctions + } // end posVectorFunctions - group externalFunctions { + group externalFunctions { - /** - * @desc External function to compute timestamp based on current time - * @return Unix-Epoch-Time mod 2^32 - */ - external function fx_computeGnTimestamp() return UInt32; + /** + * @desc External function to compute timestamp based on current time + * @return Unix-Epoch-Time mod 2^32 + */ + external function fx_computeGnTimestamp() return UInt32; - } // End of group externalFunctions + } // End of group externalFunctions - group security { - - /** - * @desc Waiting for the GN message with Security - * @param p_InSecMsg SecurityMessage template - * @param p_received returns received SecurityMessage - */ - altstep a_securedMessage ( - in template (present) SecuredMessage p_InSecMsg, - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - var GeoNetworkingInd v_geoNw; - [] geoNetworkingPort.receive(mw_geoNwInd( - mw_geoNwSecPdu( - p_InSecMsg, - mw_geoNwAnyPacket_withPayload(?) -//FIXME RGY Titan doesn't support storing list at the moment -// ))) -> value (v_geoNw) { - ))) -> value v_geoNw { - p_received := f_getSecuredMessage(v_geoNw.msgIn); - } - } + group security { + + /** + * @desc Waiting for the GN message with Security + * @param p_InSecMsg SecurityMessage template + * @param p_received returns received SecurityMessage + */ + altstep a_securedMessage ( + in template (present) SecuredMessage p_InSecMsg, + out SecuredMessage p_received + ) runs on ItsGeoNetworking { + var GeoNetworkingInd v_geoNw; + [] geoNetworkingPort.receive(mw_geoNwInd( + mw_geoNwSecPdu( + p_InSecMsg, + mw_geoNwAnyPacket_withPayload(?) + //FIXME RGY Titan doesn't support storing list at the moment + // ))) -> value (v_geoNw) { + ))) -> value v_geoNw { + p_received := f_getSecuredMessage(v_geoNw.msgIn); + } + } - /** - * @desc Receive GN message with security containing certificate as a signer info - * @param p_cert returns the certificate used for sign received message - */ - altstep a_securedMessageWithCertificate( - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - - [] a_securedMessage ( - mdw_securedMessage (superset(mw_header_field_signer_info_certificate)), - p_received - ) { - // Nothing to do - } - } // End of altstep a_securedMessageWithCertificate + /** + * @desc Receive GN message with security containing certificate as a signer info + * @param p_cert returns the certificate used for sign received message + */ + altstep a_securedMessageWithCertificate( + out SecuredMessage p_received + ) runs on ItsGeoNetworking { + + [] a_securedMessage ( + mdw_securedMessage (superset(mw_header_field_signer_info_certificate)), + p_received + ) { + // Nothing to do + } + } // End of altstep a_securedMessageWithCertificate - /** - * @desc Receive GN message with security containing certificate chain as a signer info - * @param p_cert returns the certificate used for sign received message - */ - altstep a_securedMessageWithCertificateChain( - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - [] a_securedMessage ( - mdw_securedMessage( - superset( - mw_header_field_signer_info_certificate_chain - )), - p_received - ) { - // Nothing to do - } - } // End of altstep a_securedMessageWithCertificateChain - - /** - * @desc Receive GN message with security containing digest as a signer info - * @param p_cert returns the certificate used for sign received message - */ - altstep a_securedMessageWithDigest( - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - [] a_securedMessage ( - mdw_securedMessage ( - superset( - mw_header_field_signer_info_digest - )), - p_received - ) { - // Nothing to do - } - } // End of altstep a_securedMessageWithDigest - - } // End of group altSteps + /** + * @desc Receive GN message with security containing certificate chain as a signer info + * @param p_cert returns the certificate used for sign received message + */ + altstep a_securedMessageWithCertificateChain( + out SecuredMessage p_received + ) runs on ItsGeoNetworking { + [] a_securedMessage ( + mdw_securedMessage( + superset( + mw_header_field_signer_info_certificate_chain + )), + p_received + ) { + // Nothing to do + } + } // End of altstep a_securedMessageWithCertificateChain + + /** + * @desc Receive GN message with security containing digest as a signer info + * @param p_cert returns the certificate used for sign received message + */ + altstep a_securedMessageWithDigest( + out SecuredMessage p_received + ) runs on ItsGeoNetworking { + [] a_securedMessage ( + mdw_securedMessage ( + superset( + mw_header_field_signer_info_digest + )), + p_received + ) { + // Nothing to do + } + } // End of altstep a_securedMessageWithDigest + + } // End of group altSteps - group waitingHelpers { - - /** - * @desc Wait for GN message with security containing certificate as a signer info - * @return the certificate used for sign received message - */ - function f_waitForCertificate( - out Certificate p_cert - ) runs on ItsGeoNetworking return boolean { - var SecuredMessage v_recv; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithCertificate(v_recv) { - var SignerInfo v_si; + group waitingHelpers { + + /** + * @desc Wait for GN message with security containing certificate as a signer info + * @return the certificate used for sign received message + */ + function f_waitForCertificate( + out Certificate p_cert + ) runs on ItsGeoNetworking return boolean { + var SecuredMessage v_recv; + var boolean v_ret := false; + + alt { + [] a_securedMessageWithCertificate(v_recv) { + var SignerInfo v_si; - if (f_getMsgSignerInfo(v_recv, v_si) == true) { - if (ischosen(v_si.signerInfo.certificate)) { - p_cert := v_si.signerInfo.certificate; - v_ret := true; - } - } - } - } // End of 'alt' statement - - return v_ret; - } // End of function f_waitForCertificate - - /** - * @desc Wait for GN message with security containing certificate chain as a signer info - * @return the certificate used for sign received message - */ - function f_waitForCertificateChain (out CertificateChain p_chain) - runs on ItsGeoNetworking - return boolean { - var SecuredMessage v_recv; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithCertificateChain(v_recv) { - var SignerInfo v_si; - if(f_getMsgSignerInfo(v_recv, v_si)) { - p_chain := v_si.signerInfo.certificates; - v_ret := true; - } - } - } - return v_ret; - } + if (f_getMsgSignerInfo(v_recv, v_si) == true) { + if (ischosen(v_si.signerInfo.certificate)) { + p_cert := v_si.signerInfo.certificate; + v_ret := true; + } + } + } + } // End of 'alt' statement + + return v_ret; + } // End of function f_waitForCertificate + + /** + * @desc Wait for GN message with security containing certificate chain as a signer info + * @return the certificate used for sign received message + */ + function f_waitForCertificateChain (out CertificateChain p_chain) + runs on ItsGeoNetworking + return boolean { + var SecuredMessage v_recv; + var boolean v_ret := false; + + alt { + [] a_securedMessageWithCertificateChain(v_recv) { + var SignerInfo v_si; + if(f_getMsgSignerInfo(v_recv, v_si)) { + p_chain := v_si.signerInfo.certificates; + v_ret := true; + } + } + } + return v_ret; + } - /** - * @desc Ask for the certificate chain and wait for GN message with security containing certificate chain as a signer info - * @return the certificate chain used for sign received message - */ - function f_askForCertificateChain (in template(value) octetstring p_CamPayload) - runs on ItsGeoNetworking - return boolean { - var SecuredMessage v_recv; - var SignerInfo v_si; - var boolean v_ret := false; - alt { - [] a_securedMessageWithCertificate(v_recv) { - if(f_getMsgSignerInfo(v_recv, v_si)) { - if(f_getCertificateSignerInfo(v_si.signerInfo.certificate, v_si)) { - if(v_si.type_ == e_certificate_digest_with_sha256) { - f_sendCertificateRequest(v_si.signerInfo.digest, p_CamPayload); - if(tc_ac.running) { - tc_ac.stop;tc_ac.start; - } - v_ret := true; - } - } - } - } - } - return v_ret; - } - /** - * @desc Ask for the certificate chain and wait for GN message with security containing certificate chain as a signer info - * @return the certificate chain used for sign received message - */ - function f_askAndWaitForCertificateChain( - out CertificateChain p_chain, - in template(value) octetstring p_CamPayload - ) runs on ItsGeoNetworking return boolean { - // Local variables - var SecuredMessage v_recv; - var SignerInfo v_si; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithCertificate(v_recv) { - tc_ac.stop; - if(f_getMsgSignerInfo(v_recv, v_si)) { - if(f_getCertificateSignerInfo(v_si.signerInfo.certificate, v_si)) { - if(v_si.type_ == e_certificate_digest_with_sha256) { - f_sendCertificateRequest(v_si.signerInfo.digest, p_CamPayload); - tc_ac.start; - repeat; - } - } - } - } - [] a_securedMessageWithCertificateChain(v_recv) { - tc_ac.stop; - if(f_getMsgSignerInfo(v_recv, v_si) == true) { - p_chain := v_si.signerInfo.certificates; - v_ret := true; - } - } - } // End of 'alt' statement - - return v_ret; - } // End of function f_askAndWaitForCertificateChain - - /** - * @desc Wait for GN message with security containing digest as a signer info - * @return the digest of the certificate been used to sign received message - */ - function f_waitForDigest( - out HashedId8 p_digest - ) runs on ItsGeoNetworking return boolean { - // Local variables - var SecuredMessage v_recv; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithDigest(v_recv) { - var SignerInfo v_si; - if(f_getMsgSignerInfo(v_recv, v_si)) { - p_digest := v_si.signerInfo.digest; - v_ret := true; - } - } - } // End of 'alt' statement - - return v_ret; - } // End of function f_waitForDigest - - /** - * @desc Send a CAM message with a certificate and wait the certificate chain request message - * @remark This function is used only for testing against another ATS - * @param p_certificate The certificate identifier - * @param p_CamPayload The CAM paylaod - * @return true on success, flase otherwise - */ - function f_sendCertificateAndWaitForCertificateChainRequest( - in charstring p_certificate, - in template(value) octetstring p_CamPayload - ) runs on ItsGeoNetworking return boolean { - // Local variables - var SecuredMessage v_recv; - - f_sendCertificate(p_certificate, p_CamPayload); - alt { - [] a_securedMessage ( - mdw_securedMessage( - superset( - mw_header_field_unrecognised_certificate - )), - v_recv - ) { - // Nothing to do - log("*** " & testcasename() & ": DEBUG: Receive certificate ***") - } - } // End of 'alt' statement - - return true; - } // End of function f_sendCertificateAndWaitForCertificateChainRequest - - } // End of group waitingHelpers - - group CertRequests{ - - function f_sendCertificateRequest( - in template (value) HashedId8 p_digest, - in template (value) octetstring p_payload - ) runs on ItsGeoNetworking { - var GeoNetworkingReq v_gnReq; - var GnNonSecuredPacket v_gnNonSecuredPacket; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - var template (value) SecuredMessage v_securedMessage; + /** + * @desc Ask for the certificate chain and wait for GN message with security containing certificate chain as a signer info + * @return the certificate chain used for sign received message + */ + function f_askForCertificateChain (in template(value) octetstring p_CamPayload) + runs on ItsGeoNetworking + return boolean { + var SecuredMessage v_recv; + var SignerInfo v_si; + var boolean v_ret := false; + alt { + [] a_securedMessageWithCertificate(v_recv) { + if(f_getMsgSignerInfo(v_recv, v_si)) { + if(f_getCertificateSignerInfo(v_si.signerInfo.certificate, v_si)) { + if(v_si.type_ == e_certificate_digest_with_sha256) { + f_sendCertificateRequest(v_si.signerInfo.digest, p_CamPayload); + if(tc_ac.running) { + tc_ac.stop;tc_ac.start; + } + v_ret := true; + } + } + } + } + } + return v_ret; + } + /** + * @desc Ask for the certificate chain and wait for GN message with security containing certificate chain as a signer info + * @return the certificate chain used for sign received message + */ + function f_askAndWaitForCertificateChain( + out CertificateChain p_chain, + in template(value) octetstring p_CamPayload + ) runs on ItsGeoNetworking return boolean { + // Local variables + var SecuredMessage v_recv; + var SignerInfo v_si; + var boolean v_ret := false; + + alt { + [] a_securedMessageWithCertificate(v_recv) { + tc_ac.stop; + if(f_getMsgSignerInfo(v_recv, v_si)) { + if(f_getCertificateSignerInfo(v_si.signerInfo.certificate, v_si)) { + if(v_si.type_ == e_certificate_digest_with_sha256) { + f_sendCertificateRequest(v_si.signerInfo.digest, p_CamPayload); + tc_ac.start; + repeat; + } + } + } + } + [] a_securedMessageWithCertificateChain(v_recv) { + tc_ac.stop; + if(f_getMsgSignerInfo(v_recv, v_si) == true) { + p_chain := v_si.signerInfo.certificates; + v_ret := true; + } + } + } // End of 'alt' statement + + return v_ret; + } // End of function f_askAndWaitForCertificateChain + + /** + * @desc Wait for GN message with security containing digest as a signer info + * @return the digest of the certificate been used to sign received message + */ + function f_waitForDigest( + out HashedId8 p_digest + ) runs on ItsGeoNetworking return boolean { + // Local variables + var SecuredMessage v_recv; + var boolean v_ret := false; + + alt { + [] a_securedMessageWithDigest(v_recv) { + var SignerInfo v_si; + if(f_getMsgSignerInfo(v_recv, v_si)) { + p_digest := v_si.signerInfo.digest; + v_ret := true; + } + } + } // End of 'alt' statement + + return v_ret; + } // End of function f_waitForDigest + + /** + * @desc Send a CAM message with a certificate and wait the certificate chain request message + * @remark This function is used only for testing against another ATS + * @param p_certificate The certificate identifier + * @param p_CamPayload The CAM paylaod + * @return true on success, flase otherwise + */ + function f_sendCertificateAndWaitForCertificateChainRequest( + in charstring p_certificate, + in template(value) octetstring p_CamPayload + ) runs on ItsGeoNetworking return boolean { + // Local variables + var SecuredMessage v_recv; + + f_sendCertificate(p_certificate, p_CamPayload); + alt { + [] a_securedMessage ( + mdw_securedMessage( + superset( + mw_header_field_unrecognised_certificate + )), + v_recv + ) { + // Nothing to do + log("*** " & testcasename() & ": DEBUG: Receive certificate ***") + } + } // End of 'alt' statement + + return true; + } // End of function f_sendCertificateAndWaitForCertificateChainRequest + + } // End of group waitingHelpers + + group CertRequests{ + + function f_sendCertificateRequest( + in template (value) HashedId8 p_digest, + in template (value) octetstring p_payload + ) runs on ItsGeoNetworking { + var GeoNetworkingReq v_gnReq; + var GnNonSecuredPacket v_gnNonSecuredPacket; + var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; + var template (value) SecuredMessage v_securedMessage; - // Build signed SecuredMessage - v_gnNonSecuredPacket := valueof(m_geoNwShbPacket( - f_getPosition(c_compNodeC) // FIXME To be verified YANN - )); - // Add CAM payload - v_gnNonSecuredPacket.payload := valueof(p_payload); - - f_buildGnSecuredCam( - v_securedMessage, - m_payload_signed(bit2oct(encvalue(v_gnNonSecuredPacket))), - e_certificate, - { - m_header_field_unrecognised_certificate( - f_HashedId3FromHashedId8( - valueof(p_digest) - )) - }, - "" - ); + // Build signed SecuredMessage + v_gnNonSecuredPacket := valueof(m_geoNwShbPacket( + f_getPosition(c_compNodeC) // FIXME To be verified YANN + )); + // Add CAM payload + v_gnNonSecuredPacket.payload := valueof(p_payload); + + f_buildGnSecuredCam( + v_securedMessage, + m_payload_signed(bit2oct(encvalue(v_gnNonSecuredPacket))), + e_certificate, + { + m_header_field_unrecognised_certificate( + f_HashedId3FromHashedId8( + valueof(p_digest) + )) + }, + "" + ); - // Build secured Gn packet - v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast( - m_geoNwSecPdu( - v_gnNonSecuredPacket, - v_securedMessage - ) // End of template m_geoNwSecPdu - )); // End of template m_geoNwReq_linkLayerBroadcast - - // Send Message - f_sendGeoNetMessage(v_gnReq); - - } // End of function f_sendCertificateRequest - - /** - * @desc Send a CAM message with a certificate - * @remark This function is used only for testing against another ATS - * @param p_certificate The certificate identifier - * @param p_CamPayload The CAM paylaod - * @return true on success, flase otherwise - * @see f_sendCertificateAndWaitForCertificateChainRequest - */ - function f_sendCertificate( - in charstring p_certificate, - in template (value) octetstring p_payload - ) runs on ItsGeoNetworking { - var GeoNetworkingReq v_gnReq; - var GnNonSecuredPacket v_gnNonSecuredPacket; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - var template (value) SecuredMessage v_securedMessage; + // Build secured Gn packet + v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast( + m_geoNwSecPdu( + v_gnNonSecuredPacket, + v_securedMessage + ) // End of template m_geoNwSecPdu + )); // End of template m_geoNwReq_linkLayerBroadcast + + // Send Message + f_sendGeoNetMessage(v_gnReq); + + } // End of function f_sendCertificateRequest + + /** + * @desc Send a CAM message with a certificate + * @remark This function is used only for testing against another ATS + * @param p_certificate The certificate identifier + * @param p_CamPayload The CAM paylaod + * @return true on success, flase otherwise + * @see f_sendCertificateAndWaitForCertificateChainRequest + */ + function f_sendCertificate( + in charstring p_certificate, + in template (value) octetstring p_payload + ) runs on ItsGeoNetworking { + var GeoNetworkingReq v_gnReq; + var GnNonSecuredPacket v_gnNonSecuredPacket; + var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; + var template (value) SecuredMessage v_securedMessage; - // Build signed SecuredMessage - v_gnNonSecuredPacket := valueof(m_geoNwShbPacket( - f_getPosition(c_compNodeC) // FIXME To be verified YANN - )); - // Add CAM payload - v_gnNonSecuredPacket.payload := valueof(p_payload); - - f_buildGnSecuredCam( - v_securedMessage, - m_payload_signed(bit2oct(encvalue(v_gnNonSecuredPacket))), - e_certificate, - -, - p_certificate - ); + // Build signed SecuredMessage + v_gnNonSecuredPacket := valueof(m_geoNwShbPacket( + f_getPosition(c_compNodeC) // FIXME To be verified YANN + )); + // Add CAM payload + v_gnNonSecuredPacket.payload := valueof(p_payload); + + f_buildGnSecuredCam( + v_securedMessage, + m_payload_signed(bit2oct(encvalue(v_gnNonSecuredPacket))), + e_certificate, + -, + p_certificate + ); - // Build secured Gn packet - v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast( - m_geoNwSecPdu( - v_gnNonSecuredPacket, - v_securedMessage - ) // End of template m_geoNwSecPdu - )); // End of template m_geoNwReq_linkLayerBroadcast + // Build secured Gn packet + v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast( + m_geoNwSecPdu( + v_gnNonSecuredPacket, + v_securedMessage + ) // End of template m_geoNwSecPdu + )); // End of template m_geoNwReq_linkLayerBroadcast - // Send Message - f_sendGeoNetMessage(v_gnReq); + // Send Message + f_sendGeoNetMessage(v_gnReq); - } // End of function f_sendCertificate + } // End of function f_sendCertificate - } // End of group CertRequests + } // End of group CertRequests - group messageGetters { - - /** - * @desc return SecuredMessage field of GeoNetworking packet - * @param p_msg GeoNetworking packet - * @return the SecuredMessage if any - */ - function f_getSecuredMessage(in GeoNetworkingPdu p_msg) - return SecuredMessage { - return p_msg.gnPacket.securedMsg; - } - + group messageGetters { + + /** + * @desc return SecuredMessage field of GeoNetworking packet + * @param p_msg GeoNetworking packet + * @return the SecuredMessage if any + */ + function f_getSecuredMessage(in GeoNetworkingPdu p_msg) + return SecuredMessage { + return p_msg.gnPacket.securedMsg; } + + } } // end LibItsGeoNetworking_Functions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn index 07f48b6..6acb474 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn @@ -358,7 +358,7 @@ module LibItsGeoNetworking_Templates { /** * @desc Request IUT to change its position */ - template (value) UtChangePosition m_changePosition := { + template (value) UtGnChangePosition m_changePosition := { latitude := 1000, longitude := 0, elevation := 0 diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index ca8c476..86bd4e7 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -50,11 +50,9 @@ module LibItsGeoNetworking_TestSystem { */ type port UpperTesterPort message { out - UtGnInitialize, UtChangePosition, UtAutoInteropTrigger, UtGnTrigger; + UtGnInitialize, UtGnChangePosition, UtAutoInteropTrigger, UtGnTrigger; in -//FIXME RGY As discussed, boolean results are replaced by a top-level union of results -// UtInitializeResult, UtChangePositionResult, UtGnTriggerResult, UtGnEventInd; - UtGnResults, /*UtCommonResults,*/ UtGnTriggerResult, UtGnEventInd; + UtGnResults, UtGnEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index 01cfd2c..7a87779 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -11,1182 +11,1192 @@ */ module LibItsGeoNetworking_TypesAndValues { - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; + // LibCommon + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_DataStrings all; - // LibIts -// import from LibItsCommon_TypesAndValues all; - import from LibItsBtp_TypesAndValues {type BtpPacket;} - import from LibItsIpv6OverGeoNetworking_TypesAndValues {type Ipv6Packet;} + // LibIts + // import from LibItsCommon_TypesAndValues all; + import from LibItsBtp_TypesAndValues {type BtpPacket;} + import from LibItsIpv6OverGeoNetworking_TypesAndValues {type Ipv6Packet;} - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; + // LibItsSecurity + import from LibItsSecurity_TypesAndValues all; - group geoConfigurationValues { + group geoConfigurationValues { - const charstring c_compIut := "IUT"; - const charstring c_compMTC := "MTC"; - const charstring c_compNodeA := "NodeA"; - const charstring c_compNodeB := "NodeB"; - const charstring c_compNodeC := "NodeC"; - const charstring c_compNodeD := "NodeD"; - const charstring c_compNodeE := "NodeE"; - const charstring c_compNodeF := "NodeF"; + const charstring c_compIut := "IUT"; + const charstring c_compMTC := "MTC"; + const charstring c_compNodeA := "NodeA"; + const charstring c_compNodeB := "NodeB"; + const charstring c_compNodeC := "NodeC"; + const charstring c_compNodeD := "NodeD"; + const charstring c_compNodeE := "NodeE"; + const charstring c_compNodeF := "NodeF"; - const charstring c_area1 := "AREA1"; - const charstring c_area2 := "AREA2"; + const charstring c_area1 := "AREA1"; + const charstring c_area2 := "AREA2"; - const integer c_latitudeFactorNodeA := 10; - const integer c_latitudeFactorNodeB := 2; - const integer c_latitudeFactorNodeC := -6; - const integer c_latitudeFactorNodeD := 1; - const integer c_latitudeFactorNodeE := -1; - const integer c_latitudeFactorNodeF := 2; - const integer c_longitudeFactorNodeA := 0; - const integer c_longitudeFactorNodeB := 0; - const integer c_longitudeFactorNodeC := 0; - const integer c_longitudeFactorNodeD := 0; - const integer c_longitudeFactorNodeE := 0; - const integer c_longitudeFactorNodeF := -3; - } // end geoConfigurationValues + const integer c_latitudeFactorNodeA := 10; + const integer c_latitudeFactorNodeB := 2; + const integer c_latitudeFactorNodeC := -6; + const integer c_latitudeFactorNodeD := 1; + const integer c_latitudeFactorNodeE := -1; + const integer c_latitudeFactorNodeF := 2; + const integer c_longitudeFactorNodeA := 0; + const integer c_longitudeFactorNodeB := 0; + const integer c_longitudeFactorNodeC := 0; + const integer c_longitudeFactorNodeD := 0; + const integer c_longitudeFactorNodeE := 0; + const integer c_longitudeFactorNodeF := -3; + } // end geoConfigurationValues - group geoSyncMessages { + group geoSyncMessages { - const charstring c_msgSent := "Message sent"; + const charstring c_msgSent := "Message sent"; - } // end geoSyncMessages + } // end geoSyncMessages - group geoTestingConstants { + group geoTestingConstants { - const UInt6 c_defaultLifetime := 10; // in seconds - const UInt16 c_lifetime := 1000 * c_defaultLifetime; // in seconds + const UInt6 c_defaultLifetime := 10; // in seconds + const UInt16 c_lifetime := 1000 * c_defaultLifetime; // in seconds - } // end geoTestingConstants + } // end geoTestingConstants - group units { + group units { - const float c_squareKm := 1000000.0; + const float c_squareKm := 1000000.0; - } // end units + } // end units - group geoConfigurationTypes { + group geoConfigurationTypes { - /** - * @desc Entry of position table - * @member key Reference key of the entry - * @member position Position vector stored in the entry - */ - type record PositionEntry { - charstring key, - LongPosVector position - } + /** + * @desc Entry of position table + * @member key Reference key of the entry + * @member position Position vector stored in the entry + */ + type record PositionEntry { + charstring key, + LongPosVector position + } - /** - * @desc Table containing node positions - */ - type record of PositionEntry PositionTable; + /** + * @desc Table containing node positions + */ + type record of PositionEntry PositionTable; - /** - * @desc Parameters of a geometric area - * @member geoAreaPosLatitude Latitude of area's center - * @member geoAreaPosLongitude Longitude of area's center - * @member distanceA Distance A - * @member distanceB Distance B - * @member angle Angle - */ - type record Area { - Int32 geoAreaPosLatitude, - Int32 geoAreaPosLongitude, - UInt16 distanceA, - UInt16 distanceB, - UInt16 angle - } + /** + * @desc Parameters of a geometric area + * @member geoAreaPosLatitude Latitude of area's center + * @member geoAreaPosLongitude Longitude of area's center + * @member distanceA Distance A + * @member distanceB Distance B + * @member angle Angle + */ + type record Area { + Int32 geoAreaPosLatitude, + Int32 geoAreaPosLongitude, + UInt16 distanceA, + UInt16 distanceB, + UInt16 angle + } - /** - * @desc Compact definition of GeoBroadcastArea - * @member geoBroadcastSubType Type of GeoBroadcastArea (=shape) - * @member geoBroadcastArea Parameters of the geometric area - */ - type record GeoBroadcastArea { - HeaderSubTypeGeoBroadcast geoBroadcastSubType, - Area geoBroadcastArea - } + /** + * @desc Compact definition of GeoBroadcastArea + * @member geoBroadcastSubType Type of GeoBroadcastArea (=shape) + * @member geoBroadcastArea Parameters of the geometric area + */ + type record GeoBroadcastArea { + HeaderSubTypeGeoBroadcast geoBroadcastSubType, + Area geoBroadcastArea + } - /** - * @desc Compact definition of GeoAnycastArea - * @member geoAnycastSubType Type of GeoAnycastArea (=shape) - * @member geoAnycastArea Parameters of the geometric area - */ - type record GeoAnycastArea { - HeaderSubTypeGeoAnycast geoAnycastSubType, - Area geoAnycastArea - } + /** + * @desc Compact definition of GeoAnycastArea + * @member geoAnycastSubType Type of GeoAnycastArea (=shape) + * @member geoAnycastArea Parameters of the geometric area + */ + type record GeoAnycastArea { + HeaderSubTypeGeoAnycast geoAnycastSubType, + Area geoAnycastArea + } - /** - * @desc Compact definition of a GeoArea (either GeoBroadcastArea or GeoAnycastArea) - * @member shape Shape of the GeoArea - * @member area Parameters of the geometric area - */ - type record GeoArea { - GeoShape shape, - Area area - } + /** + * @desc Compact definition of a GeoArea (either GeoBroadcastArea or GeoAnycastArea) + * @member shape Shape of the GeoArea + * @member area Parameters of the geometric area + */ + type record GeoArea { + GeoShape shape, + Area area + } - /** - * @desc Geometric shapes used to define GeoAreas - */ - type enumerated GeoShape { - e_geoCircle(0), - e_geoRect(1), - e_geoElip(2), - e_reserved - } + /** + * @desc Geometric shapes used to define GeoAreas + */ + type enumerated GeoShape { + e_geoCircle(0), + e_geoRect(1), + e_geoElip(2), + e_reserved + } - /** - * @desc Entry of GeoArea table - * @member key Reference key of the entry - * @member geoArea GeoArea stored in the entry - */ - type record GeoAreaEntry { - charstring key, - GeoArea geoArea - } + /** + * @desc Entry of GeoArea table + * @member key Reference key of the entry + * @member geoArea GeoArea stored in the entry + */ + type record GeoAreaEntry { + charstring key, + GeoArea geoArea + } - /** - * @desc Table containing geoArea definitions - */ - type record of GeoAreaEntry GeoAreaTable; + /** + * @desc Table containing geoArea definitions + */ + type record of GeoAreaEntry GeoAreaTable; - } // end geoConfigurationTypes + } // end geoConfigurationTypes - group geoNwValues { + group geoNwValues { - group geoNwHeaderConstants { + group geoNwHeaderConstants { - const UInt4 c_geoNwProtocolVersion := 0; + const UInt4 c_geoNwProtocolVersion := 0; - const UInt8 c_hopLimit1 := 1; - const UInt8 c_defaultHopLimit := 10; + const UInt8 c_hopLimit1 := 1; + const UInt8 c_defaultHopLimit := 10; - } // end geoNwHeaderConstants + } // end geoNwHeaderConstants - } // end geoNwValues + } // end geoNwValues - group geoNetworkingPdus { + group geoNetworkingPdus { - /** - * @desc GeoNetworking Packet - * - * @see ETSI EN 302 636-4-1 chapter 8.2, 8.3, 8.4 - * - * @member basicHeader - * @member gnPacket - */ - type record GeoNetworkingPdu { - BasicHeader basicHeader, - GeoNetworkingPacket gnPacket - } + /** + * @desc GeoNetworking Packet + * + * @see ETSI EN 302 636-4-1 chapter 8.2, 8.3, 8.4 + * + * @member basicHeader + * @member gnPacket + */ + type record GeoNetworkingPdu { + BasicHeader basicHeader, + GeoNetworkingPacket gnPacket + } - type record GeoNetworkingPacket { - GnNonSecuredPacket packet, - SecuredMessage securedMsg optional - } with { - encode (securedMsg) "LibItsSecurity" - } + type record GeoNetworkingPacket { + GnNonSecuredPacket packet, + SecuredMessage securedMsg optional + } with { + encode (securedMsg) "LibItsSecurity" + } - type octetstring GnRawPayload; + type octetstring GnRawPayload; - type record GnNonSecuredPacket { - CommonHeader commonHeader, - ExtendedHeader extendedHeader optional, - GnRawPayload payload optional - } - } // end group geoNetworkingPdus + type record GnNonSecuredPacket { + CommonHeader commonHeader, + ExtendedHeader extendedHeader optional, + GnRawPayload payload optional + } + } // end group geoNetworkingPdus - group geoNetworkingHeader { + group geoNetworkingHeader { - group geoNetworkingBasicHeader { + group geoNetworkingBasicHeader { - /** - * @desc Basic Header - * - *
-             *  0               1               2               3
-             *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             * |   V   |  NH   |    Reserved   |      LT       |      RHL      |
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             * 
- * - * @see ETSI EN 302 636-4-1 chapter 8.6.1 - * - * @member version - * @member nextHeader - * @member reserved - * @member lifeTime - * @member routerHopLimit - */ - type record BasicHeader { - UInt4 version, - BasicNextHeader nextHeader, - UInt8 reserved, - Lifetime lifeTime, - UInt8 routerHopLimit - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Basic Header + * + *
+       *  0               1               2               3
+       *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       * |   V   |  NH   |    Reserved   |      LT       |      RHL      |
+       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       * 
+ * + * @see ETSI EN 302 636-4-1 chapter 8.6.1 + * + * @member version + * @member nextHeader + * @member reserved + * @member lifeTime + * @member routerHopLimit + */ + type record BasicHeader { + UInt4 version, + BasicNextHeader nextHeader, + UInt8 reserved, + Lifetime lifeTime, + UInt8 routerHopLimit + } with { + variant "FIELDORDER(msb)" + } - type enumerated BasicNextHeader { - e_any(0), - e_commonHeader(1), - e_securedPacket(2), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + type enumerated BasicNextHeader { + e_any(0), + e_commonHeader(1), + e_securedPacket(2), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Indicates the maximum tolerable time a packet can be buffered until it reaches its destination. - * @member multiplier - * @member ltBase - */ - type record Lifetime { - UInt6 multiplier, - LtBase ltBase - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Indicates the maximum tolerable time a packet can be buffered until it reaches its destination. + * @member multiplier + * @member ltBase + */ + type record Lifetime { + UInt6 multiplier, + LtBase ltBase + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The base for the calculation of the lifetime. - */ - type enumerated LtBase { - e_50ms(0), - e_1s(1), - e_10s(2), - e_100s(3) - } with { - variant "FIELDLENGTH(2)" //variant "2 bit" - } + /** + * @desc The base for the calculation of the lifetime. + */ + type enumerated LtBase { + e_50ms(0), + e_1s(1), + e_10s(2), + e_100s(3) + } with { + variant "FIELDLENGTH(2)" //variant "2 bit" + } - } // end group geoNetworkingBasicHeader + } // end group geoNetworkingBasicHeader - group geoNetworkingCommonHeader { + group geoNetworkingCommonHeader { - /** - * @desc Common header for GeoNetworking - * - *
-             *  0               1               2               3
-             *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             * |  NH   |   R   |  HT   |  HST  |      TC       |     Flags     |
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             * |              PL               |     MHL       |    Reserved   |
-             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-             * 
- * - * @see ETSI EN 302 636-4-1 chapter 8.7.2 - * - * @member nextHeader - * @member reserved - * @member headerTST Header type + Header Sub Type - * @member trafficClass - * @member flags - * @member plLength - * @member maxHopLimit - * @member reserved2 - */ - type record CommonHeader { - NextHeader nextHeader, - UInt4 reserved, - HeaderTST headerTST, - TrafficClass trafficClass, - Bit8 flags, - UInt16 plLength, // The Codec shall set the length of the paylaod if present - UInt8 maxHopLimit, - UInt8 reserved2 - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Common header for GeoNetworking + * + *
+       *  0               1               2               3
+       *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       * |  NH   |   R   |  HT   |  HST  |      TC       |     Flags     |
+       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       * |              PL               |     MHL       |    Reserved   |
+       * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+       * 
+ * + * @see ETSI EN 302 636-4-1 chapter 8.7.2 + * + * @member nextHeader + * @member reserved + * @member headerTST Header type + Header Sub Type + * @member trafficClass + * @member flags + * @member plLength + * @member maxHopLimit + * @member reserved2 + */ + type record CommonHeader { + NextHeader nextHeader, + UInt4 reserved, + HeaderTST headerTST, + TrafficClass trafficClass, + Bit8 flags, + UInt16 plLength, // The Codec shall set the length of the paylaod if present + UInt8 maxHopLimit, + UInt8 reserved2 + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the type of header immediately following the Common Header (4Bits). - */ - type enumerated NextHeader { - e_any(0), - e_btpA(1), - e_btpB(2), - e_ipv6(3), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the type of header immediately following the Common Header (4Bits). + */ + type enumerated NextHeader { + e_any(0), + e_btpA(1), + e_btpB(2), + e_ipv6(3), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc TrafficClass - * - *
-             *  0   1   2   3   4   5   6   7
-             * +---+---+---+---+---+---+---+---+
-             * |SCF|Ch.|         TC ID         |
-             * |   |Off|                       |
-             * +---+---+---+---+---+---+---+---+
-             * 
- * - * @see ETSI EN 302 636-4-1 chapter 8.7.5 - * - * @member scf - * @member channelOffload - * @member tcId - */ - type record TrafficClass { - SCF scf, - ChannelOffload channelOffload, - TcId tcId - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc TrafficClass + * + *
+       *  0   1   2   3   4   5   6   7
+       * +---+---+---+---+---+---+---+---+
+       * |SCF|Ch.|         TC ID         |
+       * |   |Off|                       |
+       * +---+---+---+---+---+---+---+---+
+       * 
+ * + * @see ETSI EN 302 636-4-1 chapter 8.7.5 + * + * @member scf + * @member channelOffload + * @member tcId + */ + type record TrafficClass { + SCF scf, + ChannelOffload channelOffload, + TcId tcId + } with { + variant "FIELDORDER(msb)" + } - type enumerated SCF { - e_scfDisabled(0), - e_scfEnable (1) - } with { - variant "FIELDLENGTH(1)" //variant "1 bit" - } - type enumerated ChannelOffload { - e_choffDisabled(0), - e_choffEnable (1) - } with { - variant "FIELDLENGTH(1)" //variant "1 bit" - } - type UInt6 TcId; + type enumerated SCF { + e_scfDisabled(0), + e_scfEnable (1) + } with { + variant "FIELDLENGTH(1)" //variant "1 bit" + } + type enumerated ChannelOffload { + e_choffDisabled(0), + e_choffEnable (1) + } with { + variant "FIELDLENGTH(1)" //variant "1 bit" + } + type UInt6 TcId; - } // end group geoNetworkingCommonHeader + } // end group geoNetworkingCommonHeader - group geoNetworkingExtendedHeaders { + group geoNetworkingExtendedHeaders { - /** - * @desc GeoNetworking ExtendedHeader - * - * @see ETSI EN 302 636-4-1 chapter 8.3 - * - * @member commonHeader - * @member gnExtHeader - */ - type union ExtendedHeader { - GeoUnicastHeader geoUnicastHeader, - TSBHeader tsbHeader, - SHBHeader shbHeader, - GeoBroadcastHeader geoBroadcastHeader, - GeoAnycastHeader geoAnycastHeader, - BeaconHeader beaconHeader, - LSRequestHeader lsRequestHeader, - LSReplyHeader lsReplyHeader, - AnyHeader anyHeader - } with { - variant "" - } + /** + * @desc GeoNetworking ExtendedHeader + * + * @see ETSI EN 302 636-4-1 chapter 8.3 + * + * @member commonHeader + * @member gnExtHeader + */ + type union ExtendedHeader { + GeoUnicastHeader geoUnicastHeader, + TSBHeader tsbHeader, + SHBHeader shbHeader, + GeoBroadcastHeader geoBroadcastHeader, + GeoAnycastHeader geoAnycastHeader, + BeaconHeader beaconHeader, + LSRequestHeader lsRequestHeader, + LSReplyHeader lsReplyHeader, + AnyHeader anyHeader + } with { + variant "" + } - /** - * @desc The unspecified ANY header. - * - * @member seqNumber - * @member reserved - */ - type record AnyHeader { - UInt16 seqNumber, - UInt16 reserved - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The unspecified ANY header. + * + * @member seqNumber + * @member reserved + */ + type record AnyHeader { + UInt16 seqNumber, + UInt16 reserved + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The BEACON packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.6 - * - * @member commonHeader - */ - type record BeaconHeader { - LongPosVector srcPosVector - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The BEACON packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.6 + * + * @member commonHeader + */ + type record BeaconHeader { + LongPosVector srcPosVector + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The GEOANYCAST packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.5 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member geoAreaPosLatitude - * @member geoAreaPosLongitude - * @member distanceA - * @member distanceB - * @member angle - * @member reserved - */ - type record GeoAnycastHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - Int32 geoAreaPosLatitude, - Int32 geoAreaPosLongitude, - UInt16 distanceA, - UInt16 distanceB, - UInt16 angle, - UInt16 reserved2 - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The GEOANYCAST packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.5 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member geoAreaPosLatitude + * @member geoAreaPosLongitude + * @member distanceA + * @member distanceB + * @member angle + * @member reserved + */ + type record GeoAnycastHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + Int32 geoAreaPosLatitude, + Int32 geoAreaPosLongitude, + UInt16 distanceA, + UInt16 distanceB, + UInt16 angle, + UInt16 reserved2 + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The GEOBROADCAST packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.5 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member geoAreaPosLatitude - * @member geoAreaPosLongitude - * @member distanceA - * @member distanceB - * @member angle - * @member reserved - */ - type GeoAnycastHeader GeoBroadcastHeader; + /** + * @desc The GEOBROADCAST packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.5 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member geoAreaPosLatitude + * @member geoAreaPosLongitude + * @member distanceA + * @member distanceB + * @member angle + * @member reserved + */ + type GeoAnycastHeader GeoBroadcastHeader; - /** - * @desc The GEOUNICAST packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.2 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member dstPosVector - */ - type record GeoUnicastHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - ShortPosVector dstPosVector - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The GEOUNICAST packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.2 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member dstPosVector + */ + type record GeoUnicastHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + ShortPosVector dstPosVector + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The Location Service (LS) Reply packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.8 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member dstPosVector - */ - type record LSReplyHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - ShortPosVector dstPosVector - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The Location Service (LS) Reply packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.8 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member dstPosVector + */ + type record LSReplyHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + ShortPosVector dstPosVector + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The Location Service (LS) Request packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.7 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member gnAddress - */ - type record LSRequestHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - GN_Address gnAddress - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The Location Service (LS) Request packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.7 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + * @member gnAddress + */ + type record LSRequestHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector, + GN_Address gnAddress + } with { + variant "FIELDORDER(msb)" + } - /** - * The Single Hop Broadcast (SHB) packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.4 - * - * @member srcPosVector - * @member reserved - */ - type record SHBHeader { - LongPosVector srcPosVector, - UInt32 reserved - } with { - variant "FIELDORDER(msb)" - } + /** + * The Single Hop Broadcast (SHB) packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.4 + * + * @member srcPosVector + * @member reserved + */ + type record SHBHeader { + LongPosVector srcPosVector, + UInt32 reserved + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc The Topologically-Scoped Broadcast (TSB) packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.3 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - */ - type record TSBHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc The Topologically-Scoped Broadcast (TSB) packet header. + * + * @see ETSI EN 302 636-4-1 chapter 8.8.3 + * + * @member seqNumber + * @member reserved + * @member srcPosVector + */ + type record TSBHeader { + UInt16 seqNumber, + UInt16 reserved, + LongPosVector srcPosVector + } with { + variant "FIELDORDER(msb)" + } - group geoNetworkingHeadersSubtypes { + group geoNetworkingHeadersSubtypes { - /** - * @desc Identifies the header type and the header subtype for ANY. - * @member headerType - * @member reserved - */ - type record AnyHeaderType { - HeaderType headerType(e_any), - UInt4 headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for ANY. + * @member headerType + * @member reserved + */ + type record AnyHeaderType { + HeaderType headerType(e_any), + UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for BEACON. - * @member headerType - * @member reserved - */ - type record BeaconHeaderType { - HeaderType headerType(e_beacon), - UInt4 headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for BEACON. + * @member headerType + * @member reserved + */ + type record BeaconHeaderType { + HeaderType headerType(e_beacon), + UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for GEOANYCAST. - * @member headerType - * @member reserved - */ - type record GeoAnycastHeaderType { - HeaderType headerType(e_geoAnycast), - HeaderSubTypeGeoAnycast headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for GEOANYCAST. + * @member headerType + * @member reserved + */ + type record GeoAnycastHeaderType { + HeaderType headerType(e_geoAnycast), + HeaderSubTypeGeoAnycast headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for GEOBROADCAST. - * @member headerType - * @member reserved - */ - type record GeoBroadcastHeaderType { - HeaderType headerType(e_geoBroadcast), - HeaderSubTypeGeoBroadcast headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for GEOBROADCAST. + * @member headerType + * @member reserved + */ + type record GeoBroadcastHeaderType { + HeaderType headerType(e_geoBroadcast), + HeaderSubTypeGeoBroadcast headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for GEOUNICAST. - * @member headerType - * @member reserved - */ - type record GeoUnicastHeaderType { - HeaderType headerType(e_geoUnicast), - UInt4 headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for GEOUNICAST. + * @member headerType + * @member reserved + */ + type record GeoUnicastHeaderType { + HeaderType headerType(e_geoUnicast), + UInt4 headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for Location Service LS. - * @member headerType - * @member reserved - */ - type record LsHeaderType { - HeaderType headerType(e_locationService), - HeaderSubTypeLs headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for Location Service LS. + * @member headerType + * @member reserved + */ + type record LsHeaderType { + HeaderType headerType(e_locationService), + HeaderSubTypeLs headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for Service Announcement SA. - * @member headerType - * @member reserved - */ - type record SaHeaderType { - HeaderType headerType(e_serviceAnnouncement), - HeaderSubTypeSa headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for Service Announcement SA. + * @member headerType + * @member reserved + */ + type record SaHeaderType { + HeaderType headerType(e_serviceAnnouncement), + HeaderSubTypeSa headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header type and the header subtype for Topologically-Scoped Broadcast TSB. - * @member headerType - * @member headerSubType - */ - type record TsbHeaderType { - HeaderType headerType(e_topologicallyScopedBroadcast), - HeaderSubTypeTSB headerSubType - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype for Topologically-Scoped Broadcast TSB. + * @member headerType + * @member headerSubType + */ + type record TsbHeaderType { + HeaderType headerType(e_topologicallyScopedBroadcast), + HeaderSubTypeTSB headerSubType + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the header subtype for GEOANYCAST. - */ - type enumerated HeaderSubTypeGeoAnycast { - e_geoAnycastCircle(0), - e_geoAnycastRect(1), - e_geoAnycastElip(2), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the header subtype for GEOANYCAST. + */ + type enumerated HeaderSubTypeGeoAnycast { + e_geoAnycastCircle(0), + e_geoAnycastRect(1), + e_geoAnycastElip(2), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Identifies the header subtype for GEOBROADCAST. - */ - type enumerated HeaderSubTypeGeoBroadcast { - e_geoBroadcastCircle(0), - e_geoBroadcastRect(1), - e_geoBroadcastElip(2), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the header subtype for GEOBROADCAST. + */ + type enumerated HeaderSubTypeGeoBroadcast { + e_geoBroadcastCircle(0), + e_geoBroadcastRect(1), + e_geoBroadcastElip(2), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Identifies the header subtype for Topologically-scoped broadcast TSB. - */ - type enumerated HeaderSubTypeTSB { - e_singleHop(0), - e_multiHop(1), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the header subtype for Topologically-scoped broadcast TSB. + */ + type enumerated HeaderSubTypeTSB { + e_singleHop(0), + e_multiHop(1), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Identifies the header subtype for Location Service LS. - */ - type enumerated HeaderSubTypeLs { - e_lsRequest(0), - e_lsReply(1), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the header subtype for Location Service LS. + */ + type enumerated HeaderSubTypeLs { + e_lsRequest(0), + e_lsReply(1), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Identifies the header subtype for Service Announcement SA. - */ - type enumerated HeaderSubTypeSa { - e_sa(0), - e_saEos(1), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the header subtype for Service Announcement SA. + */ + type enumerated HeaderSubTypeSa { + e_sa(0), + e_saEos(1), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Identifies the header type and the header subtype. - * @member anyHdr - * @member beaconHdr - * @member geoUnicastHdr - * @member geoAnycastHdr - * @member geoBroadcastHdr - * @member tsbHdr - * @member lsHdr - * @member saHdr - * @member reserved - */ - type union HeaderTST { - AnyHeaderType anyHdr, - BeaconHeaderType beaconHdr, - GeoUnicastHeaderType geoUnicastHdr, - GeoAnycastHeaderType geoAnycastHdr, - GeoBroadcastHeaderType geoBroadcastHdr, - TsbHeaderType tsbHdr, - LsHeaderType lsHdr, - SaHeaderType saHdr, - UInt8 reserved - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Identifies the header type and the header subtype. + * @member anyHdr + * @member beaconHdr + * @member geoUnicastHdr + * @member geoAnycastHdr + * @member geoBroadcastHdr + * @member tsbHdr + * @member lsHdr + * @member saHdr + * @member reserved + */ + type union HeaderTST { + AnyHeaderType anyHdr, + BeaconHeaderType beaconHdr, + GeoUnicastHeaderType geoUnicastHdr, + GeoAnycastHeaderType geoAnycastHdr, + GeoBroadcastHeaderType geoBroadcastHdr, + TsbHeaderType tsbHdr, + LsHeaderType lsHdr, + SaHeaderType saHdr, + UInt8 reserved + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Identifies the type of the GeoAdhoc header type (4Bits). - */ - type enumerated HeaderType { - e_any(0), - e_beacon(1), - e_geoUnicast(2), - e_geoAnycast(3), - e_geoBroadcast(4), - e_topologicallyScopedBroadcast(5), - e_locationService(6), - e_serviceAnnouncement(7), - e_reserved - } with { - variant "FIELDLENGTH(4)" //variant "4 bit" - } + /** + * @desc Identifies the type of the GeoAdhoc header type (4Bits). + */ + type enumerated HeaderType { + e_any(0), + e_beacon(1), + e_geoUnicast(2), + e_geoAnycast(3), + e_geoBroadcast(4), + e_topologicallyScopedBroadcast(5), + e_locationService(6), + e_serviceAnnouncement(7), + e_reserved + } with { + variant "FIELDLENGTH(4)" //variant "4 bit" + } - /** - * @desc Long Position Vector - * - *
-                 *  0               1               2               3
-                 *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                           GN_ADDR                             |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                             TST                               |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                             Lat                               |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                             Long                              |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |P|              S              |               H               |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * 
- * - * @see ETSI EN 302 636-4-1 chapter 8.5.2 - * - * @member gnAddr - * @member timestamp_ - * @member latitude - * @member longitude - * @member pai Position Accuracy Indicator - * @member speed - * @member heading - */ - type record LongPosVector { - GN_Address gnAddr, - UInt32 timestamp_, - Int32 latitude, - Int32 longitude, - Bit1 pai, - Int15 speed, - UInt16 heading - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Long Position Vector + * + *
+         *  0               1               2               3
+         *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                           GN_ADDR                             |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                             TST                               |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                             Lat                               |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                             Long                              |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |P|              S              |               H               |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * 
+ * + * @see ETSI EN 302 636-4-1 chapter 8.5.2 + * + * @member gnAddr + * @member timestamp_ + * @member latitude + * @member longitude + * @member pai Position Accuracy Indicator + * @member speed + * @member heading + */ + type record LongPosVector { + GN_Address gnAddr, + UInt32 timestamp_, + Int32 latitude, + Int32 longitude, + Bit1 pai, + Int15 speed, + UInt16 heading + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Short Position Vector - * - *
-                 *  0               1               2               3
-                 *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                           GN_ADDR                             |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                             TST                               |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                             Lat                               |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * |                             Long                              |
-                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                 * 
- * - * @see ETSI EN 302 636-4-1 chapter 8.5.3 - * - * @member gnAddr - * @member timestamp - * @member latitude - * @member longitude - */ - type record ShortPosVector { - GN_Address gnAddr, - UInt32 timestamp_, - Int32 latitude, - Int32 longitude - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Short Position Vector + * + *
+         *  0               1               2               3
+         *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                           GN_ADDR                             |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                             TST                               |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                             Lat                               |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * |                             Long                              |
+         * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+         * 
+ * + * @see ETSI EN 302 636-4-1 chapter 8.5.3 + * + * @member gnAddr + * @member timestamp + * @member latitude + * @member longitude + */ + type record ShortPosVector { + GN_Address gnAddr, + UInt32 timestamp_, + Int32 latitude, + Int32 longitude + } with { + variant "FIELDORDER(msb)" + } - group geoNetworkingAddress { - /** - * @desc GeoNetworking address - * - *
-                     *  0               1               2               3
-                     *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
-                     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                     * |M|  S_T    |       S_CC        |             M_ID              |
-                     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                     * |                              M_ID                             |
-                     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-                     * 
- * - * @see ETSI EN 302 636-4-1 chapter 6.2 - * - * @member typeOfAddress - * @member stationType - * @member mid - */ - type record GN_Address { - TypeOfAddress typeOfAddress, - StationType stationType, - UInt10 stationCountryCode, - Oct6 mid - } with { - variant "FIELDORDER(msb)" - } + group geoNetworkingAddress { + /** + * @desc GeoNetworking address + * + *
+           *  0               1               2               3
+           *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * |M|  S_T    |       S_CC        |             M_ID              |
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * |                              M_ID                             |
+           * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+           * 
+ * + * @see ETSI EN 302 636-4-1 chapter 6.2 + * + * @member typeOfAddress + * @member stationType + * @member mid + */ + type record GN_Address { + TypeOfAddress typeOfAddress, + StationType stationType, + UInt10 stationCountryCode, + Oct6 mid + } with { + variant "FIELDORDER(msb)" + } - group geoNetworkingAddressSubtypes { + group geoNetworkingAddressSubtypes { - /** - * @desc Identifies the ITS station (5Bits). - */ - type enumerated StationType { - e_unknown(0), - e_pedestrian(1), - e_cyclist(2), - e_moped(3), - e_motorcycle(4), - e_passengerCar(5), - e_bus(6), - e_lightTruck(7), - e_heavyTruck(8), - e_trailer(9), - e_specialVehicle(10), - e_tram(11), - e_roadSideUnit(15) - } with { - variant "FIELDLENGTH(5)" //variant "5 bit" - } + /** + * @desc Identifies the ITS station (5Bits). + */ + type enumerated StationType { + e_unknown(0), + e_pedestrian(1), + e_cyclist(2), + e_moped(3), + e_motorcycle(4), + e_passengerCar(5), + e_bus(6), + e_lightTruck(7), + e_heavyTruck(8), + e_trailer(9), + e_specialVehicle(10), + e_tram(11), + e_roadSideUnit(15) + } with { + variant "FIELDLENGTH(5)" //variant "5 bit" + } - /** - * @desc Distinguish between manually configured - * network address and the initial GeoNetwork address (1Bit). - */ - type enumerated TypeOfAddress { - e_manual(1), - e_initial(0) - } with { - variant "FIELDLENGTH(1)" //variant "1 bit" - } + /** + * @desc Distinguish between manually configured + * network address and the initial GeoNetwork address (1Bit). + */ + type enumerated TypeOfAddress { + e_manual(1), + e_initial(0) + } with { + variant "FIELDLENGTH(1)" //variant "1 bit" + } - } // end group geoNetworkingAddressSubtypes + } // end group geoNetworkingAddressSubtypes - } // end group geoNetworkingAddress + } // end group geoNetworkingAddress - } // end group geoNetworkingHeadersSubtypes + } // end group geoNetworkingHeadersSubtypes - } // end group geoNetworkingExtendedHeaders + } // end group geoNetworkingExtendedHeaders - } // end group geoNetworkingHeader + } // end group geoNetworkingHeader - group geoNwPicsTypes { + group geoNwPicsTypes { - /** - * @desc The GeoUnicast forwarding algorithm. - */ - type enumerated GeoUnicastForwardingAlgorithm { - e_unspecified(0), - e_greedy(1), - e_cbf(2) - } + /** + * @desc The GeoUnicast forwarding algorithm. + */ + type enumerated GeoUnicastForwardingAlgorithm { + e_unspecified(0), + e_greedy(1), + e_cbf(2) + } - /** - * @desc The GeoBroadcast forwarding algorithm. - */ - type enumerated GeoBroadcastForwardingAlgorithm { - e_unspecified(0), - e_simple(1), - e_cbf(2), - e_advanced(3) - } + /** + * @desc The GeoBroadcast forwarding algorithm. + */ + type enumerated GeoBroadcastForwardingAlgorithm { + e_unspecified(0), + e_simple(1), + e_cbf(2), + e_advanced(3) + } - /** - * @desc GN address configuration method. - */ - type enumerated GnAddressConfigurationMethod { - e_auto(0), - e_managed(1), - e_anonymous(2) - } + /** + * @desc GN address configuration method. + */ + type enumerated GnAddressConfigurationMethod { + e_auto(0), + e_managed(1), + e_anonymous(2) + } - } // end geoNwPicsTypes + } // end geoNwPicsTypes - group utPrimitives { + 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 UtGnInitialize { - Oct8 hashedId8 - } with { - variant "FIELDORDER(msb)" - } - - /** - * @desc Upper Tester results message of the GeoNetworking - * @member utGnInitialize - - * @member utGnTriggerResult - - * @member utAutoInteropTriggerResult - + /** + * @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 UtGnInitialize { + Oct8 hashedId8 + } with { + variant "FIELDORDER(msb)" + } - */ - type union UtGnResults { - boolean utGnInitializeResult, - boolean utGnTriggerResult, - boolean utAutoInteropTriggerResult - } with { - variant "" - } // End of type UtGnResults + /** + * @desc Upper Tester results message of the GeoNetworking IUT + * @member utGnInitialize - + * @member utGnTriggerResult - + * @member utAutoInteropTriggerResult - + * @member utGnChangePositionResult - + */ + type union UtGnResults { + boolean utGnInitializeResult, + boolean utGnTriggerResult, + boolean utGnAutoInteropTriggerResult, + boolean utGnChangePositionResult + } with { + variant "" + } // End of type UtGnResults /** * @desc AutoInterop UpperTester trigger * @member utRadioOnOff Set to true to power on the radio (on-link mode), false to power off the radio (off-link). */ - type union UtAutoInteropTrigger { - boolean utRadioOnOff - } with { - variant "" - } // End of type UtAutoInteropTrigger + type union UtAutoInteropTrigger { + boolean utRadioOnOff + } with { + variant "" + } // End of type UtAutoInteropTrigger /** - * @desc UT primitives for GeoNetworking - * @member geoUnicast - - * @member geoBroadcast - - * @member geoAnycast - - * @member shb - - * @member tsb - - * @member changePosition - - * @member checkPacket - + * @desc Upper Tester message to change the position of IUT. Values a relatives */ - type union UtGnTrigger { - GenerateGeoUnicastMessage geoUnicast, - GenerateGeoBroadcastMessage geoBroadcast, - GenerateGeoAnycastMessage geoAnycast, - GenerateSHBMessage shb, - GenerateTSBMessage tsb - } with { - variant "" - } + type record UtGnChangePosition { + Int32 latitude, + Int32 longitude, + Int32 elevation + } with { + variant "FIELDORDER(msb)" + } - type boolean UtGnTriggerResult; + /** + * @desc UT primitives for GeoNetworking + * @member geoUnicast - + * @member geoBroadcast - + * @member geoAnycast - + * @member shb - + * @member tsb - + * @member changePosition - + * @member checkPacket - + */ + type union UtGnTrigger { + GenerateGeoUnicastMessage geoUnicast, + GenerateGeoBroadcastMessage geoBroadcast, + GenerateGeoAnycastMessage geoAnycast, + GenerateSHBMessage shb, + GenerateTSBMessage tsb + } with { + variant "" + } - /** - * @desc UT primitive for IUT to send a GeoUnicast packet - * @member gnAddress Destination of the packet - * @member lifetime Lifetime of the packet - * @member trafficClass Traffic class of the packet - * @member payload GnRawPayload of the packet - */ - type record GenerateGeoUnicastMessage { - GN_Address gnAddress, - UInt16 lifetime, - TrafficClass trafficClass, - GnRawPayload payload - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc UT primitive for IUT to send a GeoUnicast packet + * @member gnAddress Destination of the packet + * @member lifetime Lifetime of the packet + * @member trafficClass Traffic class of the packet + * @member payload GnRawPayload of the packet + */ + type record GenerateGeoUnicastMessage { + GN_Address gnAddress, + UInt16 lifetime, + TrafficClass trafficClass, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc UT primitive for IUT to send a GeoBroadcast packet - * @member shape Shape of the area - * @member lifetime Lifetime of the packet - * @member trafficClass Traffic class of the packet - * @member area Destination GeoArea - * @member payload GnRawPayload of the packet - */ - type record GenerateGeoBroadcastMessage { - GeoShape shape, - UInt16 lifetime, - TrafficClass trafficClass, - UInt24 reserved, - Area area, - GnRawPayload payload - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc UT primitive for IUT to send a GeoBroadcast packet + * @member shape Shape of the area + * @member lifetime Lifetime of the packet + * @member trafficClass Traffic class of the packet + * @member area Destination GeoArea + * @member payload GnRawPayload of the packet + */ + type record GenerateGeoBroadcastMessage { + GeoShape shape, + UInt16 lifetime, + TrafficClass trafficClass, + UInt24 reserved, + Area area, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc UT primitive for IUT to send a Geoanycast packet - */ - type GenerateGeoBroadcastMessage GenerateGeoAnycastMessage; + /** + * @desc UT primitive for IUT to send a Geoanycast packet + */ + type GenerateGeoBroadcastMessage GenerateGeoAnycastMessage; - /** - * @desc UT primitive for IUT to send a SHB packet - * @member trafficClass Traffic class of the packet - * @member payload GnRawPayload of the packet - */ - type record GenerateSHBMessage { - TrafficClass trafficClass, - GnRawPayload payload - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc UT primitive for IUT to send a SHB packet + * @member trafficClass Traffic class of the packet + * @member payload GnRawPayload of the packet + */ + type record GenerateSHBMessage { + TrafficClass trafficClass, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc UT primitive for IUT to send a SHB packet - * @member nbHops Number of Hops - * @member lifetime Lifetime of the packet - * @member trafficClass Traffic class of the packet - * @member payload GnRawPayload of the packet - */ - type record GenerateTSBMessage { - UInt8 nbHops, - UInt16 lifetime, - TrafficClass trafficClass, - GnRawPayload payload - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc UT primitive for IUT to send a SHB packet + * @member nbHops Number of Hops + * @member lifetime Lifetime of the packet + * @member trafficClass Traffic class of the packet + * @member payload GnRawPayload of the packet + */ + type record GenerateTSBMessage { + UInt8 nbHops, + UInt16 lifetime, + TrafficClass trafficClass, + GnRawPayload payload + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc Upper Tester message to check Upper Layer message transmission on GN IUT - */ - type record UtGnEventInd { -// GeoNetworkingPdu gnPdu - GnRawPayload rawPayload - } with { - variant "FIELDORDER(msb)" - } + /** + * @desc Upper Tester message to check Upper Layer message transmission on GN IUT + */ + type record UtGnEventInd { + // GeoNetworkingPdu gnPdu + GnRawPayload rawPayload + } with { + variant "FIELDORDER(msb)" + } - /** - * @desc List of Upper Tester messages to check Upper Layer message transmission on GN IUT - */ - type record of UtGnEventInd UtGnEventIndList; + /** + * @desc List of Upper Tester messages to check Upper Layer message transmission on GN IUT + */ + type record of UtGnEventInd UtGnEventIndList; - } // end utPrimitives - with { - encode "UpperTester"; - variant "" + } // end utPrimitives + with { + encode "UpperTester"; + variant "" } - group acPrimitives { + group acPrimitives { - /** - * @desc TA primitives for GeoNetworking - * @member startBeaconing - - * @member stopBeaconing - - * @member startPassBeaconing - - * @member stopPassBeaconing - - * @member startBeaconingMultipleNeighbour - - * @member stopBeaconingMultipleNeighbour - - * @member getLongPosVector - - */ - type union AcGnPrimitive { - AcStartBeaconing startBeaconing, - AcStopBeaconing stopBeaconing, - AcStartPassBeaconing startPassBeaconing, - AcStopPassBeaconing stopPassBeaconing, - AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour, - AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour, - AcGetLongPosVector getLongPosVector - } with { - variant "" - } + /** + * @desc TA primitives for GeoNetworking + * @member startBeaconing - + * @member stopBeaconing - + * @member startPassBeaconing - + * @member stopPassBeaconing - + * @member startBeaconingMultipleNeighbour - + * @member stopBeaconingMultipleNeighbour - + * @member getLongPosVector - + */ + type union AcGnPrimitive { + AcStartBeaconing startBeaconing, + AcStopBeaconing stopBeaconing, + AcStartPassBeaconing startPassBeaconing, + AcStopPassBeaconing stopPassBeaconing, + AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour, + AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour, + AcGetLongPosVector getLongPosVector + } with { + variant "" + } - /** - * @desc Primitive for receiveing response from TA - * @member getLongPosVector - */ - type union AcGnResponse { - LongPosVector getLongPosVector, - AcGnResponseFailure failure - } - with { - variant "" - encode(getLongPosVector) "LibItsGeoNetworking" - } + /** + * @desc Primitive for receiveing response from TA + * @member getLongPosVector + */ + type union AcGnResponse { + LongPosVector getLongPosVector, + AcGnResponseFailure failure + } + with { + variant "" + encode(getLongPosVector) "LibItsGeoNetworking" + } - type record AcGnResponseFailure { - boolean failure - } + type record AcGnResponseFailure { + boolean failure + } - /** - * @desc Primitive for TA to start sending beacons for the test component - * @member beaconHeader Beacon template - */ - type record AcStartBeaconing { - GeoNetworkingPdu beaconPacket - } - with { - encode(beaconPacket) "LibItsGeoNetworking" - } - - /** - * @desc Primitive for TA to stop sending beacons for the test component - */ - type record AcStopBeaconing { - } + /** + * @desc Primitive for TA to start sending beacons for the test component + * @member beaconHeader Beacon template + */ + type record AcStartBeaconing { + GeoNetworkingPdu beaconPacket + } + with { + encode(beaconPacket) "LibItsGeoNetworking" + } - /** - * @desc Primitive for TA to start enqueueing received beacons - * @member beaconHeader Filter - */ - type record AcStartPassBeaconing { - BeaconHeader beaconHeader - } - with { - encode(beaconHeader) "LibItsGeoNetworking" - }; + /** + * @desc Primitive for TA to stop sending beacons for the test component + */ + type record AcStopBeaconing { + } - /** - * @desc Primitive for TA to stop enqueueing received beacons - */ - type record AcStopPassBeaconing { - } + /** + * @desc Primitive for TA to start enqueueing received beacons + * @member beaconHeader Filter + */ + type record AcStartPassBeaconing { + BeaconHeader beaconHeader + } + with { + encode(beaconHeader) "LibItsGeoNetworking" + }; - /** - * @desc Primitive for TA to start sending beacons for multiple neighbours - * @member beaconHeader Beacon template - * @member numberOfNeighbour Number of neighbours to simulate - */ - type record AcStartBeaconingMultipleNeighbour { - GeoNetworkingPdu beaconPacket, - integer numberOfNeighbour - } - with { - encode(beaconPacket) "LibItsGeoNetworking" - }; + /** + * @desc Primitive for TA to stop enqueueing received beacons + */ + type record AcStopPassBeaconing { + } - /** - * @desc Primitive for TA to stop sending beacons for multiple neighbours - */ - type record AcStopBeaconingMultipleNeighbour { - } + /** + * @desc Primitive for TA to start sending beacons for multiple neighbours + * @member beaconHeader Beacon template + * @member numberOfNeighbour Number of neighbours to simulate + */ + type record AcStartBeaconingMultipleNeighbour { + GeoNetworkingPdu beaconPacket, + integer numberOfNeighbour + } + with { + encode(beaconPacket) "LibItsGeoNetworking" + }; - /** - * @desc Primitive for retrieving the position vector corresponding to a specific GN address - * @member gnAddress GN address to be searched - */ - type record AcGetLongPosVector { - GN_Address gnAddress - } - with { - encode(gnAddress) "LibItsGeoNetworking" - }; + /** + * @desc Primitive for TA to stop sending beacons for multiple neighbours + */ + type record AcStopBeaconingMultipleNeighbour { + } - } // end acPrimitives + /** + * @desc Primitive for retrieving the position vector corresponding to a specific GN address + * @member gnAddress GN address to be searched + */ + type record AcGetLongPosVector { + GN_Address gnAddress + } with { - variant "" - encode "AdapterControl" + encode(gnAddress) "LibItsGeoNetworking" + }; + + } // end acPrimitives + with { + variant "" + encode "AdapterControl" } } with { - variant "" - encode "LibItsGeoNetworking" -} + variant "" + encode "LibItsGeoNetworking" + } diff --git a/ttcn/Security/LibItsSecurity_Templates.ttcn b/ttcn/Security/LibItsSecurity_Templates.ttcn index eda3f56..fad5870 100644 --- a/ttcn/Security/LibItsSecurity_Templates.ttcn +++ b/ttcn/Security/LibItsSecurity_Templates.ttcn @@ -17,6 +17,9 @@ module LibItsSecurity_Templates { // LibItsCommon import from LibItsCommon_TypesAndValues all; + // LibItsGeoNetworking + import from LibItsGeoNetworking_TypesAndValues all; + // LibItsSecurity import from LibItsSecurity_TypesAndValues all; import from LibItsSecurity_Pixits all; @@ -2609,8 +2612,8 @@ module LibItsSecurity_Templates { group utPrimitives { - template UtInitialize m_secGnInitialize( - in Oct8 p_hashedId8 + template UtGnInitialize m_secGnInitialize( + in Oct8 p_hashedId8 ) := { hashedId8 := p_hashedId8 } // End of template m_secGnInitialize -- GitLab From 99204451dccb8a5116fb82c4aaa90bdbdb400d16 Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 15 Sep 2017 09:28:37 +0000 Subject: [PATCH 025/320] Start UpperTester changes --- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index 87ef8fc..5f073ad 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -1,5 +1,6 @@ module LibItsDenm_EncdecDeclarations { + import from LibItsDenm_TypesAndValues all; import from LibItsDenm_TestSystem all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; @@ -18,4 +19,7 @@ module LibItsDenm_EncdecDeclarations { external function fx_dec_DENM (inout bitstring b, out DENM p) return integer with {extension "prototype(sliding) decode(PER)"} + external function fx_enc_UtDenmInitialize (UtDenmInitialize p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + } // End of module LibItsDenm_EncdecDeclarations -- GitLab From ec9eb8a41fd77b14ae4cafee64ed4449a524e5e8 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 20 Sep 2017 13:56:09 +0000 Subject: [PATCH 026/320] UpperTester changes --- ttcn/CAM/LibItsCam_Functions.ttcn | 8 ++++---- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 6 ++++++ ttcn/DENM/LibItsDenm_Functions.ttcn | 8 ++++---- ttcn/DENM/LibItsDenm_Templates.ttcn | 4 ++-- ttcn/DENM/LibItsDenm_TestSystem.ttcn | 2 +- ttcn/DENM/LibItsDenm_TypesAndValues.ttcn | 6 +++--- ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn | 4 ++-- .../GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn | 2 +- 8 files changed, 23 insertions(+), 17 deletions(-) diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn index 2a6e5b8..5a25f9d 100644 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ b/ttcn/CAM/LibItsCam_Functions.ttcn @@ -110,10 +110,10 @@ module LibItsCam_Functions { [] utPort.receive(UtCamResults: { utCamChangePositionResult := true}) { tc_wait.stop; } - [] utPort.receive(UtCamResults: { utCamChangePositionResult := false }) { - tc_wait.stop; - log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); - f_selfOrClientSyncAndVerdict("error", e_error); + [] utPort.receive(UtCamResults: { utCamChangePositionResult := false }) { + tc_wait.stop; + log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); + f_selfOrClientSyncAndVerdict("error", e_error); } [] a_utDefault() { } diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index 5f073ad..a9a34ef 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -22,4 +22,10 @@ module LibItsDenm_EncdecDeclarations { external function fx_enc_UtDenmInitialize (UtDenmInitialize p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} + external function fx_enc_UtDenmChangePosition (UtDenmChangePosition p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_enc_UtDenmChangePseudonym (UtDenmChangePseudonym p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + } // End of module LibItsDenm_EncdecDeclarations diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn index 6278fbc..9d0a5ac 100644 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ b/ttcn/DENM/LibItsDenm_Functions.ttcn @@ -58,7 +58,7 @@ module LibItsDenm_Functions { log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); f_selfOrClientSyncAndVerdict("error", e_timeout); } - } + } //activate denmPort default alts vc_denmDefaultActive := true; @@ -69,7 +69,7 @@ module LibItsDenm_Functions { * @desc Requests to change the IUT with a new pseudonym * @param p_change The change to trigger. */ - function f_utChangePseudonym ( template (value) UtChangePseudonym p_change ) runs on ItsDenm { + function f_utChangePseudonym ( template (value) UtDenmChangePseudonym p_change ) runs on ItsDenm { //deactivate denmPort default alts vc_denmDefaultActive := false; @@ -77,11 +77,11 @@ module LibItsDenm_Functions { utPort.send(p_change); tc_wait.start; alt { - [] utPort.receive(UtDenmResults: { utChangePseudonymResult := true}) { + [] utPort.receive(UtDenmResults: { utDenmChangePseudonymResult := true}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); } - [] utPort.receive(UtDenmResults: { utChangePseudonymResult := false}) { + [] utPort.receive(UtDenmResults: { utDenmChangePseudonymResult := false}) { tc_wait.stop; log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); f_selfOrClientSyncAndVerdict("error", e_error); diff --git a/ttcn/DENM/LibItsDenm_Templates.ttcn b/ttcn/DENM/LibItsDenm_Templates.ttcn index 572f253..d88ba6b 100644 --- a/ttcn/DENM/LibItsDenm_Templates.ttcn +++ b/ttcn/DENM/LibItsDenm_Templates.ttcn @@ -146,7 +146,7 @@ module LibItsDenm_Templates { /** * @desc Send template for Upper Tester event changePseudonym */ - template (value) UtChangePseudonym m_utChangePseudonym := { + template (value) UtDenmChangePseudonym m_utDenmChangePseudonym := { } /** @@ -231,7 +231,7 @@ module LibItsDenm_Templates { * @param p_longitude The new longitude * @param p_elevation The new elevation (Default: 0) */ - template (value) UtDenmChangePosition m_utChangePosition( + template (value) UtDenmChangePosition m_utDenmChangePosition( template (value) integer p_latitude, template (value) integer p_longitude, template (value) integer p_elevation := 0 diff --git a/ttcn/DENM/LibItsDenm_TestSystem.ttcn b/ttcn/DENM/LibItsDenm_TestSystem.ttcn index 13bbf90..8bd2b6f 100644 --- a/ttcn/DENM/LibItsDenm_TestSystem.ttcn +++ b/ttcn/DENM/LibItsDenm_TestSystem.ttcn @@ -47,7 +47,7 @@ module LibItsDenm_TestSystem { */ type port UpperTesterPort message { out - UtDenmInitialize, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtDenmChangePosition, UtChangePseudonym; + UtDenmInitialize, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtDenmChangePosition, UtDenmChangePseudonym; in UtDenmResults, UtDenmEventInd; } // end UpperTesterPort diff --git a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn index 433c974..2dccd4e 100644 --- a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn +++ b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn @@ -80,7 +80,7 @@ module LibItsDenm_TypesAndValues { * @member utDenmTriggerResult - * @member utDenmUpdateResult, - * @member utDenmChangePositionResult - - * @member utChangePseudonymResult - + * @member utDenmChangePseudonymResult - */ type union UtDenmResults { boolean utDenmInitializeResult, @@ -88,7 +88,7 @@ module LibItsDenm_TypesAndValues { UtDenmUpdateResult utDenmUpdateResult, boolean utDenmTerminationResult, boolean utDenmChangePositionResult, - boolean utChangePseudonymResult + boolean utDenmChangePseudonymResult } with { variant "" } // End of type UtDenmResults @@ -171,7 +171,7 @@ module LibItsDenm_TypesAndValues { /** * @desc Upper Tester message to change the pseudonym of the DENM IUT */ - type record UtChangePseudonym { + type record UtDenmChangePseudonym { // empty on purpose } with { variant "FIELDORDER(msb)" diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn index 86bd4e7..4790ada 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn @@ -50,9 +50,9 @@ module LibItsGeoNetworking_TestSystem { */ type port UpperTesterPort message { out - UtGnInitialize, UtGnChangePosition, UtAutoInteropTrigger, UtGnTrigger; + UtGnInitialize, UtGnChangePosition, UtAutoInteropTrigger, UtGnTrigger; // FIXME Remove UtAutoInteropTrigger from GN component, create an AutoInterop component in - UtGnResults, UtGnEventInd; + UtGnResults, UtGnEventInd; } // end UpperTesterPort } // end portDefinitions diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn index 7a87779..e908308 100644 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn @@ -949,7 +949,7 @@ module LibItsGeoNetworking_TypesAndValues { type union UtGnResults { boolean utGnInitializeResult, boolean utGnTriggerResult, - boolean utGnAutoInteropTriggerResult, + boolean utAutoInteropTriggerResult, // FIXME Remove UtAutoInteropTrigger from GN component, create an AutoInterop component boolean utGnChangePositionResult } with { variant "" -- GitLab From cc915fee1ee5581385f45d58db7bab2f9afb29c6 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 25 Sep 2017 12:10:18 +0000 Subject: [PATCH 027/320] UpperTester changes validation --- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index a9a34ef..778c29c 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -28,4 +28,16 @@ module LibItsDenm_EncdecDeclarations { external function fx_enc_UtDenmChangePseudonym (UtDenmChangePseudonym p) return bitstring with {extension "prototype(convert) encode(UpperTester)"} + external function fx_enc_UtDenmTrigger (UtDenmTrigger p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_enc_UtDenmUpdate (UtDenmUpdate p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_enc_UtDenmTermination (UtDenmTermination p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_dec_UtDenmResults (inout bitstring b, out UtDenmResults p) return integer + with {extension "prototype(sliding) decode(UpperTester)"} + } // End of module LibItsDenm_EncdecDeclarations -- GitLab From c6f9f3d343f568ce6e47f15be0f3339bf2187f0a Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 27 Sep 2017 07:18:02 +0000 Subject: [PATCH 028/320] UpperTester/DENM validation --- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index 778c29c..5b8e61d 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -40,4 +40,7 @@ module LibItsDenm_EncdecDeclarations { external function fx_dec_UtDenmResults (inout bitstring b, out UtDenmResults p) return integer with {extension "prototype(sliding) decode(UpperTester)"} + external function fx_dec_UtDenmEventInd (inout bitstring b, out UtDenmEventInd p) return integer + with {extension "prototype(sliding) decode(UpperTester)"} + } // End of module LibItsDenm_EncdecDeclarations -- GitLab From 7f63cabbd62e8fb5f15fa6f332b67c37208100c7 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 27 Sep 2017 13:26:50 +0000 Subject: [PATCH 029/320] UpperTester/CAM validation --- ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn | 19 ++++++++++++++++++- ttcn/CAM/LibItsCam_TypesAndValues.ttcn | 2 +- ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn index c298696..296a07d 100644 --- a/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn +++ b/ttcn/CAM/LibItsCam_EncdecDeclarations.ttcn @@ -4,6 +4,7 @@ module LibItsCam_EncdecDeclarations { import from CAM_PDU_Descriptions language "ASN.1:1997" all; // LibItsCam + import from LibItsCam_TypesAndValues all; import from LibItsCam_TestSystem all; external function fx_enc_CamReq (CamReq p) return bitstring @@ -23,5 +24,21 @@ module LibItsCam_EncdecDeclarations { /* external function fx_enc_CAM (CAM p) return octetstring with {extension "prototype(convert) encode(BER:BER_ENCODE_CER)"} -*/ +*/ + + external function fx_enc_UtCamInitialize (UtCamInitialize p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_enc_UtCamChangePosition (UtCamChangePosition p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_enc_UtCamTrigger (UtCamTrigger p) return bitstring + with {extension "prototype(convert) encode(UpperTester)"} + + external function fx_dec_UtCamResults (inout bitstring b, out UtCamResults p) return integer + with {extension "prototype(sliding) decode(UpperTester)"} + + external function fx_dec_UtCamEventInd (inout bitstring b, out UtCamEventInd p) return integer + with {extension "prototype(sliding) decode(UpperTester)"} + } // End of module LibItsCam_EncdecDeclarations diff --git a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn index ff19154..e6e077b 100644 --- a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn +++ b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn @@ -164,7 +164,7 @@ module LibItsCam_TypesAndValues { * @desc Upper Tester message to check event/status on CAM IUT */ type record UtCamEventInd { - CAM camMsg + CAM camMsg // TODO Rename into caMsg to be compliant with UtDenmEventInd } with { encode (camMsg) "LibItsCam_asn1" } diff --git a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn index 5b8e61d..1b737e8 100644 --- a/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn +++ b/ttcn/DENM/LibItsDenm_EncdecDeclarations.ttcn @@ -1,6 +1,9 @@ module LibItsDenm_EncdecDeclarations { + // LibIts import from LibItsDenm_TypesAndValues all; + + // LibItsDenm import from LibItsDenm_TestSystem all; import from DENM_PDU_Descriptions language "ASN.1:1997" all; -- GitLab From c2dab5af2393df2f6ddd340b45cc16324caad35d Mon Sep 17 00:00:00 2001 From: filatov Date: Thu, 28 Sep 2017 15:12:43 +0000 Subject: [PATCH 030/320] Security ASN1 files --- asn1/Security/1609Dot2/IEEE1609dot2.asn | 310 ++++++++++++++++ .../1609Dot2/IEEE1609dot2BaseTypes.asn | 334 ++++++++++++++++++ asn1/Security/EtsiTs103097Module.asn | 105 ++++++ 3 files changed, 749 insertions(+) create mode 100755 asn1/Security/1609Dot2/IEEE1609dot2.asn create mode 100755 asn1/Security/1609Dot2/IEEE1609dot2BaseTypes.asn create mode 100755 asn1/Security/EtsiTs103097Module.asn diff --git a/asn1/Security/1609Dot2/IEEE1609dot2.asn b/asn1/Security/1609Dot2/IEEE1609dot2.asn new file mode 100755 index 0000000..67d7682 --- /dev/null +++ b/asn1/Security/1609Dot2/IEEE1609dot2.asn @@ -0,0 +1,310 @@ +IEEE1609dot2 {iso(1) identified-organization(3) ieee(111) +standards-association-numbered-series-standards(2) wave-stds(1609) +dot2(2) base (1) schema (1) major-version-2(2)} + +--****************************************************************************** +-- +-- IEEE P1609.2 Data Types +-- +--****************************************************************************** + +DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +EXPORTS ALL; + +IMPORTS + CrlSeries, + EccP256CurvePoint, + EciesP256EncryptedKey, + EncryptionKey, + GeographicRegion, + GroupLinkageValue, + HashAlgorithm, + HashedId3, + HashedId8, + Hostname, + IValue, + LinkageValue, + Opaque, + Psid, + PsidSsp, + PsidSspRange, + PublicEncryptionKey, + PublicVerificationKey, + SequenceOfHashedId3, + SequenceOfPsidSsp, + SequenceOfPsidSspRange, + ServiceSpecificPermissions, + Signature, + SubjectAssurance, + SymmetricEncryptionKey, + ThreeDLocation, + Time64, + Uint3, + Uint8, + Uint16, + Uint32, + ValidityPeriod +FROM IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111) + standards-association-numbered-series-standards(2) wave-stds(1609) + dot2(2) base(1) base-types(2) major-version-2 (2)} + +; + +-- +--********************************************************************* +-- +-- Structures for describing secured data +-- +--********************************************************************* + +-- Necessary to get certain tools to generate sample PDUs +-- TestIeee1609Dot2Data ::= Ieee1609Dot2Data +-- TestCertificate ::= Certificate + +-- this structure belongs later in the file but putting it here avoids +-- compiler errors with certain tools +SignedDataPayload ::= SEQUENCE { + data Ieee1609Dot2Data OPTIONAL, + extDataHash HashedData OPTIONAL, + ... +} + (WITH COMPONENTS {..., data PRESENT} | + WITH COMPONENTS {..., extDataHash PRESENT}) + +Ieee1609Dot2Data ::= SEQUENCE { + protocolVersion Uint8(3), + content Ieee1609Dot2Content +} + +Ieee1609Dot2Content ::= CHOICE { + unsecuredData Opaque, + signedData SignedData, + encryptedData EncryptedData, + signedCertificateRequest Opaque, + ... +} + +SignedData ::= SEQUENCE { + hashId HashAlgorithm, + tbsData ToBeSignedData, + signer SignerIdentifier, + signature Signature +} + +SignerIdentifier ::= CHOICE { + digest HashedId8, + certificate SequenceOfCertificate, + self NULL, + ... +} + +ToBeSignedData ::= SEQUENCE { + payload SignedDataPayload, + headerInfo HeaderInfo +} + +HashedData::= CHOICE { + sha256HashedData OCTET STRING (SIZE(32)), + ... +} + +HeaderInfo ::= SEQUENCE { + psid Psid, + generationTime Time64 OPTIONAL, + expiryTime Time64 OPTIONAL, + generationLocation ThreeDLocation OPTIONAL, + p2pcdLearningRequest HashedId3 OPTIONAL, + missingCrlIdentifier MissingCrlIdentifier OPTIONAL, + encryptionKey EncryptionKey OPTIONAL, + ..., + inlineP2pcdRequest SequenceOfHashedId3 OPTIONAL, + requestedCertificate Certificate OPTIONAL +} + +MissingCrlIdentifier ::= SEQUENCE { + cracaId HashedId3, + crlSeries CrlSeries, + ... +} + +Countersignature ::= Ieee1609Dot2Data (WITH COMPONENTS {..., + content (WITH COMPONENTS {..., + signedData (WITH COMPONENTS {..., + tbsData (WITH COMPONENTS {..., + payload (WITH COMPONENTS {..., + data ABSENT, + extDataHash PRESENT + }), + headerInfo(WITH COMPONENTS {..., + generationTime PRESENT, + expiryTime ABSENT, + generationLocation ABSENT, + p2pcdLearningRequest ABSENT, + missingCrlIdentifier ABSENT, + encryptionKey ABSENT + }) + }) + }) + }) +}) + +--********************************************************************** +-- +-- Structures for describing encrypted data +-- +--********************************************************************** + + +EncryptedData ::= SEQUENCE { + recipients SequenceOfRecipientInfo, + ciphertext SymmetricCiphertext +} +RecipientInfo ::= CHOICE { + pskRecipInfo PreSharedKeyRecipientInfo, + symmRecipInfo SymmRecipientInfo, + certRecipInfo PKRecipientInfo, + signedDataRecipInfo PKRecipientInfo, + rekRecipInfo PKRecipientInfo +} + +SequenceOfRecipientInfo ::= SEQUENCE OF RecipientInfo + +PreSharedKeyRecipientInfo ::= HashedId8 +SymmRecipientInfo ::= SEQUENCE { + recipientId HashedId8, + encKey SymmetricCiphertext +} + +PKRecipientInfo ::= SEQUENCE { + recipientId HashedId8, + encKey EncryptedDataEncryptionKey +} + +EncryptedDataEncryptionKey ::= CHOICE { + eciesNistP256 EciesP256EncryptedKey, + eciesBrainpoolP256r1 EciesP256EncryptedKey, + ... +} + +SymmetricCiphertext ::= CHOICE { + aes128ccm AesCcmCiphertext, + ... +} + +AesCcmCiphertext ::= SEQUENCE { + nonce OCTET STRING (SIZE (12)), + ccmCiphertext Opaque -- 16 bytes longer than plaintext +} + + +--********************************************************************** +-- +-- Certificates and other security management data structures +-- +--********************************************************************** + +-- Certificates are implicit (type = implicit, toBeSigned includes +-- reconstruction value, signature absent) or explicit (type = explicit, +-- toBeSigned includes verification key, signature present). + +Certificate ::= CertificateBase (ImplicitCertificate | ExplicitCertificate) + +SequenceOfCertificate ::= SEQUENCE OF Certificate + +CertificateBase ::= SEQUENCE { + version Uint8(3), + type CertificateType, + issuer IssuerIdentifier, + toBeSigned ToBeSignedCertificate, + signature Signature OPTIONAL +} + +CertificateType ::= ENUMERATED { + explicit, + implicit, + ... +} + +ImplicitCertificate ::= CertificateBase (WITH COMPONENTS {..., + type(implicit), + toBeSigned(WITH COMPONENTS {..., + verifyKeyIndicator(WITH COMPONENTS {reconstructionValue}) + }), + signature ABSENT + }) + +ExplicitCertificate ::= CertificateBase (WITH COMPONENTS {..., + type(explicit), + toBeSigned(WITH COMPONENTS {..., + verifyKeyIndicator(WITH COMPONENTS {verificationKey}) + }), + signature PRESENT + }) + +IssuerIdentifier ::= CHOICE { + sha256AndDigest HashedId8, + self HashAlgorithm, + ..., + sha384AndDigest HashedId8 +} + +ToBeSignedCertificate ::= SEQUENCE { + id CertificateId, + cracaId HashedId3, + crlSeries CrlSeries, + validityPeriod ValidityPeriod, + region GeographicRegion OPTIONAL, + assuranceLevel SubjectAssurance OPTIONAL, + appPermissions SequenceOfPsidSsp OPTIONAL, + certIssuePermissions SequenceOfPsidGroupPermissions OPTIONAL, + certRequestPermissions SequenceOfPsidGroupPermissions OPTIONAL, + canRequestRollover NULL OPTIONAL, + encryptionKey PublicEncryptionKey OPTIONAL, + verifyKeyIndicator VerificationKeyIndicator, + ... +} +(WITH COMPONENTS { ..., appPermissions PRESENT} | + WITH COMPONENTS { ..., certIssuePermissions PRESENT} | + WITH COMPONENTS { ..., certRequestPermissions PRESENT}) + +CertificateId ::= CHOICE { + linkageData LinkageData, + name Hostname, + binaryId OCTET STRING(SIZE(1..64)), + none NULL, + ... +} + +LinkageData ::= SEQUENCE { + iCert IValue, + linkage-value LinkageValue, + group-linkage-value GroupLinkageValue OPTIONAL +} + +--EndEntityType ::= BIT STRING {app (0), enrol (1) } (SIZE (8)) (ALL EXCEPT {}) +EndEntityType ::= BIT STRING {app (0), enrol (1) } (SIZE (8)) + +PsidGroupPermissions ::= SEQUENCE { + subjectPermissions SubjectPermissions, + minChainLength INTEGER DEFAULT 1, + chainLengthRange INTEGER DEFAULT 0, + eeType EndEntityType DEFAULT '00'H +} + +SequenceOfPsidGroupPermissions ::= SEQUENCE OF PsidGroupPermissions + +SubjectPermissions ::= CHOICE { + explicit SequenceOfPsidSspRange, + all NULL, + ... +} + +VerificationKeyIndicator ::= CHOICE { + verificationKey PublicVerificationKey, + reconstructionValue EccP256CurvePoint, + ... +} + +END + diff --git a/asn1/Security/1609Dot2/IEEE1609dot2BaseTypes.asn b/asn1/Security/1609Dot2/IEEE1609dot2BaseTypes.asn new file mode 100755 index 0000000..04a38ac --- /dev/null +++ b/asn1/Security/1609Dot2/IEEE1609dot2BaseTypes.asn @@ -0,0 +1,334 @@ +IEEE1609dot2BaseTypes {iso(1) identified-organization(3) ieee(111) +standards-association-numbered-series-standards(2) wave-stds(1609) +dot2(2) base(1) base-types(2) major-version-2(2)} + +-- +--******************************************************************** +-- IEEE P1609.2 Base Data Types +-- +--******************************************************************** + +DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +EXPORTS ALL; + + +-- ------------------------------------------------------------------ +-- +-- Integers +-- +-- ------------------------------------------------------------------ + + +Uint3 ::= INTEGER (0..7) -- (hex) 07 +Uint8 ::= INTEGER (0..255) -- (hex) ff +Uint16 ::= INTEGER (0..65535) -- (hex) ff ff +Uint32 ::= INTEGER (0..4294967295)---- -- (hex) ff ff ff ff +Uint64 ::= INTEGER (0..18446744073709551615) -- (hex) ff ff ff ff ff ff ff ff +-- Uint64 ::= INTEGER -- -- (hex) ff ff ff ff ff ff ff ff + +SequenceOfUint8 ::= SEQUENCE OF Uint8 +SequenceOfUint16 ::= SEQUENCE OF Uint16 + +-- ------------------------------------------------------------------ +-- +-- OCTET STRING types +-- +-- ------------------------------------------------------------------ + + +Opaque ::= OCTET STRING + + +HashedId10 ::= OCTET STRING (SIZE(10)) +HashedId8 ::= OCTET STRING (SIZE(8)) +HashedId3 ::= OCTET STRING (SIZE(3)) +SequenceOfHashedId3 ::= SEQUENCE OF HashedId3 + + +-- ------------------------------------------------------------------ +-- +-- Time +-- +-- ------------------------------------------------------------------ + +Time32 ::= Uint32 +Time64 ::= Uint64 + +ValidityPeriod ::= SEQUENCE { + start Time32, + duration Duration +} + +Duration ::= CHOICE { + microseconds Uint16, + milliseconds Uint16, + seconds Uint16, + minutes Uint16, + hours Uint16, + sixtyHours Uint16, + years Uint16 +} + +-- ------------------------------------------------------------------ +-- +-- Location +-- +-- ------------------------------------------------------------------ + + +GeographicRegion ::= CHOICE { + circularRegion CircularRegion, + rectangularRegion SequenceOfRectangularRegion, + polygonalRegion PolygonalRegion, + identifiedRegion SequenceOfIdentifiedRegion, + ... +} + +CircularRegion ::= SEQUENCE { + center TwoDLocation, + radius Uint16 +} + +RectangularRegion ::= SEQUENCE { + northWest TwoDLocation, + southEast TwoDLocation +} + +SequenceOfRectangularRegion ::= SEQUENCE OF RectangularRegion + +PolygonalRegion ::= SEQUENCE SIZE(3..MAX) OF TwoDLocation + +TwoDLocation ::= SEQUENCE { + latitude Latitude, + longitude Longitude +} + +IdentifiedRegion ::= CHOICE { + countryOnly CountryOnly, + countryAndRegions CountryAndRegions, + countryAndSubregions CountryAndSubregions, + ... +} + +SequenceOfIdentifiedRegion ::= SEQUENCE OF IdentifiedRegion + +CountryOnly ::= Uint16 + +CountryAndRegions ::= SEQUENCE { + countryOnly CountryOnly, + regions SequenceOfUint8 +} + +CountryAndSubregions ::= SEQUENCE { + country CountryOnly, + regionAndSubregions SequenceOfRegionAndSubregions +} + +RegionAndSubregions ::= SEQUENCE { + region Uint8, + subregions SequenceOfUint16 +} + +SequenceOfRegionAndSubregions ::= SEQUENCE OF RegionAndSubregions + +ThreeDLocation ::= SEQUENCE { + latitude Latitude, + longitude Longitude, + elevation Elevation +} + +Latitude ::= NinetyDegreeInt +Longitude ::= OneEightyDegreeInt +Elevation ::= ElevInt + +NinetyDegreeInt ::= INTEGER { + min (-900000000), + max (900000000), + unknown (900000001) +} (-900000000..900000001) + +KnownLatitude ::= NinetyDegreeInt (min..max) -- Minus 90deg to +90deg in microdegree intervals +UnknownLatitude ::= NinetyDegreeInt (unknown) + +OneEightyDegreeInt ::= INTEGER { + min (-1799999999), + max (1800000000), + unknown (1800000001) +} (-1799999999..1800000001) + +KnownLongitude ::= OneEightyDegreeInt (min..max) +UnknownLongitude ::= OneEightyDegreeInt (unknown) + +ElevInt ::= Uint16 -- Range is from -4096 to 61439 in units of one-tenth of a meter + +-- ------------------------------------------------------------------ +-- +-- Crypto +-- +-- ------------------------------------------------------------------ + +Signature ::= CHOICE { + ecdsaNistP256Signature EcdsaP256Signature, + ecdsaBrainpoolP256r1Signature EcdsaP256Signature, + ..., + ecdsaBrainpoolP384r1Signature EcdsaP384Signature +} + +EcdsaP256Signature ::= SEQUENCE { + rSig EccP256CurvePoint, + sSig OCTET STRING (SIZE (32)) +} + +EcdsaP384Signature ::= SEQUENCE { + rSig EccP384CurvePoint, + sSig OCTET STRING (SIZE (48)) +} + +EccP256CurvePoint ::= CHOICE { + x-only OCTET STRING (SIZE (32)), + fill NULL, -- consistency with 1363 / X9.62 + compressed-y-0 OCTET STRING (SIZE (32)), + compressed-y-1 OCTET STRING (SIZE (32)), + uncompressedP256 SEQUENCE { + x OCTET STRING (SIZE (32)), + y OCTET STRING (SIZE (32)) + } +} + +EccP384CurvePoint::= CHOICE { + x-only OCTET STRING (SIZE (48)), + fill NULL, -- consistency w 1363 / X9.62 + compressed-y-0 OCTET STRING (SIZE (48)), + compressed-y-1 OCTET STRING (SIZE (48)), + uncompressedP384 SEQUENCE { + x OCTET STRING (SIZE (48)), + y OCTET STRING (SIZE (48)) + } +} + + +SymmAlgorithm ::= ENUMERATED { + aes128Ccm, + ... +} + +HashAlgorithm ::= ENUMERATED { + sha256, + ..., + sha384 +} + +EciesP256EncryptedKey ::= SEQUENCE { + v EccP256CurvePoint, + c OCTET STRING (SIZE (16)), + t OCTET STRING (SIZE (16)) +} + +EncryptionKey ::= CHOICE { + public PublicEncryptionKey, + symmetric SymmetricEncryptionKey +} + +PublicEncryptionKey ::= SEQUENCE { + supportedSymmAlg SymmAlgorithm, + publicKey BasePublicEncryptionKey +} + +BasePublicEncryptionKey ::= CHOICE { + eciesNistP256 EccP256CurvePoint, + eciesBrainpoolP256r1 EccP256CurvePoint, + ... +} + +PublicVerificationKey ::= CHOICE { + ecdsaNistP256 EccP256CurvePoint, + ecdsaBrainpoolP256r1 EccP256CurvePoint, + ..., + ecdsaBrainpoolP384r1 EccP384CurvePoint +} + +SymmetricEncryptionKey ::= CHOICE { + aes128Ccm OCTET STRING(SIZE(16)), + ... +} + +-- ------------------------------------------------------------------ +-- +-- PSID / ITS-AID +-- +-- ------------------------------------------------------------------ + + +PsidSsp ::= SEQUENCE { + psid Psid, + ssp ServiceSpecificPermissions OPTIONAL +} + +SequenceOfPsidSsp ::= SEQUENCE OF PsidSsp + +Psid ::= INTEGER (0..MAX) + +SequenceOfPsid ::= SEQUENCE OF Psid + +ServiceSpecificPermissions ::= CHOICE { + opaque OCTET STRING (SIZE(0..MAX)), + ..., + bitmapSsp BitmapSsp +} + +BitmapSsp ::= OCTET STRING (SIZE(0..31)) + +PsidSspRange ::= SEQUENCE { + psid Psid, + sspRange SspRange OPTIONAL +} + +SequenceOfPsidSspRange ::= SEQUENCE OF PsidSspRange + +SspRange ::= CHOICE { + opaque SequenceOfOctetString, + all NULL, + ... , + bitmapSspRange BitmapSspRange +} + +BitmapSspRange ::= SEQUENCE { + sspValue OCTET STRING (SIZE(1..32)), + sspBitmask OCTET STRING (SIZE(1..32)) +} + +SequenceOfOctetString ::= SEQUENCE (SIZE (0..MAX)) OF + OCTET STRING (SIZE(0..MAX)) + + +-- ------------------------------------------------------------------ +-- +-- Goes in certs +-- +-- ------------------------------------------------------------------ + +SubjectAssurance ::= OCTET STRING (SIZE(1)) + +CrlSeries ::= Uint16 + + +-- ------------------------------------------------------------------ +-- +-- Pseudonym Linkage +-- +-- ------------------------------------------------------------------ + +IValue ::= Uint16 +Hostname ::= UTF8String (SIZE(0..255)) +LinkageValue ::= OCTET STRING (SIZE(9)) +GroupLinkageValue ::= SEQUENCE { + jValue OCTET STRING (SIZE(4)), + value OCTET STRING (SIZE(9)) +} + +LaId ::= OCTET STRING (SIZE(2)) +LinkageSeed ::= OCTET STRING (SIZE(16)) + +END + diff --git a/asn1/Security/EtsiTs103097Module.asn b/asn1/Security/EtsiTs103097Module.asn new file mode 100755 index 0000000..9477ab6 --- /dev/null +++ b/asn1/Security/EtsiTs103097Module.asn @@ -0,0 +1,105 @@ +EtsiTs103097Module +{ itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg5(5) ts(103097) v1(0) } + +DEFINITIONS AUTOMATIC TAGS ::= BEGIN + +IMPORTS + +Ieee1609Dot2Data, ExplicitCertificate + +FROM + +IEEE1609dot2 {iso(1) identified-organization(3) ieee(111) +standards-association-numbered-series-standards(2) wave-stds(1609) +dot2(2) base (1) schema (1) major-version-2(2)}; + +EtsiTs103097Certificate::= ExplicitCertificate + (WITH COMPONENTS{..., + toBeSigned (WITH COMPONENTS{..., + id (WITH COMPONENTS{..., + linkageData ABSENT, + binaryId ABSENT + }), + certRequestPermissions ABSENT, + canRequestRollover ABSENT + }) + }) + +SingleEtsiTs103097Certificate ::= SEQUENCE { + only EtsiTs103097Certificate +} + + +EtsiTs103097Data::=Ieee1609Dot2Data (WITH COMPONENTS {..., + content (WITH COMPONENTS {..., + signedData (WITH COMPONENTS {..., -- constraints on signed data headers + tbsData (WITH COMPONENTS { + headerInfo (WITH COMPONENTS {..., + generationTime PRESENT, + p2pcdLearningRequest ABSENT, + missingCrlIdentifier ABSENT + }) + }), + signer (WITH COMPONENTS {..., --constraints on the certificate + certificate (SIZE(1)) + }) + }), + encryptedData (WITH COMPONENTS {..., -- constraints on encrypted data headers + recipients (WITH COMPONENT ( + (WITH COMPONENTS {..., + pskRecipInfo ABSENT, + symmRecipInfo ABSENT, + rekRecipInfo ABSENT + }) + )) + }), + signedCertificateRequest ABSENT + }) +}) + +EtsiTs103097Data-Signed {ToBeSignedDataContent} ::= EtsiTs103097Data (WITH COMPONENTS {..., + content (WITH COMPONENTS { + signedData (WITH COMPONENTS {..., + tbsData (WITH COMPONENTS { + payload (WITH COMPONENTS { + data (WITH COMPONENTS {..., + content (WITH COMPONENTS { + unsecuredData (CONTAINING ToBeSignedDataContent) + }) + }) PRESENT + }) + }) + }) + }) +}) + +EtsiTs103097Data-SignedExternalPayload ::= EtsiTs103097Data (WITH COMPONENTS {..., + content (WITH COMPONENTS { + signedData (WITH COMPONENTS {..., + tbsData (WITH COMPONENTS { + payload (WITH COMPONENTS { + extDataHash (WITH COMPONENTS { + sha256HashedData PRESENT + }) PRESENT + }) + }) + }) + }) +}) + +EtsiTs103097Data-Encrypted {ToBeEncryptedDataContent} ::= EtsiTs103097Data (WITH COMPONENTS {..., + content (WITH COMPONENTS { + encryptedData (WITH COMPONENTS {..., + ciphertext (WITH COMPONENTS {..., + aes128ccm (WITH COMPONENTS {..., + ccmCiphertext (CONSTRAINED BY {-- ccm encryption of -- ToBeEncryptedDataContent}) + }) + }) + }) + }) +}) + + +EtsiTs103097Data-SignedAndEncrypted {ToBesignedAndEncryptedDataContent} ::= EtsiTs103097Data-Encrypted {EtsiTs103097Data-Signed {ToBesignedAndEncryptedDataContent}} + +END -- GitLab From 55adc50e43044bd51799b713ffeb941c38c00696 Mon Sep 17 00:00:00 2001 From: filatov Date: Thu, 28 Sep 2017 15:17:20 +0000 Subject: [PATCH 031/320] original ISO19091 asn1 files are necessary for asn1c --- asn1/IS/ISO_TS_19091/original/AddGrpC.asn | 122 ++ asn1/IS/ISO_TS_19091/original/DSRC.asn | 1870 +++++++++++++++++++++ asn1/IS/ISO_TS_19091/original/REGION.asn | 111 ++ 3 files changed, 2103 insertions(+) create mode 100755 asn1/IS/ISO_TS_19091/original/AddGrpC.asn create mode 100755 asn1/IS/ISO_TS_19091/original/DSRC.asn create mode 100755 asn1/IS/ISO_TS_19091/original/REGION.asn diff --git a/asn1/IS/ISO_TS_19091/original/AddGrpC.asn b/asn1/IS/ISO_TS_19091/original/AddGrpC.asn new file mode 100755 index 0000000..ce1f9d6 --- /dev/null +++ b/asn1/IS/ISO_TS_19091/original/AddGrpC.asn @@ -0,0 +1,122 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 19091 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message +-- as defined in ISO TS 19091 and SAEJ2735 +-- +-- It includes the addendunm extensions for Addgrp-C (e.g. Europe) +-- +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: AddGrpC +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +AddGrpC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) } + + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, DeltaTime, LaneID FROM DSRC +Altitude, StationID, DeltaAltitude FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; + + +ConnectionManeuverAssist-addGrpC ::= SEQUENCE { + itsStationPositions ItsStationPositionList OPTIONAL, + rsuGNSSOffset NodeOffsetPointXY OPTIONAL, + ... +} + +ConnectionTrajectory-addGrpC ::= SEQUENCE { + nodes NodeSetXY, + ... +} + +Control-addGrpC ::= SEQUENCE { + ptvRequest PtvRequestType, + ... +} + +IntersectionState-addGrpC ::= SEQUENCE { + activePrioritizations PrioritizationResponseList OPTIONAL, + ... +} + +MapData-addGrpC ::= SEQUENCE { + signalHeadLocations SignalHeadLocationList OPTIONAL, + ... +} + +Position3D-addGrpC ::= SEQUENCE { + altitude Altitude, + ... +} + +PrioritizationResponseList ::= SEQUENCE SIZE(1..10) OF PrioritizationResponse + +PrioritizationResponse ::= SEQUENCE { + stationID StationID, + priorState PrioritizationResponseStatus, + signalGroup SignalGroupID, + ... +} + +RestrictionUserType-addGrpC ::= SEQUENCE { + emission EmissionType OPTIONAL, + ... +} + +SignalHeadLocationList ::= SEQUENCE (SIZE(1..64)) OF SignalHeadLocation + +SignalHeadLocation ::= SEQUENCE { + nodeXY NodeOffsetPointXY, + nodeZ DeltaAltitude, + signalGroupID SignalGroupID, + ... +} + +SignalStatusPackage-addGrpC ::= SEQUENCE { + synchToSchedule DeltaTime OPTIONAL, + ... +} + + +ItsStationPositionList::= SEQUENCE SIZE(1..5) OF ItsStationPosition + +ItsStationPosition ::= SEQUENCE { + stationID StationID, + laneID LaneID OPTIONAL, + nodeXY NodeOffsetPointXY OPTIONAL, + timeReference TimeReference OPTIONAL, + ... +} +EmissionType ::= ENUMERATED { + euro1, + euro2, + euro3, + euro4, + euro5, + euro6, + ... +} + +PtvRequestType ::= ENUMERATED { + preRequest, + mainRequest, + doorCloseRequest, + cancelRequest, + emergencyRequest, + ... +} + +TimeReference ::= INTEGER { oneMilliSec(1) } (0..65535) + +END + + + diff --git a/asn1/IS/ISO_TS_19091/original/DSRC.asn b/asn1/IS/ISO_TS_19091/original/DSRC.asn new file mode 100755 index 0000000..6dd38f0 --- /dev/null +++ b/asn1/IS/ISO_TS_19091/original/DSRC.asn @@ -0,0 +1,1870 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 19091 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message +-- as defined in ISO TS 19091 and SAEJ2735 +-- +-- It includes the addendunm extensions for Addgrp-C (e.g. Europe) +-- +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: DSRC +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +StationID, Longitude, Latitude, SpeedConfidence FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } +Reg-SPAT,Reg-SignalRequestMessage, Reg-SignalStatusMessage, Reg-MapData, Reg-AdvisorySpeed, Reg-ComputedLane, Reg-ConnectionManeuverAssist, +Reg-GenericLane, Reg-IntersectionGeometry, Reg-IntersectionState, Reg-LaneAttributes, Reg-LaneDataAttribute, Reg-MovementEvent, Reg-MovementState, +Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY,Reg-Position3D, Reg-RequestorDescription, Reg-RequestorType, Reg-RestrictionUserType, Reg-RoadSegment, +Reg-SignalControlZone, Reg-SignalRequestPackage, Reg-SignalRequest, Reg-SignalStatusPackage, Reg-SignalStatus FROM REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1)} +Iso3833VehicleType FROM ElectronicRegistrationIdentificationVehicleDataModule { iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1) }; + +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- +-- Start of entries from table Messages... +-- This table typicaly contains message entries. +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- + +MessageFrame ::= SEQUENCE { + messageId MESSAGE-ID-AND-TYPE.&id({MessageTypes}), + value MESSAGE-ID-AND-TYPE.&Type({MessageTypes}{@.messageId}), + ... + } + +MESSAGE-ID-AND-TYPE ::= CLASS { + &id DSRCmsgID UNIQUE, + &Type + } WITH SYNTAX {&Type IDENTIFIED BY &id} + +MessageTypes MESSAGE-ID-AND-TYPE ::= { + { MapData IDENTIFIED BY mapData } | + { SPAT IDENTIFIED BY signalPhaseAndTimingMessage } | + { SignalRequestMessage IDENTIFIED BY signalRequestMessage } | + { SignalStatusMessage IDENTIFIED BY signalStatusMessage }, + ... -- Expansion to be used only by the SAE J2735 DSRC TC + } + + +-- Regional extensions support +REG-EXT-ID-AND-TYPE ::= CLASS { + &id RegionId UNIQUE, + &Type + } WITH SYNTAX {&Type IDENTIFIED BY &id} + +RegionalExtension {REG-EXT-ID-AND-TYPE : Set} ::= SEQUENCE { + regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), + regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) + } + +SPAT ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + name DescriptiveName OPTIONAL, + -- human readable name for this collection + -- to be used only in debug mode + + intersections IntersectionStateList, + -- sets of SPAT data (one per intersection) + + -- If PrioritizationResponse data is required, it is found + -- in the RegionalSPAT entry below + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SPAT}} OPTIONAL, + ... + } + +SignalRequestMessage ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + second DSecond, + sequenceNumber MsgCount OPTIONAL, + + requests SignalRequestList OPTIONAL, + -- Request Data for one or more signalized + -- intersections that support SRM dialogs + + requestor RequestorDescription, + -- Requesting Device and other User Data + -- contains vehicle ID (if from a vehicle) + -- as well as type data and current position + -- and may contain additional transit data + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL, + ... +} + +SignalStatusMessage ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + second DSecond, + sequenceNumber MsgCount OPTIONAL, + + -- Status Data for one of more signalized intersections + status SignalStatusList, + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL, + ... +} + +MapData ::= SEQUENCE { + timeStamp MinuteOfTheYear OPTIONAL, + msgIssueRevision MsgCount, + layerType LayerType OPTIONAL, + layerID LayerID OPTIONAL, + intersections IntersectionGeometryList OPTIONAL, + -- All Intersection definitions + roadSegments RoadSegmentList OPTIONAL, + -- All roadway descriptions + + dataParameters DataParameters OPTIONAL, + -- Any meta data regarding the map contents + + restrictionList RestrictionClassList OPTIONAL, + -- Any restriction ID tables which have + -- established for these map entries + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MapData}} OPTIONAL, + + -- NOTE: + -- Other map data will be added here as it is defined + -- Examples of the type of content to be added include + -- curve warnings, construction routes, etc. + ... +} + + +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- +-- Start of entries from table Data_Frames... +-- This table typicaly contains data frame entries. +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- + +AdvisorySpeed ::= SEQUENCE { + type AdvisorySpeedType, + -- the type of advisory which this is. + speed SpeedAdvice OPTIONAL, + -- See Section 11 for converting and translating speed + -- expressed in mph into units of m/s + -- This element is optional ONLY when superceded + -- by the presence of a regional speed element found in + -- Reg-AdvisorySpeed entry + confidence SpeedConfidence OPTIONAL, + -- A confidence value for the above speed + distance ZoneLength OPTIONAL, + -- Unit = 1 meter, + -- 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 RestrictionClassID OPTIONAL, + -- the vehicle types to which it applies + -- when absent, the AdvisorySpeed applies to + -- all motor vehicle types + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL, + ... + } + +AdvisorySpeedList ::= SEQUENCE (SIZE(1..16)) OF AdvisorySpeed + +ComputedLane ::= SEQUENCE { + -- Data needed to created a computed lane + referenceLaneId LaneID, + -- the lane ID upon which this + -- computed lane will be based + -- Lane Offset in X and Y direction + offsetXaxis CHOICE { + small DrivenLineOffsetSm, + large DrivenLineOffsetLg + }, + offsetYaxis CHOICE { + small DrivenLineOffsetSm, + large DrivenLineOffsetLg + }, + -- A path X offset value for translations of the + -- path's points when creating translated lanes. + -- The values found in the reference lane are + -- all offset based on the X and Y values from + -- the coordinates of the reference lane's + -- initial path point. + -- Lane Rotation + rotateXY Angle OPTIONAL, + -- A path rotation value for the entire lane + -- Observe that this rotates the existing orientation + -- of the referenced lane, it does not replace it. + -- Rotation occurs about the initial path point. + -- Lane Path Scale (zooming) + scaleXaxis Scale-B12 OPTIONAL, + scaleYaxis Scale-B12 OPTIONAL, + -- value for translations or zooming of the path's + -- points. The values found in the reference lane + -- are all expanded or contracted based on the X + -- and Y and width values from the coordinates of + -- the reference lane's initial path point. + -- The Z axis remains untouched. + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-ComputedLane}} OPTIONAL, + ... + } +ConnectsToList ::= SEQUENCE (SIZE(1..16)) OF Connection + +ConnectingLane ::= SEQUENCE { + lane LaneID, -- Index of the connecting lane + maneuver AllowedManeuvers OPTIONAL + -- The Maneuver between + -- the enclosing lane and this lane + -- at the stop line to connect them + } + + +Connection ::= SEQUENCE { + -- The subject lane connecting to this lane is: + connectingLane ConnectingLane, + -- The index of the connecting lane and also + -- the maneuver from the current lane to it + remoteIntersection IntersectionReferenceID OPTIONAL, + -- This entry is only used when the + -- indicated connecting lane belongs + -- to another intersection layout. This + -- provides a means to create meshes of lanes + + -- SPAT mapping details at the stop line are: + signalGroup SignalGroupID OPTIONAL, + -- The matching signal group send by + -- the SPAT message for this lane/maneuver. + -- Shall be present unless the connectingLane + -- has no signal group (is un-signalized) + userClass RestrictionClassID OPTIONAL, + -- The Restriction Class of users this applies to + -- The use of some lane/maneuver and SignalGroupID + -- pairings are restricted to selected users. + -- When absent, the SignalGroupID applies to all + + -- Movement assist details are given by: + connectionID LaneConnectionID OPTIONAL + -- An optional connection index used to + -- relate this lane connection to any dynamic + -- clearance data in the SPAT. Note that + -- the index may be shared with other + -- connections if the clearance data is common + } + + +ConnectionManeuverAssist ::= SEQUENCE { + connectionID LaneConnectionID, + -- the common connectionID used by all lanes to which + -- this data applies + -- (this value traces to ConnectsTo entries in lanes) + -- Expected Clearance Information + queueLength ZoneLength OPTIONAL, + -- Unit = 1 meter, 0 = no queue + -- The distance from the stop line to the back + -- edge of the last vehicle in the queue, + -- as measured along the lane center line. + availableStorageLength ZoneLength OPTIONAL, + -- Unit = 1 meter, 0 = no space remains + -- Distance (e.g. beginning from the downstream + -- stop-line up to a given distance) with a high + -- probability for successfully executing the + -- connecting maneuver between the two lanes + -- during the current cycle. + -- Used for enhancing the awareness of vehicles + -- to anticipate if they can pass the stop line + -- of the lane. Used for optimizing the green wave, + -- due to knowledge of vehicles waiting in front + -- of a red light (downstream). + -- The element nextTime in TimeChangeDetails + -- in the containing data frame contains the next + -- timemark at which an active phase is expected, + -- a form of storage flush interval. + waitOnStop WaitOnStopline OPTIONAL, + -- If "true", the vehicles on this specific connecting + -- maneuver have to stop on the stop-line and not + -- to enter the collision area + pedBicycleDetect PedestrianBicycleDetect OPTIONAL, + -- true if ANY ped or bicycles are detected crossing + -- the above lanes. Set to false ONLY if there is a + -- high certainty that there are none present, + -- otherwise element is not sent. + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL, + ... + } + +DataParameters ::= SEQUENCE { + processMethod IA5String(SIZE(1..255)) OPTIONAL, + processAgency IA5String(SIZE(1..255)) OPTIONAL, + lastCheckedDate IA5String(SIZE(1..255)) OPTIONAL, + geoidUsed IA5String(SIZE(1..255)) OPTIONAL, + ... + } + +EnabledLaneList ::= SEQUENCE (SIZE(1..16)) OF LaneID + -- The unique ID numbers for each + -- lane object which is 'active' + -- as part of the dynamic map contents. + +GenericLane ::= SEQUENCE { + laneID LaneID, + -- The unique ID number assigned + -- to this lane object + name DescriptiveName OPTIONAL, + -- often for debug use only + -- but at times used to name ped crossings + ingressApproach ApproachID OPTIONAL, -- inbound + egressApproach ApproachID OPTIONAL, -- outbound + -- Approach IDs to which this lane belongs + laneAttributes LaneAttributes, + -- All Attribute information about + -- the basic selected lane type + -- Directions of use, Geometric co-sharing + -- and Type Specific Attributes + -- These Attributes are 'lane - global' that is, + -- they are true for the entire length of the lane + maneuvers AllowedManeuvers OPTIONAL, + -- the permitted maneuvers for this lane + nodeList 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 ConnectsToList OPTIONAL, + -- 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 OverlayLaneList OPTIONAL, + -- A list of any lanes which have spatial paths that + -- overlay (run on top of, and not simply cross) + -- the path of this lane when used + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-GenericLane}} OPTIONAL, + ... + } + +IntersectionAccessPoint ::= CHOICE { + lane LaneID, + approach ApproachID, + connection LaneConnectionID, + ... + } + +IntersectionGeometry ::= SEQUENCE { + name DescriptiveName OPTIONAL, + -- For debug use only + id IntersectionReferenceID, + -- A globally unique value set, + -- consisting of a regionID and + -- intersection ID assignment + revision MsgCount, + + -- Required default values about lane descriptions follow + refPoint Position3D, -- The reference from which subsequent + -- data points are offset until a new + -- point is used. + laneWidth LaneWidth OPTIONAL, + -- Reference width used by all subsequent + -- lanes unless a new width is given + speedLimits SpeedLimitList OPTIONAL, + -- Reference regulatory speed limits + -- used by all subsequent + -- lanes unless a new speed is given + -- See Section 11 for converting and + -- translating speed expressed in mph + -- into units of m/s + -- Complete details regarding each lane type in this intersection + laneSet LaneList, -- Data about one or more lanes + -- (all lane data is found here) + + -- Data describing how to use and request preemption and + -- priority services from this intersection (if supported) + -- NOTE Additonal data may be added in the next release of the + -- standard at this point to handle this concept + preemptPriorityData PreemptPriorityList OPTIONAL, + -- data about one or more regional + -- preempt or priority zones + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-IntersectionGeometry}} OPTIONAL, + ... + } + +IntersectionGeometryList ::= SEQUENCE (SIZE(1..32)) OF IntersectionGeometry + +IntersectionReferenceID ::= SEQUENCE { + region RoadRegulatorID OPTIONAL, + -- a globally unique regional assignment value + -- typical assigned to a regional DOT authority + -- the value zero shall be used for testing needs + id IntersectionID + -- a unique mapping to the intersection + -- in question within the above region of use + } + +IntersectionState ::= SEQUENCE { + name DescriptiveName OPTIONAL, + -- human readable name for intersection + -- to be used only in debug mode + id 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 MsgCount, + status IntersectionStatusObject, + -- general status of the controller(s) + moy MinuteOfTheYear OPTIONAL, + -- Minute of current UTC year + -- used only with messages to be archived + timeStamp DSecond OPTIONAL, + -- the mSec point in the current UTC minute that + -- this message was constructed + enabledLanes EnabledLaneList OPTIONAL, + -- a list of lanes where the RevocableLane bit + -- has been set which are now active and + -- therefore part of the current intersection + states MovementList, + -- 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 ManeuverAssistList OPTIONAL, + -- Assist data + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-IntersectionState}} OPTIONAL, + ... + } + +IntersectionStateList ::= SEQUENCE (SIZE(1..32)) OF IntersectionState + +LaneAttributes ::= SEQUENCE { + directionalUse LaneDirection, -- directions of lane use + sharedWith LaneSharing, -- co-users of the lane path + laneType LaneTypeAttributes, -- specific lane type data + regional RegionalExtension {{Reg-LaneAttributes}} OPTIONAL + } + +LaneDataAttribute ::= CHOICE { + -- Segment attribute types and the data needed for each + pathEndPointAngle DeltaAngle, + -- adjusts final point/width slant + -- of the lane to align with the stop line + laneCrownPointCenter RoadwayCrownAngle, + -- sets the canter of the road bed + -- from centerline point + laneCrownPointLeft RoadwayCrownAngle, + -- sets the canter of the road bed + -- from left edge + laneCrownPointRight RoadwayCrownAngle, + -- sets the canter of the road bed + -- from right edge + laneAngle MergeDivergeNodeAngle, + -- the angle or direction of another lane + -- this is required to support Japan style + -- when a merge point angle is required + speedLimits SpeedLimitList, + -- Reference regulatory speed limits + -- used by all segments + + -- Add others as needed, in regional space + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-LaneDataAttribute}}, + ... + } + +LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute + +LaneList ::= SEQUENCE (SIZE(1..255)) OF GenericLane + +LaneSharing ::= BIT STRING { + -- With bits as defined: + overlappingLaneDescriptionProvided (0), + -- Assert when another lane object is present to describe the + -- path of the overlapping shared lane + -- this construct is not used for lane objects which simply cross + multipleLanesTreatedAsOneLane (1), + -- Assert if the lane object path and width details represents + -- multiple lanes within it that are not further described + + -- Various modes and type of traffic that may share this lane: + otherNonMotorizedTrafficTypes (2), -- horse drawn etc. + individualMotorizedVehicleTraffic (3), + busVehicleTraffic (4), + taxiVehicleTraffic (5), + pedestriansTraffic (6), + cyclistVehicleTraffic (7), + trackedVehicleTraffic (8), + pedestrianTraffic (9) + } (SIZE (10)) + -- All zeros would indicate 'not shared' and 'not overlapping' + +LaneTypeAttributes ::= CHOICE { + vehicle LaneAttributes-Vehicle, -- motor vehicle lanes + crosswalk LaneAttributes-Crosswalk, -- pedestrian crosswalks + bikeLane LaneAttributes-Bike, -- bike lanes + sidewalk LaneAttributes-Sidewalk, -- pedestrian sidewalk paths + median LaneAttributes-Barrier, -- medians & channelization + striping LaneAttributes-Striping, -- roadway markings + trackedVehicle LaneAttributes-TrackedVehicle, -- trains and trolleys + parking LaneAttributes-Parking, -- parking and stopping lanes + ... + } + +ManeuverAssistList ::= SEQUENCE (SIZE(1..16)) OF ConnectionManeuverAssist + +MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent + +MovementEvent ::= SEQUENCE { + eventState MovementPhaseState, + -- Consisting of: + -- Phase state (the basic 11 states) + -- Directional, protected, or permissive state + + timing TimeChangeDetails OPTIONAL, + -- Timing Data in UTC time stamps for event + -- includes start and min/max end times of phase + -- confidence and estimated next occurrence + + speeds AdvisorySpeedList OPTIONAL, + -- various speed advisories for use by + -- general and specific types of vehicles + -- supporting green-wave and other flow needs + -- See Section 11 for converting and translating + -- speed expressed in mph into units of m/s + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MovementEvent}} OPTIONAL, + ... + } + +MovementList ::= SEQUENCE (SIZE(1..255)) OF MovementState + +MovementState ::= SEQUENCE { + movementName DescriptiveName OPTIONAL, + -- uniquely defines movement by name + -- human readable name for intersection + -- to be used only in debug mode + signalGroup SignalGroupID, + -- the group id is used to map to lists + -- of lanes (and their descriptions) + -- which this MovementState data applies to + -- see comments in the Remarks for usage details + state-time-speed MovementEventList, + -- Consisting of sets of movement data with: + -- a) SignalPhaseState + -- b) TimeChangeDetails, and + -- c) AdvisorySpeeds (optional ) + -- Note one or more of the movement events may be for + -- a future time and that this allows conveying multiple + -- predictive phase and movement timing for various uses + -- for the current signal group + maneuverAssistList ManeuverAssistList OPTIONAL, + -- This information may also be placed in the + -- IntersectionState when common information applies to + -- different lanes in the same way + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-MovementState}} OPTIONAL, + ... + } + +NodeAttributeSetXY ::= SEQUENCE { + localNode NodeAttributeXYList OPTIONAL, + -- Attribute states which pertain to this node point + disabled SegmentAttributeXYList OPTIONAL, + -- Attribute states which are disabled at this node point + enabled SegmentAttributeXYList OPTIONAL, + -- Attribute states which are enabled at this node point + -- and which remain enabled until disabled or the lane ends + data LaneDataAttributeList OPTIONAL, + -- Attributes which require an additional data values + -- some of these are local to the node point, while others + -- persist with the provided values until changed + -- and this is indicated in each entry + dWidth Offset-B10 OPTIONAL, + -- A value added to the current lane width + -- at this node and from this node onwards, in 1cm steps + -- lane width between nodes are a linear taper between pts + -- the value of zero shall not be sent here + dElevation Offset-B10 OPTIONAL, + -- A value added to the current Elevation + -- at this node from this node onwards, in 10cm steps + -- elevations between nodes are a linear taper between pts + -- the value of zero shall not be sent here + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, + ... + } + +NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY + +NodeAttributeXY ::= ENUMERATED { + -- Various values which pertain only to the current node point + + -- General Items + reserved, + stopLine, -- point where a mid-path stop line exists + -- See also 'do not block' for segments + + -- Path finish details + roundedCapStyleA, -- Used to control final path rounded end shape + -- with edge of curve at final point in a circle + roundedCapStyleB, -- Used to control final path rounded end shape + -- with edge of curve extending 50% of width past + -- final point in a circle + + -- Topography Points (items with no concept of a distance along the path) + mergePoint, -- Japan merge with 1 or more lanes + divergePoint, -- Japan diverge with 1 or more lanes + downstreamStopLine, -- Japan style downstream intersection + -- (a 2nd intersection) stop line + downstreamStartNode, -- Japan style downstream intersection + -- (a 2nd intersection) start node + + -- Pedestrian Support Attributes + closedToTraffic, -- where a pedestrian may NOT go + -- to be used during construction events + safeIsland, -- a pedestrian safe stopping point + -- also called a traffic island + -- This usage described a point feature on a path, + -- other entries can describe a path + curbPresentAtStepOff, -- the sidewalk to street curb is NOT + -- angled where it meets the edge of the + -- roadway (user must step up/down) + + -- Lane geometry details (see standard for defined shapes) + hydrantPresent, -- Or other services access + ... + } + +Node-LLmD-64b ::= SEQUENCE { + lon Longitude, + lat Latitude + } + + Node-XY-20b ::= SEQUENCE { + x Offset-B10, + y Offset-B10 + } + +Node-XY-22b ::= SEQUENCE { + x Offset-B11, + y Offset-B11 + } + + +Node-XY-24b ::= SEQUENCE { + x Offset-B12, + y Offset-B12 + } + + +Node-XY-26b ::= SEQUENCE { + x Offset-B13, + y Offset-B13 + } + + +Node-XY-28b ::= SEQUENCE { + x Offset-B14, + y Offset-B14 + } + + +Node-XY-32b ::= SEQUENCE { + x Offset-B16, + y Offset-B16 + } + +NodeListXY ::= CHOICE { + nodes NodeSetXY, + -- a lane made up of two or more + -- XY node points and any attributes + -- defined in those nodes + computed ComputedLane, + -- a lane path computed by translating + -- the data defined by another lane + ... + } + +NodeOffsetPointXY ::= CHOICE { + -- Nodes with X,Y content + node-XY1 Node-XY-20b, -- node is within 5.11m of last node + node-XY2 Node-XY-22b, -- node is within 10.23m of last node + node-XY3 Node-XY-24b, -- node is within 20.47m of last node + node-XY4 Node-XY-26b, -- node is within 40.96m of last node + node-XY5 Node-XY-28b, -- node is within 81.91m of last node + node-XY6 Node-XY-32b, -- node is within 327.67m of last node + node-LatLon Node-LLmD-64b, -- node is a full 32b Lat/Lon range + regional RegionalExtension {{Reg-NodeOffsetPointXY}} + -- node which follows is of a + -- regional definition type + } + +NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY + +NodeXY ::= SEQUENCE { + delta NodeOffsetPointXY, + -- A choice of which X,Y offset value to use + -- this includes various delta values as well a regional choices + attributes NodeAttributeSetXY OPTIONAL, + -- Any optional Attributes which are needed + -- This includes changes to the current lane width and elevation + ... +} + +OverlayLaneList ::= SEQUENCE (SIZE(1..5)) OF LaneID + -- The unique ID numbers for any lane object which have + -- spatial paths that overlay (run on top of, and not + -- simply cross with) the current lane. + -- Such as a train path that overlays a motor vehicle + -- lane object for a roadway segment. + +Position3D ::= SEQUENCE { + lat Latitude, -- in 1/10th micro degrees + long Longitude, -- in 1/10th micro degrees + elevation Elevation OPTIONAL, -- in 10 cm units + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-Position3D}} OPTIONAL, + ... + } + +PreemptPriorityList ::= SEQUENCE (SIZE(1..32)) OF SignalControlZone + +RegulatorySpeedLimit ::= SEQUENCE { + type SpeedLimitType, + -- The type of regulatory speed which follows + speed Velocity + -- The speed in units of 0.02 m/s + -- See Section 11 for converting and translating + -- speed expressed in mph into units of m/s + } + +RequestorDescription ::= SEQUENCE { + id VehicleID, + -- The ID used in the BSM or CAM of the requestor + -- This ID is presumed not to change + -- during the exchange + type RequestorType OPTIONAL, + -- Information regarding all type and class data + -- about the requesting vehicle + position RequestorPositionVector OPTIONAL, + -- The location of the requesting vehicle + name DescriptiveName OPTIONAL, + -- A human readable name for debugging use + -- Support for Transit requests + routeName DescriptiveName OPTIONAL, + -- A string for transit operations use + transitStatus TransitVehicleStatus OPTIONAL, + -- current vehicle state (loading, etc.) + transitOccupancy TransitVehicleOccupancy OPTIONAL, + -- current vehicle occupancy + transitSchedule DeltaTime OPTIONAL, + -- current vehicle schedule adherence + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RequestorDescription}} OPTIONAL, + ... + } + +RequestorPositionVector ::= SEQUENCE { + position Position3D, + heading Angle OPTIONAL, + speed TransmissionAndSpeed OPTIONAL, + ... + } + +RequestorType ::= SEQUENCE { + -- Defines who is requesting + role BasicVehicleRole, -- Basic role of this user at this time + subrole RequestSubRole OPTIONAL, -- A local list with role based items + + -- Defines what kind of request (a level of importance in the Priority Scheme) + request RequestImportanceLevel OPTIONAL, -- A local list with request items + + -- Additional classification details + iso3883 Iso3833VehicleType OPTIONAL, + hpmsType VehicleType OPTIONAL, -- HPMS classification types + + regional RegionalExtension {{Reg-RequestorType}} OPTIONAL, + ... + } + +RestrictionClassAssignment ::= SEQUENCE { + id RestrictionClassID, + -- the unique value (within an intersection or local region) + -- that is assigned to this group of users + users RestrictionUserTypeList + -- The list of user types/classes + -- to which this restriction ID applies + } + +RestrictionClassList ::= SEQUENCE (SIZE(1..254)) OF RestrictionClassAssignment + +RestrictionUserTypeList ::= SEQUENCE (SIZE(1..16)) OF RestrictionUserType + +RestrictionUserType ::= CHOICE { + basicType RestrictionAppliesTo, + -- a set of the most commonly used types + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RestrictionUserType}}, + ... + } + +RoadLaneSetList ::= SEQUENCE (SIZE(1..255)) OF GenericLane + +RoadSegmentReferenceID ::= SEQUENCE { + region RoadRegulatorID OPTIONAL, + -- a globally unique regional assignment value + -- typically assigned to a regional DOT authority + -- the value zero shall be used for testing needs + id RoadSegmentID + -- a unique mapping to the road segment + -- in question within the above region of use + -- during its period of assignment and use + -- note that unlike intersectionID values, + -- this value can be reused by the region + } + +RoadSegment ::= SEQUENCE { + name DescriptiveName OPTIONAL, + id RoadSegmentReferenceID, + -- a globally unique value for the segment + revision MsgCount, + -- Required default values about the descriptions to follow + refPoint Position3D, -- the reference from which subsequent + -- data points are offset until a new + -- point is used. + laneWidth LaneWidth OPTIONAL, + -- Reference width used by all subsequent + -- lanes unless a new width is given + speedLimits SpeedLimitList OPTIONAL, + -- Reference regulatory speed limits + -- used by all subsequent + -- lanes unless a new speed is given + -- See Section 11 for converting and + -- translating speed expressed in mph + -- into units of m/s + + -- Data describing disruptions in the RoadSegment + -- such as work zones etc will be added here; + -- in the US the SAE ITIS codes would be used here + -- The details regarding each lane type in the RoadSegment + roadLaneSet RoadLaneSetList, + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-RoadSegment}} OPTIONAL, + ... + } + +RoadSegmentList ::= SEQUENCE (SIZE(1..32)) OF RoadSegment + +SegmentAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF SegmentAttributeXY + +SignalControlZone ::= SEQUENCE { + zone RegionalExtension {{Reg-SignalControlZone}}, + ... + } + +SignalRequesterInfo ::= SEQUENCE { + -- These three items serve to uniquely identify the requester + -- and the specific request to all parties + id VehicleID, + request RequestID, + sequenceNumber MsgCount, + role BasicVehicleRole OPTIONAL, + + typeData RequestorType OPTIONAL, + -- Used when addition data besides the role + -- is needed, at which point the role entry + -- above is not sent. + ... + } + +SignalRequestList ::= SEQUENCE (SIZE(1..32)) OF SignalRequestPackage + +SignalRequestPackage ::= SEQUENCE { + request SignalRequest, + -- The specific request to the intersection + -- contains IntersectionID, request type, + -- requested action (approach/lane request) + + -- The Estimated Time of Arrival (ETA) when the service is requested + minute MinuteOfTheYear OPTIONAL, + second DSecond OPTIONAL, + duration DSecond OPTIONAL, + -- The duration value is used to provide a short interval that + -- extends the ETA so that the requesting vehicle can arrive at + -- the point of service with uncertainty or with some desired + -- duration of service. This concept can be used to avoid needing + -- to frequently update the request. + -- The requester must update the ETA and duration values if the + -- period of services extends beyond the duration time. + -- It should be assumed that if the vehicle does not clear the + -- intersection when the duration is reached, the request will + -- be cancelled and the intersection will revert to + -- normal operation. + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL, + ... + } + +SignalRequest ::= SEQUENCE { + -- the unique ID of the target intersection + id IntersectionReferenceID, + + -- The unique requestID used by the requestor + requestID RequestID, + + -- The type of request or cancel for priority or preempt use + -- when a prior request is canceled, only the requestID is needed + requestType PriorityRequestType, + + -- In typical use either an approach or a lane number would + -- be given, this indicates the requested + -- path through the intersection to the degree it is known. + inBoundLane IntersectionAccessPoint, + -- desired entry approach or lane + outBoundLane IntersectionAccessPoint OPTIONAL, + -- desired exit approach or lane + -- the values zero is used to indicate + -- intent to stop within the intersection + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalRequest}} OPTIONAL, + ... + } + +SignalStatusList ::= SEQUENCE (SIZE(1..32)) OF SignalStatus + +SignalStatusPackageList ::= SEQUENCE (SIZE(1..32)) OF SignalStatusPackage + +SignalStatusPackage ::= SEQUENCE { + -- The party that made the initial SRM request + requester SignalRequesterInfo OPTIONAL, + -- The lanes or approaches used in the request + inboundOn IntersectionAccessPoint, -- estimated lane / approach of vehicle + outboundOn IntersectionAccessPoint OPTIONAL, + + -- The Estimated Time of Arrival (ETA) when the service is requested + -- This data echos the data of the request + minute MinuteOfTheYear OPTIONAL, + second DSecond OPTIONAL, + duration DSecond OPTIONAL, + + -- the SRM status for this request + status PrioritizationResponseStatus, + -- Status of request, this may include rejection + + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatusPackage}} OPTIONAL, + ... + } + +SignalStatus ::= SEQUENCE { + sequenceNumber MsgCount, + -- changed whenever the below contents have change + id IntersectionReferenceID, + -- this provides a unique mapping to the + -- intersection map in question + -- which provides complete location + -- and approach/movement/lane data + -- as well as zones for priority/preemption + sigStatus SignalStatusPackageList, + -- a list of detailed status containing all + -- priority or preemption state data, both + -- active and pending, and who requested it + -- requests which are denied are also listed + -- here for a short period of time + regional SEQUENCE (SIZE(1..4)) OF + RegionalExtension {{Reg-SignalStatus}} OPTIONAL, + ... + } + +SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit + +SpeedLimitType ::= ENUMERATED { + unknown, -- Speed limit type not available + maxSpeedInSchoolZone, -- Only sent when the limit is active + maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time + maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc. + -- where a reduced speed is present + vehicleMinSpeed, + vehicleMaxSpeed, -- Regulatory speed limit for general traffic + vehicleNightMaxSpeed, + + truckMinSpeed, + truckMaxSpeed, + truckNightMaxSpeed, + + vehiclesWithTrailersMinSpeed, + vehiclesWithTrailersMaxSpeed, + vehiclesWithTrailersNightMaxSpeed, + ... + } + +TimeChangeDetails ::= SEQUENCE { + startTime TimeMark OPTIONAL, + -- When this phase 1st started + minEndTime TimeMark, + -- Expected shortest end time + maxEndTime TimeMark OPTIONAL, + -- Expected longest end time + + likelyTime TimeMark OPTIONAL, + -- Best predicted value based on other data + confidence TimeIntervalConfidence OPTIONAL, + -- Applies to above time element only + + nextTime TimeMark OPTIONAL + -- A rough estimate of time when + -- this phase may next occur again + -- used to support various ECO driving power + -- management needs. + } + +TimeMark ::= INTEGER (0..36001) + -- Tenths of a second in the current or next hour + -- In units of 1/10th second from UTC time + -- A range of 0~36000 covers one hour + -- The values 35991..36000 are used when a leap second occurs + -- The value 36001 is used to indicate time >3600 seconds + -- 36002 is to be used when value undefined or unknown + -- Note that this is NOT expressed in GPS time + -- or in local time + +TransmissionAndSpeed ::= SEQUENCE { + transmisson TransmissionState, + speed Velocity + } + +VehicleID ::= CHOICE { + entityID TemporaryID, + stationID StationID + } + + +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- +-- Start of entries from table Data_Elements... +-- This table typicaly contains data element entries. +-- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-- + +AdvisorySpeedType ::= ENUMERATED { + none (0), + greenwave (1), + ecoDrive (2), + transit (3), + ... + } -- Note: subject to further growth + +AllowedManeuvers ::= BIT STRING { + -- With bits as defined: + -- Allowed maneuvers at path end (stop line) + -- All maneuvers with bits not set are therefore prohibited ! + -- A value of zero shall be used for unknown, indicating no Maneuver + maneuverStraightAllowed (0), + -- a Straight movement is allowed in this lane + maneuverLeftAllowed (1), + -- a Left Turn movement is allowed in this lane + maneuverRightAllowed (2), + -- a Right Turn movement is allowed in this lane + maneuverUTurnAllowed (3), + -- a U turn movement is allowed in this lane + maneuverLeftTurnOnRedAllowed (4), + -- a Stop, and then proceed when safe movement + -- is allowed in this lane + maneuverRightTurnOnRedAllowed (5), + -- a Stop, and then proceed when safe movement + -- is allowed in this lane + maneuverLaneChangeAllowed (6), + -- a movement which changes to an outer lane + -- on the egress side is allowed in this lane + -- (example: left into either outbound lane) + maneuverNoStoppingAllowed (7), + -- the vehicle should not stop at the stop line + -- (example: a flashing green arrow) + yieldAllwaysRequired (8), + -- the allowed movements above are not protected + -- (example: an permanent yellow condition) + goWithHalt (9), + -- after making a full stop, may proceed + caution (10), + -- proceed past stop line with caution + reserved1 (11) + -- used to align to 12 Bit Field + + } (SIZE(12)) + +Angle ::= INTEGER (0..28800) + -- LSB of 0.0125 degrees + -- A range of 0 to 359.9875 degrees + +ApproachID ::= INTEGER (0..15) -- zero to be used when valid value is unknown + +BasicVehicleRole ::= ENUMERATED { + -- Values used in the EU and in the US + basicVehicle (0), -- Light duty passenger vehicle type + publicTransport (1), -- Used in EU for Transit us + specialTransport (2), -- Used in EU (e.g. heavy load) + dangerousGoods (3), -- Used in EU for any HAZMAT + roadWork (4), -- Used in EU for State and Local DOT uses + roadRescue (5), -- Used in EU and in the US to include tow trucks. + emergency (6), -- Used in EU for Police, Fire and Ambulance units + safetyCar (7), -- Used in EU for Escort vehicles + -- Begin US unique numbering + none-unknown (8), -- added to follow current SAE style guidelines + truck (9), -- Heavy trucks with additional BSM rights and obligations + motorcycle (10), -- + roadSideSource (11), -- For infrastructure generated calls such as + -- fire house, rail infrastructure, roadwork site, etc. + police (12), -- + fire (13), -- + ambulance (14), -- (does not include private para-transit etc.) + dot (15), -- all roadwork vehicles + transit (16), -- all transit vehicles + slowMoving (17), -- to also include oversize etc. + stopNgo (18), -- to include trash trucks, school buses and others + -- that routinely disturb the free flow of traffic + cyclist (19), -- + pedestrian (20), -- also includes those with mobility limitations + nonMotorized (21), -- other, horse drawn, etc. + military (22), -- + ... + } + +DeltaAngle ::= INTEGER (-150..150) + -- With an angle range from + -- negative 150 to positive 150 + -- in one degree steps where zero is directly + -- along the axis or the lane center line as defined by the + -- two closest points + +DeltaTime ::= INTEGER (-122 .. 121) + -- Supporting a range of +/- 20 minute in steps of 10 seconds + -- the value of -121 shall be used when more than -20 minutes + -- the value of +120 shall be used when more than +20 minutes + -- the value -122 shall be used when the value is unavailable + +DescriptiveName ::= IA5String (SIZE(1..63)) + +DrivenLineOffsetLg ::= INTEGER (-32767..32767) + -- LSB units are 1 cm. + +DrivenLineOffsetSm ::= INTEGER (-2047..2047) + -- LSB units are 1 cm. + +DSecond ::= INTEGER (0..65535) -- units of milliseconds + +DSRCmsgID ::= INTEGER (0..32767) + mapData DSRCmsgID ::= 18 -- MAP, intersections + signalPhaseAndTimingMessage DSRCmsgID ::= 19 -- SPAT + signalRequestMessage DSRCmsgID ::= 29 -- SRM + signalStatusMessage DSRCmsgID ::= 30 -- SSM + +Elevation ::= INTEGER (-4096..61439) + -- In units of 10 cm steps above or below the reference ellipsoid + -- Providing a range of -409.5 to + 6143.9 meters + -- The value -4096 shall be used when Unknown is to be sent + +IntersectionID ::= INTEGER (0..65535) + -- The values zero through 255 are allocated for testing purposes + -- Note that the value assigned to an intersection will be + -- unique within a given regional ID only + +IntersectionStatusObject ::= BIT STRING { + manualControlIsEnabled (0), + -- Timing reported is per programmed values, etc. but person + -- at cabinet can manually request that certain intervals are + -- terminated early (e.g. green). + stopTimeIsActivated (1), + -- And all counting/timing has stopped. + failureFlash (2), + -- Above to be used for any detected hardware failures, + -- e.g. conflict monitor as well as for police flash + preemptIsActive (3), + signalPriorityIsActive (4), + + -- Additional states + fixedTimeOperation (5), + -- Schedule of signals is based on time only + -- (i.e. the state can be calculated) + trafficDependentOperation (6), + -- Operation is based on different levels of traffic parameters + -- (requests, duration of gaps or more complex parameters) + standbyOperation (7), + -- Controller: partially switched off or partially amber flashing + failureMode (8), + -- Controller has a problem or failure in operation + off (9), + -- Controller is switched off + + -- Related to MAP and SPAT bindings + recentMAPmessageUpdate (10), + -- Map revision with content changes + recentChangeInMAPassignedLanesIDsUsed (11), + -- Change in MAP's assigned lanes used (lane changes) + -- Changes in the active lane list description + noValidMAPisAvailableAtThisTime (12), + -- MAP (and various lanes indexes) not available + noValidSPATisAvailableAtThisTime (13) + -- SPAT system is not working at this time + + -- Bits 14,15 reserved at this time and shall be zero + } (SIZE(16)) + + +LaneAttributes-Barrier ::= BIT STRING { + -- With bits as defined: + median-RevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + median (1), + whiteLineHashing (2), + stripedLines (3), + doubleStripedLines (4), + trafficCones (5), + constructionBarrier (6), + trafficChannels (7), + lowCurbs (8), + highCurbs (9) + -- Bits 10~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Bike ::= BIT STRING { + -- With bits as defined: + bikeRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + pedestrianUseAllowed (1), + -- The path allows pedestrian traffic, + -- if not set, this mode is prohibited + isBikeFlyOverLane (2), + -- path of lane is not at grade + fixedCycleTime (3), + -- the phases use preset times + -- i.e. there is not a 'push to cross' button + biDirectionalCycleTimes (4), + -- ped walk phases use different SignalGroupID + -- for each direction. The first SignalGroupID + -- in the first Connection represents 'inbound' + -- flow (the direction of travel towards the first + -- node point) while second SignalGroupID in the + -- next Connection entry represents the 'outbound' + -- flow. And use of RestrictionClassID entries + -- in the Connect follow this same pattern in pairs. + isolatedByBarrier (5), + unsignalizedSegmentsPresent (6) + -- The lane path consists of one of more segments + -- which are not part of a signal group ID + + -- Bits 7~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Crosswalk ::= BIT STRING { + -- With bits as defined: + -- MUTCD provides no suitable "types" to use here + crosswalkRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + bicyleUseAllowed (1), + -- The path allows bicycle traffic, + -- if not set, this mode is prohibited + isXwalkFlyOverLane (2), + -- path of lane is not at grade + fixedCycleTime (3), + -- ped walk phases use preset times + -- i.e. there is not a 'push to cross' button + biDirectionalCycleTimes (4), + -- ped walk phases use different SignalGroupID + -- for each direction. The first SignalGroupID + -- in the first Connection represents 'inbound' + -- flow (the direction of travel towards the first + -- node point) while second SignalGroupID in the + -- next Connection entry represents the 'outbound' + -- flow. And use of RestrictionClassID entries + -- in the Connect follow this same pattern in pairs. + hasPushToWalkButton (5), + -- Has a demand input + audioSupport (6), + -- audio crossing cues present + rfSignalRequestPresent (7), + -- Supports RF push to walk technologies + unsignalizedSegmentsPresent (8) + -- The lane path consists of one of more segments + -- which are not part of a signal group ID + -- Bits 9~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Parking ::= BIT STRING { + -- With bits as defined: + -- Parking use details, note that detailed restrictions such as + -- allowed hours are sent by way of ITIS codes in the TIM message + parkingRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + parallelParkingInUse (1), + headInParkingInUse (2), + doNotParkZone (3), + -- used to denote fire hydrants as well as + -- short disruptions in a parking zone + parkingForBusUse (4), + parkingForTaxiUse (5), + noPublicParkingUse (6) + -- private parking, as in front of + -- private property + -- Bits 7~15 reserved and set to zero + } (SIZE (16)) + +LaneAttributes-Sidewalk ::= BIT STRING { + -- With bits as defined: + sidewalk-RevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + bicyleUseAllowed (1), + -- The path allows bicycle traffic, + -- if not set, this mode is prohibited + isSidewalkFlyOverLane (2), + -- path of lane is not at grade + walkBikes (3) + -- bike traffic must dismount and walk + -- Bits 4~15 reserved and set to zero + } (SIZE (16)) + + +LaneAttributes-Striping ::= BIT STRING { + -- With bits as defined: + stripeToConnectingLanesRevocableLane (0), + -- this lane may be activated or not activated based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + stripeDrawOnLeft (1), + stripeDrawOnRight (2), + -- which side of lane to mark + stripeToConnectingLanesLeft (3), + stripeToConnectingLanesRight (4), + stripeToConnectingLanesAhead (5) + -- the stripe type should be + -- presented to the user visually + -- to reflect stripes in the + -- intersection for the type of + -- movement indicated + -- Bits 6~15 reserved and set to zero + } (SIZE (16)) + + +LaneAttributes-TrackedVehicle ::= BIT STRING { + -- With bits as defined: + spec-RevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + spec-commuterRailRoadTrack (1), + spec-lightRailRoadTrack (2), + spec-heavyRailRoadTrack (3), + spec-otherRailType (4) + -- Bits 5~15 reserved and set to zero + } (SIZE (16)) + + +LaneAttributes-Vehicle ::= BIT STRING { + -- With bits as defined: + isVehicleRevocableLane (0), + -- this lane may be activated or not based + -- on the current SPAT message contents + -- if not asserted, the lane is ALWAYS present + isVehicleFlyOverLane (1), + -- path of lane is not at grade + hovLaneUseOnly (2), + restrictedToBusUse (3), + restrictedToTaxiUse (4), + restrictedFromPublicUse (5), + hasIRbeaconCoverage (6), + permissionOnRequest (7) -- e.g. to inform about a lane for e-cars + + } (SIZE (8,...)) + +LaneConnectionID ::= INTEGER (0..255) + +LaneDirection ::= BIT STRING { + -- With bits as defined: + -- Allowed directions of travel in the lane object + -- All lanes are described from the stop line outwards + ingressPath (0), + -- travel from rear of path to front + -- is allowed + egressPath (1) + -- travel from front of path to rear + -- is allowed + -- Notes: No Travel, i.e. the lane object type does not support + -- travel (medians, curbs, etc.) is indicated by not + -- asserting any bit value + -- Bi-Directional Travel (such as a ped crosswalk) is + -- indicated by asserting both of the bits + } (SIZE (2)) + +LaneID ::= INTEGER (0..255) + -- the value 0 shall be used when the lane ID is + -- not available or not known + -- the value 255 is reserved for future use + +LayerID ::= INTEGER (0..100) + +LayerType ::= ENUMERATED { + none, + mixedContent, -- two or more of the below types + generalMapData, + intersectionData, + curveData, + roadwaySectionData, + parkingAreaData, + sharedLaneData, + ... + } + +LaneWidth ::= INTEGER (0..32767) -- units of 1 cm + +MergeDivergeNodeAngle ::= INTEGER (-180..180) + -- In units of 1.5 degrees from north + -- the value -180 shall be used to represent + -- data is not available or unknown + +MinuteOfTheYear ::= INTEGER (0..527040) + -- the value 527040 shall be used for invalid + +MovementPhaseState ::= ENUMERATED { + -- Note that based on the regions and the operating mode not every + -- phase will be used in all transportation modes and that not + -- every phase will be used in all transportation modes + + unavailable (0), + -- This state is used for unknown or error + dark (1), + -- The signal head is dark (unlit) + + -- Reds + stop-Then-Proceed (2), + -- Often called 'flashing red' in US + -- Driver Action: + -- Stop vehicle at stop line. + -- Do not proceed unless it is safe. + -- Note that the right to proceed either right or left when + -- it is safe may be contained in the lane description to + -- handle what is called a 'right on red' + stop-And-Remain (3), + -- e.g. called 'red light' in US + -- Driver Action: + -- Stop vehicle at stop line. + -- Do not proceed. + -- Note that the right to proceed either right or left when + -- it is safe may be contained in the lane description to + -- handle what is called a 'right on red' + + -- Greens + pre-Movement (4), + -- Not used in the US, red+yellow partly in EU + -- Driver Action: + -- Stop vehicle. + -- Prepare to proceed (pending green) + -- (Prepare for transition to green/go) + permissive-Movement-Allowed (5), + -- Often called 'permissive green' in US + -- Driver Action: + -- Proceed with caution, + -- must yield to all conflicting traffic + -- Conflicting traffic may be present + -- in the intersection conflict area + protected-Movement-Allowed (6), + -- Often called 'protected green' in US + -- Driver Action: + -- Proceed, tossing caution to the wind, + -- in indicated (allowed) direction. + + -- Yellows / Ambers + -- The vehicle is not allowed to cross the stop bar if it is possible + -- to stop without danger. + permissive-clearance (7), + -- Often called 'permissive yellow' in US + -- Driver Action: + -- Prepare to stop. + -- Proceed if unable to stop, + -- Clear Intersection. + -- Conflicting traffic may be present + -- in the intersection conflict area + protected-clearance (8), + -- Often called 'protected yellow' in US + -- Driver Action: + -- Prepare to stop. + -- Proceed if unable to stop, + -- in indicated direction (to connected lane) + -- Clear Intersection. + + caution-Conflicting-Traffic (9) + -- Often called 'flashing yellow' in US + -- Often used for extended periods of time + -- Driver Action: + -- Proceed with caution, + -- Conflicting traffic may be present + -- in the intersection conflict area + } + -- The above number assignments are not used with UPER encoding + -- and are only to be used with DER or implicit encoding + +MsgCount ::= INTEGER (0..127) + +Offset-B10 ::= INTEGER (-512..511) + -- a range of +- 5.11 meters + +Offset-B11 ::= INTEGER (-1024..1023) + -- a range of +- 10.23 meters + +Offset-B12 ::= INTEGER (-2048..2047) + -- a range of +- 20.47 meters + +Offset-B13 ::= INTEGER (-4096..4095) + -- a range of +- 40.95 meters + +Offset-B14 ::= INTEGER (-8192..8191) + -- a range of +- 81.91 meters + +Offset-B16 ::= INTEGER (-32768..32767) + -- a range of +- 327.68 meters + +PedestrianBicycleDetect ::= BOOLEAN + -- true if ANY Pedestrians or Bicyclists are + -- detected crossing the target lane or lanes + +PrioritizationResponseStatus ::= ENUMERATED { + unknown (0), + -- Unknown state + requested (1), + -- This prioritization request was detected + -- by the traffic controller + processing (2), + -- Checking request + -- (request is in queue, other requests are prior) + watchOtherTraffic (3), + -- Cannot give full permission, + -- therefore watch for other traffic + -- Note that other requests may be present + granted (4), + -- Intervention was successful + -- and now prioritization is active + rejected (5), + -- The prioritization or preemption request was + -- rejected by the traffic controller + maxPresence (6), + -- The Request has exceeded maxPresence time + -- Used when the controller has determined that + -- the requester should then back off and + -- request an alternative. + reserviceLocked (7), + -- Prior conditions have resulted in a reservice + -- locked event: the controller requires the + -- passage of time before another similar request + -- will be accepted + ... +} + +PriorityRequestType ::= ENUMERATED { + priorityRequestTypeReserved (0), + priorityRequest (1), + priorityRequestUpdate (2), + priorityCancellation (3), + ... + } + +RegionId ::= INTEGER (0..255) + noRegion RegionId ::= 0 -- Use default supplied stubs + addGrpA RegionId ::= 1 -- USA + addGrpB RegionId ::= 2 -- Japan + addGrpC RegionId ::= 3 -- EU + -- NOTE: new registered regional IDs will be added here + -- The values 128 and above are for local region use + +RequestID ::= INTEGER (0..255) + +RequestImportanceLevel ::= ENUMERATED { + requestImportanceLevelUnKnown (0), + requestImportanceLevel1 (1), -- The least important request + requestImportanceLevel2 (2), -- The values here shall be assigned + requestImportanceLevel3 (3), -- Meanings based on regional needs + requestImportanceLevel4 (4), -- for each of the basic roles which + requestImportanceLevel5 (5), -- are defined elsewhere + requestImportanceLevel6 (6), + requestImportanceLevel7 (7), + requestImportanceLevel8 (8), + requestImportanceLevel9 (9), + requestImportanceLevel10 (10), + requestImportanceLevel11 (11), + requestImportanceLevel12 (12), + requestImportanceLevel13 (13), + requestImportanceLevel14 (14), -- The most important request + requestImportanceReserved (15) -- Reserved for future use + } + +RequestSubRole ::= ENUMERATED { + requestSubRoleUnKnown (0), + requestSubRole1 (1), -- The first type of sub role + requestSubRole2 (2), -- The values here shall be assigned + requestSubRole3 (3), -- Meanings based on regional needs + requestSubRole4 (4), -- to refine and expand the basic + requestSubRole5 (5), -- roles which are defined elsewhere + requestSubRole6 (6), + requestSubRole7 (7), + requestSubRole8 (8), + requestSubRole9 (9), + requestSubRole10 (10), + requestSubRole11 (11), + requestSubRole12 (12), + requestSubRole13 (13), + requestSubRole14 (14), -- The last type of sub role + requestSubRoleReserved (15) -- Reserved for future use + } + +RestrictionAppliesTo ::= ENUMERATED { + none, -- applies to nothing + equippedTransit, -- buses etc. + equippedTaxis, + equippedOther, -- other vehicle types with + -- necessary signal phase state + -- reception equipment + emissionCompliant, -- regional variants with more + -- definitive items also exist + equippedBicycle, + weightCompliant, + heightCompliant, + -- Items dealing with traveler needs serviced by the infrastructure + -- These end users (which are not vehicles) are presumed to be suitably equipped + pedestrians, + slowMovingPersons, + wheelchairUsers, + visualDisabilities, + audioDisabilities, -- hearing + otherUnknownDisabilities, + ... + } + +RestrictionClassID ::= INTEGER (0..255) + -- An index value to identify data about classes of users + -- the value used varies with each intersection's + -- needs and is defined in the map to the assigned + -- classes of supported users. + +RoadRegulatorID ::= INTEGER (0..65535) + -- The value zero shall be used for testing only + +RoadSegmentID ::= INTEGER (0..65535) + -- The values zero to 255 shall be used for testing only + -- Note that the value assigned to an RoadSegment will be + -- unique within a given regional ID only during its use + +RoadwayCrownAngle ::= INTEGER (-128..127) + -- In LSB units of 0.3 degrees of angle + -- over a range of -38.1 to + 38.1 degrees + -- The value -128 shall be used for unknown + -- The value zero shall be used for angles + -- which are between -0.15 and +0.15 + +Scale-B12 ::= INTEGER (-2048..2047) -- in steps of 0.05 percent + +SignalGroupID ::= INTEGER (0..255) + -- The value 0 shall be used when the ID is + -- not available or not known + -- the value 255 is reserved to indicate a + -- permanent green movement state + -- therefore a simple 8 phase signal controller + -- device might use 1..9 as its groupIDs + +SegmentAttributeXY ::= ENUMERATED { + -- Various values which can be Enabled and Disabled for a lane segment + + -- General Items + reserved , + doNotBlock , -- segment where a vehicle + -- may not come to a stop + whiteLine , -- segment where lane crossing not allowed + -- such as the final few meters of a lane + + -- Porous Lane states, merging, turn outs, parking etc. + + mergingLaneLeft , -- indicates porous lanes + mergingLaneRight , + + curbOnLeft , -- indicates presence of curbs + curbOnRight , + + loadingzoneOnLeft , -- loading or drop off zones + loadingzoneOnRight , + + turnOutPointOnLeft , -- opening to adjacent street/alley/road + turnOutPointOnRight , + + adjacentParkingOnLeft , -- side of road parking + adjacentParkingOnRight , + + -- Bike Lane Needs + adjacentBikeLaneOnLeft , -- presence of marked bike lanes + adjacentBikeLaneOnRight , + sharedBikeLane , -- right of way is shared with bikes + -- who may occupy entire lane width + bikeBoxInFront , + + -- Transit Needs + transitStopOnLeft , -- any form of bus/transit loading + -- with pull in-out access to lane on left + transitStopOnRight , -- any form of bus/transit loading + -- with pull in-out access to lane on right + transitStopInLane , -- any form of bus/transit loading + -- in mid path of the lane + sharedWithTrackedVehicle , -- lane is shared with train or trolley + -- not used for crossing tracks + + + -- Pedestrian Support Attributes + safeIsland , -- begin/end a safety island in path + lowCurbsPresent , -- for ADA support + rumbleStripPresent , -- for ADA support + audibleSignalingPresent , -- for ADA support + adaptiveTimingPresent , -- for ADA support + rfSignalRequestPresent , -- Supports RF push to walk technologies + partialCurbIntrusion , -- path is blocked by a median or curb + -- but at least 1 meter remains open for use + -- and at-grade passage + + -- Lane geometry details (see standard for defined shapes) + taperToLeft , -- Used to control final path shape + taperToRight , -- Used to control final path shape + taperToCenterLine , -- Used to control final path shape + + -- Parking Lane and Curb Attributes + parallelParking , -- + headInParking , -- Parking at an angle with the street + freeParking , -- no restriction on use of parking + timeRestrictionsOnParking , -- Parking is not permitted at all times + -- typically used when the 'parking' lane + -- becomes a driving lane at times + costToPark , -- Used where parking has a cost + midBlockCurbPresent , -- a protruding curb near lane edge + unEvenPavementPresent , -- a disjoint height at lane edge + ... + } + +SpeedAdvice ::= INTEGER (0..500) + -- LSB units are 0.1 m/s^2 + -- the value 499 shall be used for values at or greater than 49.9 m/s + -- the value 500 shall be used to indicate that speed is unavailable + + +TemporaryID ::= OCTET STRING (SIZE(4)) + +TimeIntervalConfidence ::= INTEGER (0..15) + -- Value Probability + -- 0 21% + -- 1 36% + -- 2 47% + -- 3 56% + -- 4 62% + -- 5 68% + -- 6 73% + -- 7 77% + -- 8 81% + -- 9 85% + -- 10 88% + -- 11 91% + -- 12 94% + -- 13 96% + -- 14 98% + -- 15 100% + +TransitVehicleOccupancy ::= ENUMERATED { + occupancyUnknown (0), + occupancyEmpty (1), + occupancyVeryLow (2), + occupancyLow (3), + occupancyMed (4), + occupancyHigh (5), + occupancyNearlyFull (6), + occupancyFull (7) + } + +TransitVehicleStatus ::= BIT STRING { + loading (0), -- parking and unable to move at this time + anADAuse (1), -- an ADA access is in progress (wheelchairs, kneeling, etc.) + aBikeLoad (2), -- loading of a bicycle is in progress + doorOpen (3), -- a vehicle door is open for passenger access + charging (4), -- a vehicle is connected to charging point + atStopLine (5) -- a vehicle is at the stop line for the lane it is in + } (SIZE(8)) + +TransmissionState ::= ENUMERATED { + neutral (0), -- Neutral + park (1), -- Park + forwardGears (2), -- Forward gears + reverseGears (3), -- Reverse gears + reserved1 (4), + reserved2 (5), + reserved3 (6), + unavailable (7) -- not-equipped or unavailable value, + -- Any related speed is relative to the vehicle reference frame used + } + +VehicleType ::= ENUMERATED { + none (0), -- Not Equipped, Not known or unavailable + unknown (1), -- Does not fit any other category + special (2), -- Special use + moto (3), -- Motorcycle + car (4), -- Passenger car + carOther (5), -- Four tire single units + bus (6), -- Buses + axleCnt2 (7), -- Two axle, six tire single units + axleCnt3 (8), -- Three axle, single units + axleCnt4 (9), -- Four or more axle, single unit + axleCnt4Trailer (10), -- Four or less axle, single trailer + axleCnt5Trailer (11), -- Five or less axle, single trailer + axleCnt6Trailer (12), -- Six or more axle, single trailer + axleCnt5MultiTrailer (13), -- Five or less axle, multi-trailer + axleCnt6MultiTrailer (14), -- Six axle, multi-trailer + axleCnt7MultiTrailer (15), -- Seven or more axle, multi-trailer + ... + } + +Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s + -- The value 8191 indicates that + -- velocity is unavailable + +WaitOnStopline ::= BOOLEAN -- + -- True or False + -- If "true", the vehicles on this specific connecting + -- maneuver have to stop on the stop-line + -- and not to enter the collision area + +ZoneLength ::= INTEGER (0..10000) + -- Unit = 1 meter, 0 = unknown, + -- The value 10000 to be used for Distances >=10000 m + -- (e.g. from known point to another point along a + -- known path, often against traffic flow direction + -- when used for measuring queues) + +END + diff --git a/asn1/IS/ISO_TS_19091/original/REGION.asn b/asn1/IS/ISO_TS_19091/original/REGION.asn new file mode 100755 index 0000000..9a5385d --- /dev/null +++ b/asn1/IS/ISO_TS_19091/original/REGION.asn @@ -0,0 +1,111 @@ +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-- ISO TS 19091 +-- +-- This ASN.1 was generated: 30.08.2016 +-- +-- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message +-- as defined in ISO TS 19091 and SAEJ2735 +-- +-- It includes the addendunm extensions for Addgrp-C (e.g. Europe) +-- +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +-- +-- module: REGION +-- +-- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- +REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1) } + +DEFINITIONS AUTOMATIC TAGS::= BEGIN + +IMPORTS +addGrpC, REG-EXT-ID-AND-TYPE FROM DSRC +ConnectionManeuverAssist-addGrpC, ConnectionTrajectory-addGrpC, IntersectionState-addGrpC, Control-addGrpC, Position3D-addGrpC, RestrictionUserType-addGrpC, +SignalStatusPackage-addGrpC, MapData-addGrpC FROM AddGrpC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1)}; + +Reg-AdvisorySpeed REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-ComputedLane REG-EXT-ID-AND-TYPE ::= { ... } + +Reg-ConnectionManeuverAssist REG-EXT-ID-AND-TYPE ::= { + {ConnectionManeuverAssist-ad